8.分布式部署模式(LNMP+NFS) - 教程

分布式部署模式(LNMP+NFS)

以部署 wordpress 应用为例。

实验环境

主机名IP 地址角色
www.gcf.cloud10.1.8.21www
php.gcf.cloud10.1.8.22php
db.gcf.cloud10.1.8.23mariadb
nfs.gcf.cloud10.1.8.24nfs

预配置

所有节点配置名称解析:

#配置主机名域名解析。
[root@CenOS ~ 10:25:12]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.8.21 www.gcf.cloud www
10.1.8.22 php.gcf.cloud php
10.1.8.23 db.gcf.cloud db
10.1.8.24 nfs.gcf.cloud nfs

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

部署nfs服务器:

负责存储所有网站静态资源和 WordPress 程序文件

由于静态文件和动态文件没有分开,所以 Web 服务器和 PHP 服务器都要存一份。实验环境通过NFS共享提供wordpress应用

下载 wordpress,上传到家目录。

#安装NFS服务端软件
[root@nfs ~ 10:34:37]# yum install -y nfs-utils.x86_64
#创建共享目录
[root@nfs ~ 11:02:45]# mkdir /www
#配置NFS 共享规则,允许10.1.8.0/24网段读写访问/www目录。
[root@nfs ~ 11:26:28]# echo '/www 10.1.8.0/24(rw)' > /etc/exports
#启动服务。
[root@nfs ~ 11:27:01]# systemctl enable nfs-server.service --now
# 准备 wordpress资源
[root@nfs ~ 11:27:16]# yum install -y wget
[root@nfs ~ 11:28:23]# wget http://192.168.46.88/01.softwares/wordpress-4.9.4-zh_CN.zip
#解压到共享目录。
[root@nfs ~]# unzip -o wordpress-4.9.4-zh_CN.zip -d /www/
# 准备网页测试文件
[root@nfs ~ 11:30:53]#  cat > /www/index.php <<EOF
> <?php
>   echo "<h1>Hello World !</h1>\n";
> ?>
> EOF
#准备MYSQL 连接测试文件
[root@nfs ~ 11:31:07]# cat > /www/test-mysql.php <<'EOF'
> <?php
>   $link=mysqli_connect('db.gcf.cloud','wordpress','123');
>   if($link)
>     echo "<h1>Connect Mysql Success !</h1>\n";
>   else
>     echo "<h1>Connect Mysql Failed !</h1>\n";
>   $link->close();
> ?>
> EOF
#准备php信息展示文件。
[root@nfs ~ 11:31:30]# cat > /www/info.php <<EOF
> <?php
>   phpinfo();
> ?>
> EOF
#安装nginx
[root@nfs ~ 11:32:05]# yum install -y nginx
# 通过查询www服务器,获知nginx用户的UID 和GID。
[root@nfs ~ 11:32:22]# grep nginx /etc/passwd
nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin
#设置/www目录的所有者为nginx用户(UID=998)
[root@nfs ~ 11:32:23]# chown -R 998 /www

部署 db (数据库)服务器:

运行 MariaDB,提供数据存储服务
#安装Mariadb服务器
[root@db ~ 10:35:03]# yum install -y mariadb-server.x86_64 
#启动服务。
[root@db ~ 11:33:46]# systemctl enable mariadb.service --now
# 加固 MariaDB
[root@db ~ 11:34:01]# mysql_secure_installation 
# 交互式提示您进行更改,包括: 
# - 为root帐户设置密码,密码123。 
# - 禁止root帐户从本地主机外部访问数据库。
# - 删除匿名用户帐户。
# - 删除用于演示的test数据库。 
# 准备wordpress数据库和用户
[root@db ~ 11:34:19]# mysql -u root -p
Enter password: 123
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user wordpress identified by '123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on wordpress.* to wordpress;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye

部署 Nginx 服务器:

运行 Nginx,处理 HTTP 请求和静态资源
# 部署 Nginx 服务
[root@www ~ 10:34:46]# yum install -y nginx
[root@www ~ 11:36:39]# systemctl enable nginx.service --now
# 安装 nfs 工具
[root@www ~ 11:37:53]# yum install -y nfs-utils.x86_64 
# 挂载存储,配置开机自动挂载NFS共享目录。
[root@www ~ 11:39:04]# echo 'nfs.gcf.cloud:/www /usr/share/nginx/html nfs defaults 0 0' >> /etc/fstab 
#挂载
[root@www ~ 11:44:14]# mount /usr/share/nginx/html/
#查看挂载情况。
[root@www ~ 11:44:19]# df -h /usr/share/nginx/html/
Filesystem          Size  Used Avail Use% Mounted on
nfs.gcf.cloud:/www   50G  1.7G   49G   4% /usr/share/nginx/html
#查看共享目录下的文件列表。
[root@www ~ 12:06:06]# ls /usr/share/nginx/html/
index.html  index.php  info.php  test-mysql.php  wordpress

