LNMP架构学习

LNMP 就是 Linux+Nginx+MySQL+PHP , Linux 作为服务器的操作系统, Nginx 作为 Web 服务器、 PHP 作为解析动态脚本语言、 MySQL 即为数据库

Linux作为服务器的操作系统。

Nginx作为WebServer服务器。

PHP 作为动态解析服务(php)。

MySQL作为后端存储数据库服务

Nginx怎么和PHP连接

Nginx服务本身是无法进行处理PHP请求的,当用户发起了PHP动态请求,是用户--》http协议--》Nginx--》fastcgi协议---》php-fpm

注意:fatcgi是连接Nginx和PHP-fpm

Nginx与Fast-CGI工作流程

1.浏览器输入域名,浏览器会拿着域名取DNS服务器解析

2.DNS服务器会将域名解析成IP

3.浏览器会去与IP对应服务器建立TCP\IP连接

4.连接建立完成,会向服务器发起请求,请求nginx

5.nginx会判断请求是动态的还是静态的

#静态请求

location .jpg$ {

root /code;

}

#动态php请求

location .php$ {

fastcgi_pass 127.0.0.1:9000;

...

}

#动态jsp请求

location .jsp$ {

proxy_pass 127.0.0.1:8080;

...

}

6.如果是静态请求,nginx去code目录获取,直接返回

7.如果是动态请求,nginx会通过fastcgi协议连接PHP服务的php-fpm管理进程

8.php-fpm管理进程会下发工作给 wrapper工作进程

9.wrapper工作进程判断是不是简单的php内容

10.如果只是php内容则使用php解析器解析后直接返回

11.如果还需要读取数据库,wrapper工作进程会去数据库读取数据,再返回数据

12.数据流转过程:

1)请求:浏览器 > 负载均衡 > nginx > php-fpm > wrapper > mysql

2)响应:mysql > wrapper > php-fpm > nginx > 负载均衡 > 浏览器

LNMP用户访问资源流程

PHP怎么进行代理配置

PHP和Nginx之间是无法直接进行连接的,需要使用fastcgi进行连接

1)设置fastcgi服务器的地址,该地址可以指定为域名或IP地址,以及端口

bash 复制代码
Syntax: fastcgi_pass address;
Default: ---
Context: location, if in location

#语法示例
fastcgi_pass localhost:9000;
fastcgi_pass unix:/tmp/fastcgi.socket;

2)设置fastcgi默认的首页文件,需要结合fastcgi_param一起设置

bash 复制代码
Syntax: fastcgi_index name;
Default: ---
Context: http, server, location

3)通过fastcgi_param设置变量,并将设置的变量传递到后端的fastcgi服务器

bash 复制代码
Syntax: fastcgi_param parameter value [if_not_empty];
Default: ---
Context: http, server, location

#语法示例
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name;

4)通过图形方式展示 fastcgi_index 与 fastcgi_param 作用

5)Nginx连接Fastcgi服务器配置参考

bash 复制代码
server {
 server_name www.tf.com;
 listen 80;
 root /code/www;
 index index.php index.html;
 
 location ~ \.php$ {
 root /code/www;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME 
$document_root$fastcgi_script_name;
 include fastcgi_params;
 }
}

LNMP架构部署在一台主机上,怎么将数据迁移走

1、数据库拆分

单台服务器运行LNMP架构会导致网站访问缓慢,当内存被占满时,很容易导致系统出现oom,自动关闭(kill)MySQL数据库,所以要将web和数据库进行独立部署。

1.缓解web网站的压力

2.增强数据库读写性能

3.提高用户访问速度

1.2、拆分数据库的步骤
bash 复制代码
老服务器操作
指定导出对应的数据库文件。(Jy123.com是数据库密码)
[root@web01 ~]# mysqldump -uroot -pTf123.com -A > $(date +%F)-mysql-all.sql
拷贝备份数据库文件至新的数据库服务器上
[root@web01 ~]# scp 2018-08-09-mysql-all.sql root@10.0.0.51:~

新服务器操作
导入数据库
mysql -uroot -pTf123.com < 2018-08-09-mysql-all.sql
登入数据库
mysql -uroot -pJy123.com
检查数据库是否所有的库都被成功导入
show databases;

在新数据库上授权, 允许所有网段, 通过webadm账户连接数据库
#授权所有权限 grant all privileges
#授权所有库所有表 *.* 
#将授权赋予给哪个用户,这个用户只能通过哪个网段过来(%所有) 'webadm'@'%'
#授权该用户登录的密码 identified by
mysql> grant all on *.* to webadm@'%' identified by 'Tf123.com';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
停止web本地数据库
[root@web01 ~]# systemctl stop mysqld
[root@web01 ~]# systemctl disable mysqld


修改Wordpress产品代码连接数据库的配置文件
vim /code/wordpress/wp-config.php
# 数据库名称
define('DB_NAME', 'wordpress');
# 数据库用户
define('DB_USER', 'webadm');
# 数据库密码
define('DB_PASSWORD', 'Jy123.com');
# 数据库地址
define('DB_HOST', '10.0.0.51');
2、迁移图片至独立服务器 NFS

.nfs-server服务端操作

bash 复制代码
配置nfs共享的目录
[root@nfs ~]# cat /etc/exports
/data/blog 10.0.0.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/edu 10.0.0.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh 10.0.0.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

创建对应共享的目录
[root@nfs ~]# mkdir /data/{blog,edu,zh} -p
[root@nfs ~]# chown -R www.www /data/
[root@nfs ~]# systemctl restart nfs-server

本地挂载
相关推荐
●VON几秒前
HarmonyOS应用开发实战(基础篇)Day01-《ArkTS基本知识》
学习·华为·harmonyos·鸿蒙·von
有位神秘人4 分钟前
Android获取设备中本地音频
android·音视频
JMchen1237 分钟前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
CS创新实验室9 分钟前
Pandas 3 的新功能
android·ide·pandas
玄同76513 分钟前
Python Random 模块深度解析:从基础 API 到 AI / 大模型工程化实践
人工智能·笔记·python·学习·算法·语言模型·llm
符哥200817 分钟前
C++ 适合初学者的学习笔记整理
c++·笔记·学习
ujainu19 分钟前
护眼又美观:Flutter + OpenHarmony 鸿蒙记事本一键切换夜间模式(四)
android·flutter·harmonyos
曦月逸霜24 分钟前
Python快速入门——学习笔记(持续更新中~)
笔记·python·学习
啊森要自信24 分钟前
CANN ops-cv:揭秘视觉算子的硬件感知优化与内存高效利用设计精髓
人工智能·深度学习·架构·transformer·cann
AI视觉网奇26 分钟前
blender 导入fbx 黑色骨骼
学习·算法·ue5·blender