前言

在数字化时代,拥有一个个人博客是技术爱好者展示成果、分享经验的重要方式。本文将带您从零开始,在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.pswp.cn/pingmian/91187.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91187.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91187.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Ignite 的对等类加载(Peer Class Loading, P2P Class Loading)机制

这段内容是关于 Apache Ignite 的“对等类加载”&#xff08;Peer Class Loading, P2P Class Loading&#xff09;机制的详细说明。这是 Ignite 为了简化开发而设计的一个非常强大的功能&#xff0c;但同时也存在一些安全和性能上的考量。 下面我将用通俗易懂的语言 结构化解…

预过滤环境光贴图制作教程:第四阶段 - Lambert 无权重预过滤(Stage 3)

在完成高光反射的 GGX 预过滤后,我们还需要处理环境光的漫反射部分。本阶段(Stage 3)将基于 Lambert 分布对环境贴图进行无权重预过滤,生成用于漫反射计算的环境数据。与高光反射的方向性不同,漫反射是光线在粗糙表面的均匀散射,因此需要用更适合均匀分布的 Lambert 模型…

Spring与SpringBoot:从手动挡到自动挡的Java开发进化论

大家好&#xff01;我是程序员良辰&#xff0c;今天我们来聊聊Java开发界的两位"重量级选手"&#xff1a;Spring 和 SpringBoot。它们之间的关系就像手动挡汽车和自动挡汽车——一个给你完全的控制权但操作复杂&#xff0c;一个让你轻松上路但保留了切换手动模式的能…

1.4.Vue 的模板事件

Vue 的模板事件1. 最常见和推荐的做法。将复杂的逻辑封装在 methods 中。<!-- ✅ 正确&#xff1a;调用 methods 中的方法 --> <button click"handleClick">点击我</button>new Vue({methods: {handleClick(event) {// 这里可以写任意语句if (this…

SQLite 子查询详解

SQLite 子查询详解 引言 SQLite 是一种轻量级的数据库&#xff0c;以其简单、易用和跨平台而著称。在数据库查询中&#xff0c;子查询是一个非常重要的概念&#xff0c;它允许我们在查询中使用查询结果。本文将详细讲解 SQLite 中的子查询&#xff0c;包括其定义、用法以及在实…

可以组成网络的服务器 - 华为OD统一考试(JavaScript 题解)

题目描述 在一个机房中,服务器的位置标识在n*m的整数矩阵网格中,1表示单元格上有服务器,0表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网,请你统计机房中最大的局域网包含的服务器个数。 输入描述 第一行输入两个正整数,…

redis,MongoDB等未授权访问靶场复现

redis未授权访问在docker中启动vulhub对应的靶场目录&#xff1a;cd /vulhub-master/redis/4-unacc在kali上安装redis程序进行服务连接安装redis apt-get install redis redis链接 redis-cli -h IP -p 端口输入info可以查看信息接下来我们使用redis-rogue-server来获取命令执行…

设计模式:代理模式 Proxy

目录问题解决方案结构代码代理是一种结构型设计模式&#xff0c;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许在将请求提交给对象前后进行一些处理。 问题 为什么要控制对于某个对象的访问呢&#xff1f; 举个例子&#xff1a; 有这样一…

Linux零基础Shell教学全集(可用于日常查询语句,目录清晰,内容详细)(自学尚硅谷B站shell课程后的万字学习笔记,附课程链接)

此文章为学习了 尚硅谷B站课程 后的学习笔记 【尚硅谷】Shell脚本从入门到实战_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hW41167NW/?spm_id_from333.337.search-card.all.click&vd_source68e0bbe20c8b1102b59ced40f67db628注意&#xff1a;需要先学Linux基础…

GitLab 中的分支和标签的定义及操作

&#xff08;一&#xff09;GitLab 中的分支和标签的定义及操作 1. 分支&#xff08;Branch&#xff09; 定义&#xff1a; 分支是代码仓库中的独立开发路径&#xff0c;允许你在不影响主线&#xff08;通常是 main 或 master 分支&#xff09;的情况下&#xff0c;进行实验、开…

