1.LNMP动态网站架构
架构原理图

用户发出http请求,如果用户请求的是静态资源(html,css,js),nginx直接返回给用户,如果请求的是以.php结尾的动态请求,那么nginx通过fastcgi协议将请求传给php-fpm,php-fpm来调度php进程, php在处理请求的同时会根据代码来连接mysql,php拿到mysql返回的数据后,将数据渲染成html页面,返回给nginx,nginx将html页面返回给用户。
2.部署流程
2.1.环境准备:ubuntu 22.04
| 服务器 | 公网, 内网 |
| web01 | 10.0.0.7 172.16.1.7 |
| db01 | 172.16.1.10 |
2.2.数据库准备
db01上准备
数据库版本: mysql-server-8.0
apt install mysql-server-8.0
#启动mysql
systemctl start mysql
#检查状态
[root@db01 /shell]# systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2026-03-10 20:41:36 CST; 2h 29min ago
#初始化数据库
mysql_secure_installation
#进入mysql
mysql -uroot -p
#创建blog数据库
create database blog
#添加blog用户并且拥有对blog数据库中的所有表增删改查的权限,并且设置只能在172.16.1.0这个网段进行连接
grant all on blog.* to 'blog'@'172.16.1.%' identified by '1'
#或者先创建用户
create user 'blog'@'172.16.1.%' IDENTIFIED BY '1';
#在授权
grant all privileges ON blog.* to 'blog'@'172.16.1.%';
#设置mysql监听内网
[root@db01 /shell]# grep bind /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 172.16.1.10
mysqlx-bind-address = 172.16.1.10
#重启mysql
systemctl restart mysql
#检查
ps -ef|grep mysql
ss -lntup|grep 3306
2.3 php准备
web01上准备
#安装软件包
apt install -y php php-bcmath php-cli php-common php-dev php-gd php-intl php-mbstring php-mysql php-opcache php-pdo php-xml php-json php-fpm
#修改配置文件
[root@web01 /app/code]# vim /etc/php/8.1/fpm/pool.d/www.conf
user = nginx
group = nginx
isten = 127.0.0.1:9000
#启动开机自启
systemctl start php8.1-fpm && systemctl enable php8.1-fpm
#检查php进程
[lxb@web01 ~]$ ps -ef|grep php
root 21693 1 0 20:54 ? 00:00:00 php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)
nginx 21695 21693 0 20:54 ? 00:00:00 php-fpm: pool www
nginx 21696 21693 0 20:54 ? 00:00:00 php-fpm: pool www
[root@web01 ~]# ss -lntup|grep 9000
tcp LISTEN 0 511 127.0.0.1:9000 0.0.0.0:* users:(("php-fpm8.1",pid=21993,fd=9),("php-fpm8.1",pid=21992,fd=9),("php-fpm8.1",pid=21991,fd=7)) 2.4 nginx配置
server{
listen 80;
server_name blog.baidu.com;
root /app/code/blog;
access_log /var/log/nginx/blog.baidu.com_access_log;
error_log /var/log/nginx/blog.baidu.com_error_log;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; #将以php结尾的文件的请求传给php-fpm
fastcgi_index index.php; #默认找index.php
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #告诉php文件在服务器的哪里,绝对路径
include fastcgi_params; #引入nginx预定义的fasgcgi参数
}
}
创建站点目录
mkdir -p /app/code/blog
上传代码到站点目录下
配置windows host解析
3.测试

文章评论