Nginx(3)

LNMP

什么是LNMP

Lnmp是一套技术的组合,包含linux、nginx、mysql/mariaDB、PHP/Python

LNMP是怎么工作的?

nginx服务是不能处理动态请求的,当用户发起http请求时,默认请求会被nginx处理,如果是静态资源,nginx可以直接返回结果,如果是动态请求,则通过fastcgi协议转交给后端的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. 最终数据由mysq/->php->php-fpm->fastcgi->nginx->http->user

安装LNMP架构环境

nginx集成php

1.启动php-fpm

#解决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


2.配置nginx

[root@web01 php]# cat /etc/nginx/conf.d/php.oldxu.com.conf
server {
listen 80;
server_name php.oldxu.com;
root /code;

# 当用户请求php.oldxu.com --> php.oldxu.com/index.php
location / {
	index index.php;
}

# 将请求转给php-fpm程序,同时携带我们需要被解析的文件路径 SCRIPT_FILENAME = /code/index.php
location ~ \.php$ {
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
}

}


3.编写php代码
[root@web01 php]# rm -rf /code && mkdir /code
[root@web01 php]# cat /code/index.php

<?php
	phpinfo();
?>

测试

php集成mysql(测试php是否 能正常连接我们的mysql)

1.mariadb要启动
[root@web01 php]# systemctl start mariadb
[root@web01 php]# systemctl enable mariadb
2.mysql要配置对应的用户和密码

	#给mysql的root用户设定的密码
[root@web01 php]# mysqladmin password oldxu.com

	#验证 密码
[root@web01 php]# mysql -uroot -poldxu.com

3.编写php连接 mysql的 代码,访问测试

[root@web01 php]# cat /code/mysql.php

<?php //设定变量 $servername = "localhost"; $username = "root"; $password = "oldxu.com"; // 创 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "php连接MySQL数据库成功"; ?>

LNMP架构部署(wordpress)

php默认允许2M的文件上传,nginx默认允许1M的文件上传。
部署过程:

1.准备wordpress的代码?放到某个指定的位置
[root@web01 ~]# rm -rf /code
[root@web01 ~]# mkdir /code
[root@web01 ~]# tar xf wordpress-5.2.3-zh_CN.tar.gz  -C /co

[root@web01 ~]# ll /code/
drwxr-xr-x 5 oldman oldman 4096 9月   5 2019 wordpress


2.修改权限:
	1.将 nginx php 的用户 身份 统一修改 为  www?

	[root@web01 ~]# groupadd -g 666  www
	[root@web01 ~]# useradd -u666 -g666 www

	修改nginx运行身份
	[root@web01 ~]# sed -i  '/^user/c user www;'  /etc/nginx/nginx.conf

	修改php-fpm的运行身份
	[root@web01 ~]# sed -i '/^user/c user = www'   /etc/php-fpm.d/www.conf
	[root@web01 ~]# sed -i '/^group/c group = www'   /etc/php-fpm.d/www.conf

	重启nginx和php
	[root@web01 ~]# systemctl restart nginx php-fpm


	2.授权代码的权限为www
	[root@web01 ~]# chown -R www.www /code/wordpress/

3.配置下mariadb,创建一个库
[root@web01 ~]# mysql -uroot -poldxu.com
MariaDB [(none)]>
MariaDB [(none)]> create database wordpress;		#创建一个 wordpress的 库
MariaDB [(none)]> show databases;			#查看所有的库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpress          |					<----
+--------------------+
5 rows in set (0.00 sec)

4.配置nginx,添加一个wordpress的网站

[root@web01 ~]# cat /etc/nginx/conf.d/blog.oldxu.com.conf
server  {
	listen 80;
	server_name blog.oldxu.com;
	root /code/wordpress;
	client_max_body_size 100m;

	location / {
		index index.php;
	}

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}


[root@web01 ~]# nginx -t
[root@web01 ~]# systemctl restart nginx

5.使用 浏览器访问,有问题解决问题。

	hosts劫持

LNMP架构部署(wecenter)

1.准备WeCenter的代码?放到某个指定的位置
[root@web01 ~]# rm -rf /code
[root@web01 ~]# mkdir /code
[root@web01 ~]# unzip WeCenter-3.5.0.zip  -C /code/zh

