当前位置: 首页 > 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.dtcms.com/a/300970.html

相关文章:

  • (10)数据结构--排序
  • 设计模式(八)结构型:桥接模式详解
  • k8s的权限
  • Python队列算法:从基础到高并发系统的核心引擎
  • Cline与Cursor深度实战指南:AI编程助手的革命性应用
  • 【Canvas与标牌】优质资产六角星标牌
  • Java面试全方位解析:从基础到AI的技术交锋
  • 力扣刷题(第一百天)
  • 【多模态】天池AFAC赛道四-智能体赋能的金融多模态报告自动化生成part1-数据获取
  • Linux之shell脚本篇(三)
  • 从0开始学linux韦东山教程Linux驱动入门实验班(6)
  • Linux Shell 命令
  • LabVIEW人脸识别
  • k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略
  • Vue基础(25)_组件与Vue的内置关系(原型链)
  • ESP32-S3学习笔记<7>:GP Timer的应用
  • 力扣热题100----------41.缺少的第一个正数
  • JavaScript单线程实现异步
  • [ The Missing Semester of Your CS Education ] 学习笔记 shell篇
  • 浅谈如何解决多组件系统相互依赖、调用导致接口复杂问题
  • 深入理解Java内存与运行时机制:从对象内存布局到指针压缩
  • 命令行和neovim的git操作软件-lazygit
  • 探索 Vim:Linux 下的高效文本编辑利器
  • Unity Catalog与Apache Iceberg如何重塑Data+AI时代的企业数据架构
  • Windows 11 Qt 5.15.x 源码编译,支持C++20
  • 字节跳动Coze Studio开源了!架构解析
  • 01人工智能中优雅草商业实战项目视频字幕翻译以及声音转译之底层处理逻辑阐述-卓伊凡|莉莉
  • go mod教程、go module
  • docker 自定义网桥作用
  • JavaScript手录07-数组