【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(一)

简介: 【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)

本篇文章介绍LNMP架构部署项目,包括Nginx安装配置、PHP安装配置、数据库Mariadb安装配置、Nginx连通PHP、PHP连通MySQL、拆分数据库至独立服务器、拆分静态资源至服务器、扩展一个web服务器。


LNMP架构

Linux Nginx Mysql PHP

Nginx不能处理动态请求,如果是动态请求,就通过fastcgi协议转交给后端的PHP程序处理

 

Nginx安装配置

第一步:安装nginx

配置官网yum仓库

1. vim /etc/yum.repos.d/nginx.repo
2. 
3. [nginx-stable]
4. name=nginx stable repo
5. baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
6. gpgcheck=1
7. enabled=1
8. gpgkey=https://nginx.org/keys/nginx_signing.key
9. module_hotfixes=true

第二步:创建虚拟用户

1. [root@Web01 ~]# groupadd -g 666 www
2. [root@Web01 ~]# useradd -u666 -g666 -M -s /sbin/nologin www

第三步:配置Nginx启动用户为www

1. [root@Web01 ~]# vim /etc/nginx/nginx.conf 
2. 
3. user  www;
4. worker_processes  auto;

第四步:启动Nginx加入开机自启动

1. [root@Web01 ~]# systemctl start nginx
2. [root@Web01 ~]# systemctl enable nginx
3. Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

PHP安装配置

第一步:配置PHP软件仓库并安装PHP

