当前位置: 首页 > news >正文

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.128Server-WebNginx、MariaDB、PHP运行博客网站,处理用户请求
192.168.120.130Server-NFS-DNSNFS、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博客系统,涉及多个关键技术点:

  1. 服务器基础环境配置:包括静态IP、主机名、防火墙、时间同步和SSH免密登录
  2. NFS服务:实现了网站资源的集中管理和共享
  3. LNMP架构:搭建了Web服务环境,为WordPress提供运行平台
  4. DNS服务:配置了域名解析,使博客可以通过域名访问

通过本项目的实践,不仅可以掌握Linux服务器的基本配置方法,还能理解多个服务协同工作的原理。在实际生产环境中,还可以进一步优化,如添加SSL证书实现HTTPS访问、配置数据库主从复制提高性能、设置定期备份保障数据安全等。

http://www.lryc.cn/news/601848.html

相关文章:

  • Flink窗口:解锁流计算的秘密武器
  • QT---概览
  • 使用frp实现免费内网穿透
  • Triton Shared编译
  • 【前后端】node mock.js+json-server
  • LeetCode Hot 100 括号生成
  • 力扣热题100----------41.缺少的第一个正数
  • NodeJs接入腾讯云存储COS
  • PROFINET转CAN通讯协议转换速通汽车制造
  • 解析json异常, ObjectMapper注册的问题
  • 生成式召回-TIGER范式
  • BUG记录——Request接传Json数据中文乱码
  • C语言——————学习笔记(自己看)
  • Oracle 19C RU 19.28 升级和安装
  • Frontiers in Psychology投稿LaTeX(三)
  • Python异常处理:金融风控系统中的救命盾牌
  • 设备分配与回收
  • 6.Pinia快速入门
  • 3.JDK+JRE组件构成与协作
  • LeetCode 刷题【16. 最接近的三数之和、17. 电话号码的字母组合】
  • 推荐系统学习
  • 电子电路设计学习
  • Oracle数据库常用语法详解
  • 逆向入门(43)程序逆向篇-tsrh-crackme
  • C++ auto 类型推导
  • Android MQTT 长连接最佳实践技术分享
  • 5.4 ASPICE适配过程中的实施改进
  • 机械学习初识--什么是机械学习--机械学习有什么重要算法
  • Red靶机攻略
  • 字符串是数据结构还是数据类型?