LNMP架构
LNMP架构简述
LNMP 是一套技术的组合,L=Linux、 N=Nginx、 M ~=Mysql、P ~=PHP
LNMP工作流程
1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx
2.Nginx会根据用户的请求进行Location规则匹配
3.Location如果匹配到请求是静态,则由Nginx读取本地直接返回
4.Location如果匹配到请求是动态,则由Nginx将请求转发给fastcgi协议
5.fastgi收到后会将请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作进程warrap
6.warrap进程会调用php程序进行解析,如果只是解析代码,php直接返回
7.如果有查询数据库操作,则由php连接数据库(用户 密码 IP)发起查询的操作
8.最终数据由mysql->php->php-fpm->fastcgi->nginx->http->user
安装LNMP架构环境
安装Nginx
在官网下载
Nginx官网下载
安装PHP
解决yum安装软件冲突问题
yum remove php-mysql php php-fpm php-common
准备yum安装软件扩展源信息
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
利用yum安装PHP相关软件信息
yum install -y 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
Nginx与PHP集成的原理
[root@web01 ~]# cat /etc/nginx/conf.d/php.lxx.com.conf
server {
listen 80;
server_name php.lxx.com;
root /code;
location / {
index index.php info.php;
}
location ~ \.php$ {
#将php请求交给本地9000端口处理,9000是php-fpm的默认端口
fastcgi_pass 127.0.0.1:9000;
#告诉php-fpm解析本地的哪个路径下的哪个文件
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#包含一些其他的相关信息的变量
include fastcgi_params;
}
}
PS: 如果要将wordpress的http方式改造为https方式,可能会造成页面加载不成功或着无法登陆。
#web节点增加此参数
location ~ \.php$ {
...
fastcgi_param HTTPS on;
...
统一nginx php 的用户身份
拆分数据库
web服务器和mysql服务器在一台服务器
1 准备一台172.16.1.51数据库, 安装mariadb-server
备份172.16.1.7 数据库 -->推送至 172.16.1.51
mysqldump -uroot -p'lxx.com' --all-databases > mysql-all.sql
2 172.16.1.51 恢复数据库, 创建远程连接的用户
1.推送
[root@web01 ~]# scp mysql-all.sql root@172.16.1.51:~
2.登录51服务器恢复数据
[root@db01 ~]# mysql -uroot < mysql-all.sql
[root@db01 ~]# mysql
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress |
+--------------------+
6 rows in set (0.00 sec)
3.重启一下数据库
[root@db01 ~]# systemctl restart mariadb
[root@db01 ~]# mysql -uroot -plxx.com #重启后密码会变更
4.创建远程连接用户
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'lxx.com';
5.远程连接测试 登录172.16.1.7
[root@web01 ~]# mysql -h172.16.1.51 -uall -plxx.com
Welcome to the MariaDB monitor. Commands end with ; or \g.
MariaDB [(none)]>
3 应用割接 wordpress—>连接本地数据库 修改为 连接 远程数据库
1.停止本地数据库
[root@web01 ~]# systemctl stop mariadb
[root@web01 ~]# systemctl disable mariadb
2.修改wordpress连接数据库的信息
[root@web01 wordpress]# vim /code/wordpress/wp-config.php
/** WordPress数据库的名称 */
define( 'DB_NAME', 'wordpress' );
/** MySQL数据库用户名 */
define( 'DB_USER', 'all' );
/** MySQL数据库密码 */
define( 'DB_PASSWORD', 'oldxu.com' );
/** MySQL主机 */
define( 'DB_HOST', '172.16.1.51' );
远程登陆连接Mysql服务器
web服务器和mysql服务器分别是独立的服务器
1 mysql服务器安装:yum install mariadb-server -y
mysqladmin password 'lxx.com'
mysql -uroot -poldxu.com
MariaDB [(none)]> quit
MariaDB [(none)]> create database wordpress; #1.创建一个wordpress名称的库
MariaDB [(none)]> show databases; #2.查看数据中所有的库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [(none)]> use wordpress; #3.进入wordpress库
Database changed
MariaDB [wordpress]> show tables; #4.查看wordpress库中有多少表
Empty set (0.00 sec) <--空
创建远程连接用户
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'lxx.com';
flush provideges; #5加载生效 或者 systemctl restart mariadb重启一下数据库
2 web服务器配置
vim /code/wordpress/wp-config.php
/** WordPress数据库的名称 */
define( 'DB_NAME', 'wordpress' );
/** MySQL数据库用户名 */
define( 'DB_USER', 'all' );
/** MySQL数据库密码 */
define( 'DB_PASSWORD', 'lxx.com' );
/** MySQL主机 */
define( 'DB_HOST', '172.16.1.51' );
扩展应用节点 、扩展web节点、 多个web组织在一起—>web集群对
1 对web02进行初始化操作
[root@web02 ~]# scp 172.16.1.7:/etc/yum.repos.d/* /etc/yum.repos.d/
2 在要扩展的节点上安装对应的环境: nginx+php
3 将web01上的Nginx php-fpm php.ini配置 以及 代码 拷贝至web02
1.nginx.conf nginx virtualHost
[root@web02 ~]# rsync -avz --delete 172.16.1.7:/etc/nginx/ /etc/nginx/
2.php-fpm.d/www.conf php.ini
[root@web02 ~]# rsync -avz 172.16.1.7:/etc/php.ini /etc/php.ini
[root@web02 ~]# rsync -avz 172.16.1.7:/etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf
3.代码目录 /code
[root@web02 ~]# rsync -avz --delete 172.16.1.7:/code /
[root@web02 ~]# ll /code/
drwxr-xr-x 5 www www 4096 12月 6 12:41 wordpress