[root@web01 ~]# ll /code/
drwxr-xr-x 5 oldman oldman 4096 9月   5 2019 WeCenter


2.修改权限:
	1.将 nginx php 的用户 身份 统一修改 为  www?

	[root@web01 ~]# groupadd -g 666  www
	[root@web01 ~]# useradd -u666 -g666 www

	修改nginx运行身份
	[root@web01 ~]# sed -i  '/^user/c user www;'  /etc/nginx/nginx.conf

	修改php-fpm的运行身份
	[root@web01 ~]# sed -i '/^user/c user = www'   /etc/php-fpm.d/www.conf
	[root@web01 ~]# sed -i '/^group/c group = www'   /etc/php-fpm.d/www.conf

	重启nginx和php
	[root@web01 ~]# systemctl restart nginx php-fpm


	2.授权代码的权限为www
	[root@web01 ~]# chown -R www.www /code/zh/

3.配置下mariadb,创建一个库
[root@web01 ~]# mysql -uroot -poldxu.com
MariaDB [(none)]>
MariaDB [(none)]> create database zh;		#创建一个 wordpress的 库
MariaDB [(none)]> show databases;			#查看所有的库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpress          |					<----
+--------------------+
5 rows in set (0.00 sec)

4.配置nginx,添加一个Wecenter的网站

[root@web01 ~]# cat /etc/nginx/conf.d/blog.oldxu.com.conf
server  {
	listen 80;
	server_name zh.wenjie.com;
	root /code/zh;
	client_max_body_size 100m;

	location / {
		index index.php;
	}

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}


[root@web01 ~]# nginx -t
[root@web01 ~]# systemctl restart nginx

5.使用 浏览器访问,有问题解决问题。

	hosts劫持

分离数据库到另一台独立的服务器

1.备份10.0.0.7 上的数据库,然后将备份的数据,推送到 10.0.0.51

1) 备份数据库
[root@web01 ~]# mysqldump -uroot -poldxu.com -A  > /opt/data.sql


2)推送到10.0.0.51上
[root@web01 ~]# scp /opt/data.sql root@10.0.0.51:~

2.在10.0.0.51 上恢复 10.0.0.7 推送过来的数据

1) 安装相同版本的mysql数据库
[root@db01 ~]# yum install mariadb mariadb-server -y

2) 启动mysql数据库
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb

3)执行恢复命令	#输入重定向
[root@db01 ~]# mysql < ~/data.sql
[root@db01 ~]# systemctl restart mariadb	#所有的配置生效了
[root@db01 ~]# mysql -uroot -poldxu.com		#测试是否能正常登录

3.在10.0.0.51上,创建一个允许远程连接数据库的用户 ( root仅允许本地连接 )

1)登陆mysql
[root@db01 ~]# mysql -uroot -poldxu.com

2)创建远程能连接的用户,以及密码。并进行授权
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'oldxu.com';


3)验证远程用户是否可用(10.0.0.7,测试一下)	如果 通过远程方式没有问题,说明配置ok
[root@web01 ~]# mysql -h 172.16.1.51 -uall -poldxu.com
MariaDB [(none)]>

4.关闭10.0.0.7 上的 mysql服务器 ( 网站就打不来 )
[root@web01 ~]# systemctl stop mariadb
[root@web01 ~]# systemctl disable mariadb

5.将10.0.0.7上应用程序连接的数据库地址指向 172.16.1.51 ( 应用割接 )

wordpress如何配置:

[root@web01 ~]# 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’ );

wecenter如何配置:

[root@web01 ~]# find /code/zh/ -type f | xargs grep -R “oldxu.com” #过滤代码中 包含oldxu.com的密码文件
[root@web01 ~]# cat /code/zh/system/config/database.php

<?php $config['charset'] = 'utf8mb4'; $config['prefix'] = 'aws_'; $config['driver'] = 'MySQLi'; $config['master'] = array ( 'charset' => 'utf8mb4', 'host' => '172.16.1.51', 'username' => 'all', 'password' => 'oldxu.com', 'dbname' => 'zh', ); $config['slave'] = false;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值