部署 PHP 服务器:

运行 PHP-FPM,处理动态 PHP 请求

部署 php 服务

#创建nginx用户
[root@php ~ 11:46:02]# echo 'nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin' >> /etc/passwd
#创建nginx组
[root@php ~ 11:46:17]# groupadd -g 996 nginx
#安装php及相关软件。
[root@php ~ 11:46:33]# yum install -y php php-fpm php-mysqlnd
#编辑配置文件。
[root@php ~ 11:51:55]#  vim /etc/php-fpm.d/www.conf
#使用;号注释掉原有listen行
;listen = 127.0.0.1:9000
# 新增listen 监听所有ip的9000端口
listen = 9000
# 支持监听特定ip的9000端口,例如listen = 10.1.8.22:9000
# 使用;号注释掉原有 listen.allowed_clients 行
# 允许所有客户端访问
;listen.allowed_clients = 127.0.0.1
# 设置运行用户
user = nginx
group = nginx
#启用服务。
[root@php ~ 11:54:31]# systemctl enable php-fpm.service --now

挂载存储

#安装NFS 客户端工具
[root@php ~ 11:54:47]# yum install -y nfs-utils.x86_64
#配置开机自动挂载NFS 共享目录。
[root@php ~ 11:55:20]# echo 'nfs.gcf.cloud:/www /www nfs defaults 0 0' >> /etc/fstab 
#创建挂载点
[root@php ~ 11:56:00]# mkdir /www
#挂载
[root@php ~ 11:56:09]# mount /www
[root@php ~ 11:56:21]# df -h /www
Filesystem          Size  Used Avail Use% Mounted on
nfs.gcf.cloud:/www   50G  1.7G   49G   4% /www
#查看共享列表文件
[root@php ~ 12:09:40]# ls /www
index.html  index.php  info.php  test-mysql.php  wordpress

php 程序测试

#验证连接情况是否正常。
[root@php ~ 14:03:25]# php /www/index.php 
<h1>Hello World !</h1>
  [root@php ~ 14:04:07]# php /www/test-mysql.php 
  <h1>Connect Mysql Success !</h1>
    # 执行 info.php 的输出内容太多,这里省略。

配置 Nginx 对接 PHP

#编辑配置文件
[root@www ~ 12:03:15]# vim /etc/nginx/conf.d/vhost-www.conf
server {
listen 80;
server_name www.gcf.cloud;
# 静态资源处理
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
# PHP 请求处理
location ~ \.php$ {
# 配置 PHP-FPM 监听的地址和端口
fastcgi_pass php.gcf.cloud:9000;
fastcgi_index index.php;
# 配置 php 服务器上 wordpress 应用所在位置
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
#重启服务。
[root@www ~ 12:05:55]# systemctl restart nginx.service 

测试应用

客户端配置 www.gcf.cloud 名称解析。访问http://10.1.8.21/wordpress/。

遇到的问题:

1. wordpress未解压到正确位置:
导致访问http://10.1.8.21/wordpress/,未出现对应的界面。
#将wordpress解压到/root目录下,不在/www目录下,就会导致/www作为共享目录时不能将wordpress共享出去。
[root@nfs ~ 11:43:57]# ls 
anaconda-ks.cfg  wordpress  wordpress-4.9.4-zh_CN.zip
[root@nfs ~ 11:45:22]# ls /www/
index.html  index.php  info.php  test-mysql.php
[root@www ~ 11:44:35]# ls /usr/share/nginx/html/
index.html  index.php  info.php  test-mysql.php
解决方法:
#将wordpress移到/www下就可以了
[root@nfs ~ 12:11:36]# mv wordpress /www/
#更改权限,
[root@nfs ~ 13:43:26]# chown -R 998 /www
2. 不能挂载。
#挂载显示不能解析到主机名nfs.gcf.cloud说明没有在/etc/hosts里面配置该主机名解析。
[root@www ~ 11:41:16]# mount /usr/share/nginx/html/
mount.nfs: Failed to resolve server nfs.gcf.cloud: Name or service not known
mount.nfs: Operation already in progress
解决办法:
#编辑文件添加如下内容即可。
[root@www ~ 11:43:01]# vim /etc/hosts
10.1.8.21 www.gcf.cloud www
10.1.8.22 php.gcf.cloud php
10.1.8.23 db.gcf.cloud db
10.1.8.24 nfs.gcf.cloud nfs
3.进入网站出现如下界面,说明权限有问题。

在这里插入图片描述

解决办法:
#修改权限
[root@nfs ~ 13:43:26]# chown -R 998 /www
#确保已经将php-fpm 进程默认以 apache 用户身份运行,修改运行用户为 nginx,并重启服务
[root@php ~]# vim /etc/php-fpm.d/www.conf
user=nginx
group=nginx
#保证这两个没有问题就不会出现这个问题。
posted @ 2026-02-03 20:32  clnchanpin  阅读(12)  评论(0)    收藏  举报