目录

LNMP架构

系列 - 架构设计

LNMP 架构

Note

操作系统版本:CentOS 7.9

LNMP 架构是一组技术的简称,是由 Linux+Nginx+MySQL+PHP 组成一套 Web 架构。

架构图如下:

工作流程:

  1. 用户通过 http 协议发起请求,请求会先到达 Nginx 上。

  2. Nginx 会根据配置 Location 判断:

    1. 如果是静态请求,Nginx 会直接处理。
    2. 如果是动态请求,Nginx 会将请求通过 fastcgi 模块将请求下发至 php。
  3. php 中的 php-fpm 进程收到 nginx 转发过来的请求后会调用具体的工作进程 wrapper 进程。

  4. wrapper 进程会调用 php 解析器进行解析:

    1. 如果只是解析 php 代码,就直接返回。
    2. 如果有对 MySQL 数据库的操作,则再请求后端的数据库。
  5. 最后根据不同的访问需求,拿到数据返回给用户。

请查看 CentOS7.9使用yum在线安装Nginx文档。

将离线安装包上传至服务器并安装:

# 安装软件
tar zxvf php71.tar.gz
yum -y localinstall *.rpm
# 启动服务
systemctl start php-fpm && systemctl enable php-fpm
# 查看端口
[root@web01 ~]$netstat -anutp|grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2933/php-fpm: maste 

安装 MySQL 并设置密码:

# 安装软件
yum install -y mariadb-server
# 启动服务
systemctl start mariadb && systemctl enable mariadb
# 修改密码
mysqladmin password 'admin123'
# 登录测试
[root@web01 ~]$mysql -uroot -padmin123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

编写 Nginx 配置文件:

cat << EOF > /etc/nginx/conf.d/php.conf
server {
listen 80;
server_name www.php.com;
root /php;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF

创建站点目录及测试文件:

mkdir /php
cat << EOF > /php/index.php
<?php
	phpinfo();
?>
EOF

重载 Nginx 服务:

nginx -t

systemctl reload nginx

在浏览器输入 www.php.com (Windows 做 hosts 解析)进行访问,反馈界面如下:

创建测试文件:

cat << EOF > /php/mysql.php
<?php
	\$servername = "localhost";
	\$username = "root";
	\$password = "admin123";
	// 创建连接
	\$conn = mysqli_connect(\$servername, \$username, \$password);
	// 检测连接
	if (!\$conn) {
	die("Connection failed: " . mysqli_connect_error());
	}
	echo "连接MySQL成功...";
?>
EOF

在浏览器输入 www.php.com/mysql.php 进行访问,反馈界面如下: