前言
在數字化時代,擁有一個個人博客是技術愛好者展示成果、分享經驗的重要方式。本文將帶您從零開始,在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訪問、配置數據庫主從復制提高性能、設置定期備份保障數據安全等。