LNMP架构(技术组合)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值