8.分布式部署模式(LNMP+NFS) - 教程
分布式部署模式(LNMP+NFS)
以部署 wordpress 应用为例。
实验环境
| 主机名 | IP 地址 | 角色 |
|---|---|---|
| www.gcf.cloud | 10.1.8.21 | www |
| php.gcf.cloud | 10.1.8.22 | php |
| db.gcf.cloud | 10.1.8.23 | mariadb |
| nfs.gcf.cloud | 10.1.8.24 | nfs |
预配置
所有节点配置名称解析:
#配置主机名域名解析。
[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
#保证这两个没有问题就不会出现这个问题。
浙公网安备 33010602011771号