11.26LAMP-LNMP-分离部署

Standalone

新建4个虚拟机

实验环境

主机名 IP 地址 角色
www.tongxi66.top 10.1.8.21 apache
php.tongxi66.top 10.1.8.22 php
db.tongxi66.top 10.1.8.23 mariadb
nfs.tongxi66.top 10.1.8.24 nfs

所有节点关闭防火墙和SELinux。

sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

systemctl disable firewalld --now

预配置

所有节点配置名称解析:

bash 复制代码
[root@all-node ~ ]# 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.tongxi66.top www
10.1.8.22 php.tongxi66.top php
10.1.8.23 db.tongxi66.top db
10.1.8.24 nfs.tongxi66.top nfs

Windows配置域名解析

txt 复制代码
C:\Windows\System32\drivers\etc\hosts
10.1.8.21 www.tongxi66.top

部署 nfs 服务器

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

下载 wordpress,上传到家目录。

bash 复制代码
[root@nfs ~]# yum install -y nfs-utils
[root@nfs ~]# mkdir /www
[root@nfs ~]# echo '/www 10.1.8.0/24(rw)' > /etc/exports
[root@nfs ~]# systemctl enable nfs-server.service --now
#提前下载好的wordpress-4.9.4-zh_CN.zip 拉入
# 在准备解压 wordpress资源
[root@nfs ~]# unzip -o wordpress-4.9.4-zh_CN.zip -d /www/

# 准备网页测试文件
[root@nfs ~]# echo 'Hello World !' > /www/index.html
[root@nfs ~]# cat > /www/index.php <<EOF
<?php
  echo "<h1>Hello World !</h1>\n";
?>
EOF

[root@nfs ~]# cat > /www/test-mysql.php <<'EOF'
<?php
  $link=mysqli_connect('db.tongxi66.top','wordpress','123');
  if($link)
    echo "<h1>Connect Mysql Success !</h1>\n";
  else
    echo "<h1>Connect Mysql Failed !</h1>\n";
  $link->close();
?>
EOF

[root@nfs ~]# cat > /www/info.php <<EOF
<?php
  phpinfo();
?>
EOF

# 通过查询www服务器,获知nginx账户信息
[root@www ~ ]# grep nginx /etc/passwd
nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin

[root@nfs ~]# chown -R 998 /www

部署 db 服务器

sql 复制代码
[root@db ~]# yum install -y mariadb-server
[root@db ~]# systemctl enable mariadb --now

# 加固 MariaDB
[root@db ~]# mysql_secure_installation
# 交互式提示您进行更改,包括: 
# - 为root帐户设置密码,例如redhat。 
# - 禁止root帐户从本地主机外部访问数据库。
# - 删除匿名用户帐户。
# - 删除用于演示的test数据库。 

# 准备wordpress数据库和用户
[root@db ~]# mysql -uroot -p123
mysql> CREATE DATABASE wordpress;
mysql> CREATE USER wordpress@'%' identified by '123';
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit

部署 Nginx 服务器

bash 复制代码
# 部署 Nginx 服务
[root@www ~]# yum install -y nginx
[root@www ~]# systemctl enable nginx --now

# 安装 nfs 工具
[root@www ~]# yum install -y nfs-utils

# 挂载存储
[root@www ~]# echo 'nfs.tongxi66.top:/www /usr/share/nginx/html nfs defaults 0 0' >> /etc/fstab 
[root@www ~]# mount /usr/share/nginx/html/
[root@www ~]# df -h/usr/share/nginx/html/
Filesystem            Size  Used Avail Use% Mounted on
nfs.tongxi66.top:/www   64G  3.2G   61G   5% /usr/share/nginx/html
[root@www ~]# ls /usr/share/nginx/html/
index.html  index.php  info.php  test-mysql.php  wordpress

部署 PHP 服务器

部署 php 服务

bash 复制代码
[root@php ~]# echo 'nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin' >> /etc/passwd
[root@php ~]# groupadd -g 996 nginx

[root@php ~]# yum install -y php php-fpm php-mysqlnd
[root@php ~]# vim /etc/php-fpm.d/www.conf
bash 复制代码
#使用;号注释掉原有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 ~]# systemctl enable php-fpm.service --now

挂载存储

bash 复制代码
# 安装 nfs 工具
[root@php ~]# yum install -y nfs-utils

# 挂载存储
[root@php ~]# echo 'nfs.tongxi66.top:/www /www nfs defaults 0 0' >> /etc/fstab 
[root@php ~]# mkdir /www
[root@php ~]# mount /www
[root@php ~]# df -h /www
Filesystem            Size  Used Avail Use% Mounted on
nfs.tongxi66.top:/www   64G  3.2G   61G   5% /www
[root@php ~]# ls /www
index.html  index.php  info.php  test-mysql.php  wordpress

php 程序测试

bash 复制代码
[root@php ~]# php /www/index.php
<h1>Hello World !</h1>

[root@php ~]# php /www/test-mysql.php
<h1>Connect Mysql Success !</h1>

# 执行 info.php 的输出内容太多,这里省略。
[root@php ~]# php /www/info.php

配置 Nginx 对接 PHP

bash 复制代码
[root@www ~]# cat > /etc/nginx/conf.d/vhost-www.conf <<'EOF'
server {
    listen 80;
    server_name www.tongxi66.top;

    # 静态资源处理
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm index.php;
    }

    # PHP 请求处理
    location ~ \.php$ {
        # 配置 PHP-FPM 监听的地址和端口
        fastcgi_pass php.tongxi66.top:9000;
        fastcgi_index index.php;
        # 配置 php 服务器上 wordpress 应用所在位置
        fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
        include fastcgi_params;
    }
}
EOF

# 重启服务
[root@www ~]# systemctl restart nginx

测试应用

客户端配置 www.tongxi66.top 名称解析。访问http://www.tongxi66.top/wordpress/。

相关推荐
竹之却6 分钟前
Ubuntu 系统安装 Ollama 教程
linux·运维·ubuntu·ollama
珠海西格7 分钟前
4 月 1 日起执行分布式光伏监控新规,直接影响从业者与项目收益
大数据·运维·服务器·分布式·能源
Leinwin8 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382508 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇8 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7599 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣9 小时前
智能体选型实战指南
运维·人工智能
yy55279 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ10 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔12 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络