第2章 cmd命令基础:常用基础命令(3)

Hi~ 我是李小咖&#xff0c;主要从事网络安全技术开发和研究。 本文取自《李小咖网安技术库》&#xff0c;欢迎一起交流学习&#x1fae1;&#xff1a;https://imbyter.com 本节介绍的命令有显示系统信息&#xff08;systeminfo&#xff09;、启动指定程序&#xff08;start&am…

RabbitMQ 发送方确认的两大工具 (With Spring Boot)

核心概念解析 发布者确认机制的核心思想是&#xff1a;将消息投递的可靠性从“尽力而为”提升为“契约保证”。生产者不再是“发后不理”&#xff0c;而是与 Broker 建立一个双向的沟通渠道。 在 Spring AMQP 的封装下&#xff0c;这个机制主要由两个回调接口实现&#xff1a; …

KONG API Gateway中的核心概念

在使用Kong API Gateway&#xff08;API网关&#xff09;时&#xff0c;理解其核心概念是掌握其工作原理的基础。这些概念既体现了Kong的设计哲学&#xff0c;也决定了它如何适配复杂的API管理场景&#xff08;如微服务、多团队协作等&#xff09;。本文将系统梳理Kong的核心概…

如何解决pip安装报错ModuleNotFoundError: No module named ‘jupyterlab’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘jupyterlab’问题 摘要 在开发过程中&#xff0c;我们经常会遇到各种模块安装的问题&#xff0c;尤其是在使用PyCharm时&#xff0c;经常会遇到pip install时的…

3 运算符与表达式

运算符&#xff1a;对字面量或者变量进行操作的符号 表达式&#xff1a;用运算符把字面量或者变量连接起来符合java语法的式子就可以称作表达式不同运算符连接的表达式体现的是不同类型的表达式int a 10; int b 20; int c a b;&#xff1a;运算符&#xff0c;并且是算术运算…

MySQL的单行函数:

目录 函数的理解&#xff1a; MySQL的内置函数及分类&#xff1a; 单行函数&#xff1a; 数值函数&#xff1a; 基本函数&#xff1a; 角度与弧度互换函数&#xff1a; 三角函数&#xff1a; 指数与对数&#xff1a; 进制转换&#xff1a; 字符串函数&#xff1a; 日…

设计模式(二十一)行为型:状态模式详解

设计模式&#xff08;二十一&#xff09;行为型&#xff1a;状态模式详解状态模式&#xff08;State Pattern&#xff09;是 GoF 23 种设计模式中的行为型模式之一&#xff0c;其核心价值在于允许一个对象在其内部状态改变时改变其行为&#xff0c;使得对象看起来像是修改了它的…

深入理解 Doris Compaction:提升查询性能的幕后功臣

在 Doris 的数据存储与查询体系里&#xff0c;Compaction 是保障查询效率、优化存储结构的关键机制。如果你好奇 Doris 如何在高频写入后仍能高效响应查询&#xff0c;或是想解决数据版本膨胀带来的性能问题&#xff0c;这篇关于 Compaction 的深度解析值得收藏 &#x1f447; …

css 实现虚线效果的多种方式

使用边框实现虚线 通过设置元素的边框样式来实现虚线效果。以下为示例代码: .dashed {border: 1px dashed black; }使用 CSS 伪元素实现虚线 使用伪元素来模拟虚线的效果。以下为示例代码: .dashed::before {content: "";display: block;height: 1px;border-bo…

深入剖析 RocketMQ 分布式事务:原理、流程与实践

Apache RocketMQ 是一种分布式消息队列系统&#xff0c;支持分布式事务消息&#xff0c;以确保在分布式系统中数据的一致性。它通过一种基于两阶段提交(2PC)的机制结合补偿逻辑来实现分布式事务的最终一致性。以下是对 RocketMQ 分布式事务的详细讲解&#xff0c;包括其核心概念…