Nginx动静分离实验步骤
服务器分配
IP | 功能 | 软件 |
---|---|---|
192.168.11.8 | 共享服务器 | NFS服务 |
192.168.11.9 | 网络入口,数据转发,静态文件 | Nginx服务 |
192.168.11.10 | 处理动态数据 | PHP-FPM |
192.168.11.11 | 图片服务器 | Nginx服务 |
192.168.11.12 | 数据库服务 | MySQL服务 |
二、配置详解
1.NFS服务器配置
IP: 192.168.11.8
# CentOS7安装NFS
yum -y install nfs-utils# Ubuntu安装NFS
apt install -y nfs-kernel-server# 创建共享目录
mkdir -p /app/blog# 修改共享配置
vim /etc/exports
# 只允许内网网段挂载,提高安全性。
/app/blog 192.168.11.0/24(rw,sync,root_squash,no_all_squash,no_subtree_check)# Ubuntu 重启服务
systemctl restart nfs-kernel-server
systemctl enable nfs-kernel-server# CentOS7 重启服务
sudo systemctl start rpcbind nfs-server
sudo systemctl enable rpcbind nfs-server# 下载wordpress文件
wget http://192.168.57.200/Software/wordpress-6.6.1-zh_CN.zip
# 解压
unzip wordpress-6.6.1-zh_CN.zip
# 发送到共享数据
cp -r wordpress/* /app/blog
# 进入共享数据
cd /app/blog
2.Nginx服务器配置
IP: 192.168.11.9
首先Nginx与PHP服务器都要挂载NFS。实现统一部署方便管理
# CentOS7安装依赖
yum install nfs-utils# Ubuntu安装依赖依赖
apt install -y nfs-common# 使用脚本安装Nginx
wget http://192.168.57.200/Software/nginx_install.sh
bash nginx_install.sh# 创建共享目录
mkdir -p /app/blog# 将NFS的/app/blog挂载至本地的/app/blog
mount 192.168.11.8:/app/blog /app/blog
然后再配置Nginx
Nginx主要是server中的location的配置。配置location将.php结尾的交给PHP服务器。将.jpg、gif结尾的交给Image。其他配置按默认即可。
vim /etc/nginx/nginx.conf
http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;include /etc/nginx/conf.d/*.conf;server {listen 80 default_server;server_name www.test.com;index index.php index.html;root /app/blog; # 根目录为挂载的NFS的挂载点include /etc/nginx/default.d/*.conf;location ~* \.php$ { # location匹配将php结尾的交给PHP服务器fastcgi_pass 192.168.11.10:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /app/blog$fastcgi_script_name;include fastcgi_params;}location ~* \.(jpg|gif|png|webp)$ { # location匹配将图片交给Image处理proxy_pass http://192.168.11.11; # Image服务器要开启web服务}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}
3.PHP服务器配置
IP: 192.168.11.10
# CentOS7安装依赖
yum install nfs-utils# Ubuntu安装依赖
apt install -y nfs-common# 创建共享目录
mkdir -p /app/blog# 将NFS的/app/blog挂载至本地的/app/blog
mount 192.168.11.8:/app/blog /app/blog
PHP服务器的配置比较简单,主要讲PHP以FPM模式安装后进行简单的配置即可
# CentOS7
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install mod_php72w.x86_64 php72w-cli.x86_64 php72w-common.x86_64 php72w-mysqlnd php72w-fpm.x86_64
vim /etc/php-fpm.d/www.conf# Ubuntu
sudo apt update
sudo apt install php-fpm php-mysql
vim /etc/php/8.1/fpm/pool.d/www.conf# 只写监听端口,即监听所有IP
listen = 9000
# 将这行注释,可以允许所有IP进行访问,否则只能本机访问。
; listen.allowed_clients = 127.0.0.1systemctl start php-fpm
systemctl enable php-fpm
4.Image服务器配置
IP: 192.168.11.11
# CentOS7安装依赖
yum install nfs-utils
wget http://192.168.57.200/Software/nginx_install.sh
bash nginx_install.sh# Ubuntu安装Nginx和nfs-common
sudo apt install nginx nfs-common -y# 创建共享目录
mkdir -p /app/blog# 将NFS的/app/blog挂载至本地的/app/blog
mount 192.168.11.8:/app/blog /app/blogserver {root /app/blog; # 仅仅修改根目录这一行即可。Httpd同理} # 如果使用apache要注意在CentOS7下默认拒绝所有systemctl restart nginx # 重启服务
5.MySQL服务器
IP: 192.168.11.12
# Ubuntu apt安装
apt -y install mysql-server# 或者二进制安装
wget http://192.168.57.200/Software/mysql_install.sh
bash mysql_install.sh# 创建wordpress数据库与远程账号
mysql -uroot -pCREATE DATABASE wordpress charset utf8mb4;
CREATE USER 'wordpress'@'192.168.11.%' IDENTIFIED BY 'admin1234';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'192.168.11.%';
FLUSH PRIVILEGES;
6.配置wordpress
cp wp-config-sample.php wp-config.php # 复制一个模板文件后改名作为主配置文件vim wp-config.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress'); # wpdb为MySQL中创建的数据库/** MySQL数据库用户名 */
define('DB_USER', 'wordpress'); # wpadm为MySQL中授权的用户/** MySQL数据库密码 */
define('DB_PASSWORD', 'admin1234'); # 授权用户的密码/** MySQL主机 */
define('DB_HOST', '192.168.8.24'); # MySQL主机地址
至此配置就已经完成。达到了图片从图片服务器返回,静态nginx直接返回,动态交给PHP进行处理。
①配置完了之后去浏览器搜索http://192.168.11.11/wordpress
②然后就根据表格信息填写自己在第五台MySQL服务器上创建的用户创建的密码
③没有报错的话就在192.168.11.8这台虚拟机里cd /app/blog 在这个路径里创建新文件 vim wp-config.php 在这个文件里添加让添加的东西,保存退出
④下一步就根据提示填写东西
⑤最后出现这张图片就成功了
总结
1.前端Nginx要做好location匹配,将.php与.jpg等进行反向代理。
2.后端PHP服务器要修改配置文件,PHP自带配置文件只监听本地,且只允许本地访问
3.后端Image服务器,不论是apache还是Nginx要开启WEB服务。根目录要指向图片根目录,且根目录下的图片要与原本图片文件目录结构一致。