1. #配置PHP仓库
2. [root@Web01 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
3. [root@Web01 ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
4. 
5. [root@Web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common
6. 
7. #配置第三方源
8. [root@Web01 ~]# vim /etc/yum.repos.d/php.repo
9. [php-webtatic]
10. name = PHP Repository
11. baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
12. gpgcheck = 0
13. 
14. #安装PHP
15. [root@Web01 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb --nogpgcheck

或者是使用rpm包,上传后解压。

yum -y localinstall *.rpm

第二步:修改PHP启动用户为www

1. [root@Web01 ~]#  sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
2. [root@Web01 ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

第三步:启动服务并设置开机自启

1. [root@Web01 ~]# systemctl start php-fpm
2. [root@Web01 ~]# systemctl enable php-fpm
3. Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

第四步:查看状态

1. [root@Web01 ~]# netstat -tnulp
2. Active Internet connections (only servers)
3. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
4. tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1272/sshd           
5. tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1413/master         
6. tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      4133/php-fpm: maste 
7. tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3989/nginx: master  
8. tcp6       0      0 :::22                   :::*                    LISTEN      1272/sshd           
9. tcp6       0      0 ::1:25                  :::*                    LISTEN      1413/master         
10. udp        0      0 127.0.0.1:323           0.0.0.0:*                           840/chronyd         
11. udp6       0      0 ::1:323                 :::*                                840/chronyd

安装数据库mariadb-server

第一步:安装数据库

[root@Web01 ~]# yum install mariadb-server -y

第二步:启动数据库、设置开机自启动、查看状态

1. [root@Web01 ~]# systemctl start mariadb
2. [root@Web01 ~]# systemctl enable mariadb
3. Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
4. [root@Web01 ~]# netstat -tnulp
5. Active Internet connections (only servers)
6. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
7. tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1272/sshd           
8. tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1413/master         
9. tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      4133/php-fpm: maste 
10. tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4480/mysqld         
11. tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3989/nginx: master  
12. tcp6       0      0 :::22                   :::*                    LISTEN      1272/sshd           
13. tcp6       0      0 ::1:25                  :::*                    LISTEN      1413/master         
14. udp        0      0 127.0.0.1:323           0.0.0.0:*                           840/chronyd         
15. udp6       0      0 ::1:323                 :::*                                840/chronyd

第三步:配置用户密码,默认是root

1. [root@Web01 ~]# mysqladmin password '666666' #设置密码为666666
2. [root@Web01 ~]# mysql -uroot -p666666 #登录数据库
3. Welcome to the MariaDB monitor.  Commands end with ; or \g.
4. Your MariaDB connection id is 3
5. Server version: 5.5.68-MariaDB MariaDB Server
6. 
7. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
8. 
9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
10. 
11. MariaDB [(none)]> show databases; #查看有哪些库
12. +--------------------+
13. | Database           |
14. +--------------------+
15. | information_schema |
16. | mysql              |
17. | performance_schema |
18. | test               |
19. +--------------------+
20. 4 rows in set (0.00 sec)
21. 
22. MariaDB [(none)]> create database hehe; #创建hehe库
23. Query OK, 1 row affected (0.00 sec)
24. 
25. MariaDB [(none)]> drop database hehe; #删除hehe库
26. Query OK, 0 rows affected (0.01 sec)
27. 
28. MariaDB [(none)]> quit #退出数据库
29. Bye
30. [root@Web01 ~]#

注意:配置数据库密码需要服务启动后才能配置

 

Nginx连通PHP

1. [root@Web01 /]# cat /etc/nginx/conf.d/default.conf 
2. server {
3.         listen 80;
4.         server_name php.koten.com;
5. 
6.         location / {
7.                 root /code;
8.                 index index.php index.html;
9.         }
10. 
11.         location ~ \.php$ {
12.                 root /code;
13.                 fastcgi_pass 127.0.0.1:9000;
14.                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
15.           include fastcgi_params;
16. }
17. }
18. [root@Web01 /]# systemctl restart nginx
19. [root@Web01 /]# vim /code/index.php 
20. <?php
21.         phpinfo();
22. ?>

windows本地hosts解析后,即可访问PHP有关信息

PHP连通MySQL

1. [root@Web01 /]# vim /code/mysql.php
2. <?php
3. $servername = "localhost";
4. $username = "root";
5. $password = "123";
6. 
7.     // 创建连接
8. $conn = mysqli_connect($servername, $username, $password);
9. 
10.     // 检测连接
11. if (!$conn) {
12.         die("Connection failed: " . mysqli_connect_error());
13.     }
14. echo "php可以连接MySQL...";
15. ?>

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
144 3
|
22天前
|
安全 关系型数据库 PHP
探索PHP:构建现代Web应用的基石
【8月更文挑战第29天】本文将带领读者深入理解PHP的核心概念,从基础语法到面向对象编程,再到数据库操作和安全性实践。我们将通过实例探讨如何利用PHP的灵活性和强大功能,来构建可靠、高效且安全的Web应用程序。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一起探索PHP的世界,释放它的潜力,打造下一代Web应用!
|
28天前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
65 0
|
12天前
|
安全 PHP 开发者
PHP 7新特性及其对现代Web开发的影响
随着互联网技术的不断演进,PHP语言也在不断地更新迭代。PHP 7作为一次重大的升级,带来了许多引人注目的新特性,这些特性不仅优化了代码执行效率,还为开发人员提供了更多的便利和可能性。本文将探讨PHP 7的主要新特性,以及这些特性如何影响现代Web开发,帮助开发者更好地利用这些新工具来构建更快、更可靠的Web应用。
|
20天前
|
存储 关系型数据库 MySQL
PHP编程基础:构建你的第一个Web应用
【8月更文挑战第31天】 在数字时代的海洋里,每个人都可以成为自己命运的船长。本文将引领初学者启航,用PHP语言搭建起第一个属于自己的网站。我们将从浅入深,逐步探索PHP的世界,最终实现一个简单的个人博客系统。这不仅是一段代码的旅程,更是一次思维和技术的飞跃。
|
22天前
|
安全 前端开发 PHP
PHP与现代Web开发:构建高效和可扩展的应用程序
【8月更文挑战第29天】在这篇文章中,我们将深入探讨PHP如何适应现代Web开发的需求。我们将通过实际案例分析,揭示PHP的核心优势,并展示如何利用这些优势来构建高性能、可扩展的Web应用。文章不仅提供理论知识,还包括具体的代码示例,旨在帮助开发者更好地理解和运用PHP解决实际问题。
|
20天前
|
缓存 监控 PHP
深入PHP:构建高效Web应用的实用技巧
【8月更文挑战第31天】 本文旨在揭示如何通过实用的编程技巧提升PHP Web应用的性能和效率。我们将从基础优化谈起,逐步深入到高级策略,包括代码重构、数据库交互优化以及安全性增强。文章以简洁明了的语言和实际编码示例,带领读者理解并运用这些策略,从而在开发过程中做出更明智的决策。无论你是PHP新手还是资深开发者,这篇文章都能为你的项目带来实质性的提升。
|
20天前
|
缓存 中间件 PHP
Laravel 框架:优雅 PHP Web 开发的典范
【8月更文挑战第31天】
38 0
|
20天前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
29 0
|
20天前
|
存储 SQL 关系型数据库
掌握PHP:构建你的第一个Web应用
【8月更文挑战第31天】在数字时代的浪潮中,掌握编程技能就像是拥有了一把打开未来之门的钥匙。本文将通过深入浅出的方式引导你了解PHP编程语言,并带你一步步构建起自己的第一个Web应用程序。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供宝贵的知识和实战经验。