Linux实战:从零搭建基于LNMP+NFS+DNS的WordPress博客系统
前言
在数字化时代,拥有一个个人博客是技术爱好者展示成果、分享经验的重要方式。本文将带您从零开始,在Linux环境下通过两台服务器协作,搭建一个功能完整的WordPress博客系统。我们将整合LNMP架构、NFS文件共享和DNS域名解析服务,最终实现通过自定义域名访问博客的目标。本文适合有基础Linux操作经验的读者,所有操作步骤均经过实际验证,可直接复用。
一、项目概述
1.1 项目目标
通过两台Linux服务器构建可通过域名访问的个人博客系统,具体实现:
- Server-Web主机:部署LNMP环境,提供Web服务
- Server-NFS-DNS主机:提供NFS文件共享服务和DNS域名解析服务
- 最终效果:用户可通过
www.zds.com
域名访问基于WordPress的博客网站
1.2 技术栈
- 操作系统:Linux
- Web服务器:Nginx
- 数据库:MariaDB
- 编程语言:PHP
- 文件共享:NFS
- 域名解析:DNS
- 博客程序:WordPress
二、环境说明
2.1 服务器角色分配
主机IP地址 | 主机名 | 主要服务 | 功能描述 |
---|---|---|---|
192.168.120.128 | Server-Web | Nginx、MariaDB、PHP | 运行博客网站,处理用户请求 |
192.168.120.130 | Server-NFS-DNS | NFS、DNS | 提供文件共享和域名解析服务 |
2.2 网络拓扑
用户 <--> DNS服务(192.168.120.130) <--> Web服务(192.168.120.128) <--> NFS服务(192.168.120.130)
三、基础环境配置
3.1 恢复快照(可选)
如果使用虚拟机环境,建议先恢复干净快照,确保环境初始状态一致:
# 此步骤根据虚拟化平台操作,无统一命令
3.2 配置静态IP地址
在Server-Web(192.168.120.128)上操作:
# 修改网络接口配置
[root@server-web ~]# nmcli c modify ens32 \
ipv4.method manual \
ipv4.addresses '192.168.120.128/24' \
ipv4.gateway '192.168.120.2' \
ipv4.dns '114.114.114.114'# 重新加载并激活网络连接
[root@server-web ~]# nmcli c reload
[root@server-web ~]# nmcli c up ens32
在Server-NFS-DNS(192.168.120.130)上操作:
# 修改网络接口配置
[root@server-dns-nfs ~]# nmcli c modify ens32 \
ipv4.method manual \
ipv4.addresses '192.168.120.130/24' \
ipv4.gateway '192.168.120.2' \
ipv4.dns '114.114.114.114'# 重新加载并激活网络连接
[root@server-dns-nfs ~]# nmcli c reload
[root@server-dns-nfs ~]# nmcli c up ens32
3.3 配置主机名及hosts映射
在Server-Web上操作:
# 设置主机名
[root@web ~]# hostnamectl set-hostname server-web# 配置hosts文件
[root@web ~]# vim /etc/hosts
# 添加以下内容
192.168.120.128 server-web
192.168.120.130 server-dns-nfs# 使配置生效
[root@web ~]# bash
在Server-NFS-DNS上操作:
# 设置主机名
[root@node1 ~]# hostnamectl set-hostname server-dns-nfs# 配置hosts文件
[root@node1 ~]# vim /etc/hosts
# 添加以下内容
192.168.120.128 server-web
192.168.120.130 server-dns-nfs# 使配置生效
[root@node1 ~]# bash
3.4 配置防火墙
两台服务器均执行以下操作:
# 启动防火墙并设置开机自启
[root@server ~]# systemctl start firewalld
[root@server ~]# systemctl enable firewalld# 查看防火墙状态
[root@server ~]# systemctl status firewalld
3.5 配置时间同步
两台服务器均执行以下操作:
# 编辑chrony配置文件,将阿里时间服务器推荐配置复制其中
[root@server ~]# vim /etc/chrony.conf
# 替换为以下内容
server ntp.aliyun.com iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
logchange 0.5
logdir /var/log/chrony# 重启chronyd服务
[root@server ~]# systemctl restart chronyd# 验证时间同步状态(出现*表示同步成功)
[root@server ~]# chronyc sources -v
3.6 配置SSH免密登录
在Server-Web上操作:
# 生成SSH密钥对(一路回车即可)
[root@server-web ~]# ssh-keygen -t rsa# 将公钥发送到Server-NFS-DNS
[root@server-web ~]# ssh-copy-id root@192.168.120.130
# 输入Server-NFS-DNS的root密码完成验证
在Server-NFS-DNS上操作:
# 生成SSH密钥对(一路回车即可)
[root@server-dns-nfs ~]# ssh-keygen -t rsa# 将公钥发送到Server-Web
[root@server-dns-nfs ~]# ssh-copy-id root@192.168.120.128
# 输入Server-Web的root密码完成验证
验证免密登录:
# 从Server-Web登录到Server-NFS-DNS
[root@server-web ~]# ssh root@192.168.120.130
# 成功登录后退出
[root@server-dns-nfs ~]# exit# 从Server-NFS-DNS登录到Server-Web
[root@server-dns-nfs ~]# ssh root@192.168.120.128
# 成功登录后退出
[root@server-web ~]# exit
四、部署核心服务
4.1 部署NFS服务(Server-NFS-DNS)
4.1.1 安装NFS相关软件
[root@server-dns-nfs ~]# yum install rpcbind nfs-utils -y
4.1.2 准备WordPress文件
[root@server-dns-nfs ~]# cd /
#用xftp上传代码压缩包
[root@server-dns-nfs /]# ls
afs bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var wordpress-6.1-zh_CN.zip www
[root@server-dns-nfs /]# unzip wordpress-6.1-zh_CN.zip
[root@server-dns-nfs /]# ls
afs bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var wordpress wordpress-6.1-zh_CN.zip www
# 设置权限
[root@server-dns-nfs /]# chmod -R 777 wordpress
4.1.3 配置NFS共享
# 编辑exports文件
[root@server-dns-nfs /]# vim /etc/exports
# 添加以下内容
/wordpress 192.168.120.128/24(rw,all_squash,sync)# 配置防火墙放行NFS相关服务
[root@server-dns-nfs /]# firewall-cmd --permanent --zone=public --add-service=rpc-bind
[root@server-dns-nfs /]# firewall-cmd --permanent --zone=public --add-service=nfs
[root@server-dns-nfs /]# firewall-cmd --permanent --zone=public --add-service=mountd
[root@server-dns-nfs /]# firewall-cmd --reload
[root@server-dns-nfs /]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens32sources: services: dhcpv6-client mdns mountd nfs rpc-bind sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules: # 启动NFS服务(注意启动顺序)
[root@server-dns-nfs /]# systemctl start rpcbind
[root@server-dns-nfs /]# systemctl start nfs-server# 设置开机自启
[root@server-dns-nfs /]# systemctl enable rpcbind
[root@server-dns-nfs /]# systemctl enable nfs-server
4.2 部署Web服务(Server-Web)
4.2.1 安装LNMP环境
# 安装Nginx、MariaDB和PHP相关组件
[root@server-web ~]# yum install nginx mariadb-server php* -y# 启动服务
[root@server-web ~]# systemctl start nginx
[root@server-web ~]# systemctl start mariadb
[root@server-web ~]# systemctl start php-fpm# 设置开机自启
[root@server-web ~]# systemctl enable nginx
[root@server-web ~]# systemctl enable mariadb
[root@server-web ~]# systemctl enable php-fpm
4.2.2 挂载NFS共享目录
# 安装nfs-utils
[root@server-web ~]# yum install nfs-utils -y# 查看NFS服务器共享的目录
[root@server-web ~]# showmount -e 192.168.120.130
Export list for 192.168.120.130:
/wordpress 192.168.120.128/24# 创建挂载点
[root@server-web ~]# mkdir /wp# 挂载NFS共享目录
[root@server-web ~]# mount -t nfs 192.168.120.130:/wordpress /wp# 设置开机自动挂载
[root@server-web ~]# echo "192.168.120.130:/wordpress /wp nfs defaults 0 0" >> /etc/fstab# 验证挂载结果
[root@server-web ~]# df -h | grep /wp
4.2.3 配置Nginx
# 防火墙放行HTTP服务
[root@server-web ~]# firewall-cmd --permanent --zone=public --add-service=http
[root@server-web ~]# firewall-cmd --reload
[root@server-web ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens32sources: services: dhcpv6-client http mdns sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules: # 编辑Nginx配置文件
[root@server-web ~]# vim /etc/nginx/nginx.conf
# 找到root配置项,修改为
root /wp;# 重启Nginx服务
[root@server-web ~]# systemctl restart nginx
4.2.4 配置数据库
# 登录MariaDB
[root@server-web ~]# mysql
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+# 创建数据库
MariaDB [(none)]> create database wordpress;# 创建数据库用户并授权
MariaDB [(none)]> create user 'rch'@'localhost' identified by '123456';
MariaDB [(none)]> grant all privileges on wordpress.* to 'rch'@'localhost';
MariaDB [(none)]> flush privileges;# 退出数据库
MariaDB [(none)]> exit
4.2.5 配置WordPress
# 复制配置文件模板
[root@server-web ~]# cp /wp/wp-config-sample.php /wp/wp-config.php# 编辑WordPress配置文件
[root@server-web ~]# vim /wp/wp-config.php
# 修改以下内容
define('DB_NAME', 'wordpress');
define('DB_USER', 'rch');
define('DB_PASSWORD', '123456');
define('DB_HOST', 'localhost');# 设置目录权限
[root@server-web ~]# chmod -R 777 /wp
[root@server-web ~]# chown -R nginx:nginx /wp
4.3 配置DNS服务(Server-NFS-DNS)
4.3.1 安装DNS服务
[root@server-dns-nfs ~]# yum install bind -y
4.3.2 配置主配置文件
# 修改以下配置项
[root@server-dns-nfs /]# vim /etc/named.conf
listen-on port 53 { any; };listen-on-v6 port 53 { ::1; };directory "/var/named";dump-file "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";secroots-file "/var/named/data/named.secroots";recursing-file "/var/named/data/named.recursing";allow-query { any; };
4.3.3 配置区域文件
[root@server-dns-nfs /]# vim /etc/named.rfc1912.zones
zone "zds.com" IN {type master;file "zds.com.zone";allow-update { none; };
};zone "120.168.192.in-addr.arpa" IN {type master;file "192.168.120.arpa";allow-update { none; };
};
4.3.4 创建正向解析文件
# 复制模板文件
[root@server-dns-nfs ~]# cd /var/named
[root@server-dns-nfs named]# cp -a named.localhost zds.com.zone# 编辑正向解析文件
[root@server-dns-nfs named]# vim zds.com.zone
# 修改为以下内容
$TTL 1D
zds.com. IN SOA ns.zds.com. 612612.qq.com (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumIN NS ns.zds.com.
ns.zds.com. IN A 192.168.120.130
www.zds.com. IN A 192.168.120.128
4.3.5 创建反向解析文件
# 复制模板文件
[root@server-dns-nfs named]# cp -a named.loopback 192.168.120.arpa# 编辑反向解析文件
[root@server-dns-nfs named]# vim 192.168.120.arpa
# 修改为以下内容
$TTL 1D
@ IN SOA ns.zds.com. 612612.qq.com. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumIN NS ns.zds.com.
ns.zds.com. IN A 192.168.120.130
128 IN PTR www.zds.com.
4.3.6 启动DNS服务
# 防火墙放行DNS服务
[root@server-dns-nfs named]# firewall-cmd --permanent --zone=public --add-service=dns
[root@server-dns-nfs named]# firewall-cmd --reload# 启动named服务并设置开机自启
[root@server-dns-nfs named]# systemctl start named
[root@server-dns-nfs named]# systemctl enable named
五、测试与验证
5.1 验证DNS解析
在Server-Web上验证:
# 验证正向解析
[root@server-web ~]# nslookup 192.168.120.128
128.120.168.192.in-addr.arpa name = www.zds.com.
# 验证反向解析
[root@server-web ~]# nslookup www.zds.com
Server: 192.168.120.130
Address: 192.168.120.130#53Name: www.zds.com
Address: 192.168.120.128
5.2 访问博客网站
测试
- 在windows端输入192.168.120.128继续完成wordpress配置 (邮箱必须设置)
站点标题:张德帅的博客
用户名·:rch
密码123456
邮箱:612612.qq.com(我设置时候没截图,只能借用别人的展示)
我在里面编辑了一篇文章,内容是周杰伦的等你下课
想要使用window的域名解析服务可以在设置-更改网络适配器选项,我链接的是WiFi,所以只保留以下两块网卡
在这两块网卡中各自取消IP v6服务,只保留IP v4服务,且双击IP v4协议
之后浏览器输入www.zds.com
六、总结
本文详细介绍了如何在Linux环境下通过两台服务器搭建一个功能完整的WordPress博客系统,涉及多个关键技术点:
- 服务器基础环境配置:包括静态IP、主机名、防火墙、时间同步和SSH免密登录
- NFS服务:实现了网站资源的集中管理和共享
- LNMP架构:搭建了Web服务环境,为WordPress提供运行平台
- DNS服务:配置了域名解析,使博客可以通过域名访问
通过本项目的实践,不仅可以掌握Linux服务器的基本配置方法,还能理解多个服务协同工作的原理。在实际生产环境中,还可以进一步优化,如添加SSL证书实现HTTPS访问、配置数据库主从复制提高性能、设置定期备份保障数据安全等。