LAMP+NFS+DNS搭建wordpress

架構簡介:
這裏其實就是使用的LAMP+NFS組合,將結構化數據存儲在mysql數據庫服務器中(例如論壇用戶數據,文字內容等等),非結構化數據(例如附件數據,多媒體文件)存儲在NFS服務器上的文件系統中;其具體架構爲:2臺web服務器,1臺NFS服務器,1臺mysql服務器,1臺DNS服務器;如下圖所示

LAMP+NFS+DNS搭建wordpress
web服務器1:172.16.20.241,CentOS6
web服務器2:172.16.20.242,CentOS6
DNS服務器:172.16.20.244,CentOS6
mysql服務器:172.16.20.243,CentOS7
NFS服務器:172.16.20.245,CentOS7

具體配置:
1、NFS服務器配置,172.16.20.245:

[root@localhost ~]# yum install  nfs-utils -y
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# mkdir /web          // 創建一個目錄用於存放wordpress並導出
[root@localhost ~]# unzip wordpress-4.7.4-zh_CN.zip
[root@localhost ~]# cp -r wordpress 
[root@localhost ~]# vim /etc/exports
/web/wordpress    172.16.20.241(rw,no_root_squash) 172.16.20.242(rw,no_root_squash)    // 導出wordpress目錄,並設置root用戶允許訪問,因爲必須要以root用戶的身份運行,才能安裝wordpress
[root@localhost ~]# chown -R :apache /web/wordpress      // 由於wordpress用於httpd服務,因此apache用戶需要有此目錄的讀寫權限
[root@localhost ~]# chmod -R g+rw /web/wordpress
[root@localhost ~]# systemctl restart nfs        // 重啓服務使exports導出的目錄生效
[root@localhost ~]# showmount -e 172.16.20.245    //  使用此命令可以查看目標主機已導出的目錄
Export list for 172.16.20.245:
/web/wordpress 172.16.20.242,172.16.20.241
[root@localhost ~]# 

2、mysql服務器配置,172.16.20.243:

[root@localhost ~]# yum install mysql-server -y  //這裏使用rpm包簡易安裝,更專業的做法是使用二進制格式安裝,將mysql數據存放到一個單獨的磁盤中,便於管理和容災
[root@localhost ~]# mysql
mysql> create database web;     //創建wordpress用的數據庫
Query OK, 1 row affected (0.00 sec)

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> grant all privileges on web.* to 'user1'@'%' identified by 'redhat';     //給web數據庫授權一個專用用戶user1並設置密碼,這裏可能會有人想,直接用root用戶就行了;但是這樣是不安全的,而且rpm包安裝的mysql默認是禁止root用戶遠程登錄,並且直接以root用戶登陸數據庫也非常的不安全
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;    //手動刷新權限表,使新作出的更改立即生效
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
+-----------------------+-------+-------------------------------------------+
| host                  | user  | password                                  |
+-----------------------+-------+-------------------------------------------+
| localhost              | root  |                                           |
| localhost.localdomain | root  |                                           |
| 127.0.0.1             | root  |                                           |
| localhost             |       |                                           |
| localhost.localdomain |       |                                           |
| %                     | user1 | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
+-----------------------+-------+-------------------------------------------+
6 rows in set (0.00 sec)
// 這裏可以看出我們新建的user1用戶已經生效了
mysql> 

3、DNS服務器配置,172.16.20.244:

[root@localhost ~]# yum install bind -y
[root@localhost ~]# vim /etc/named.ca
修改以下選項
listen-on port 53 { 172.16.20.244; 127.0.0.1; };
allow-query { any; };
dnssec-enable no;
dessec-validation no;
[root@localhost ~]# vim /etc/named.rfc1912.zones
添加如下行
zone "gumpti.com" IN {
              type master;
                            file "gumpti.com.zone";
};
//  添加一個主區域
[root@localhost ~]# vim /var/named/gumpti.com.zone
$TTL 1D
$ORIGIN gumpti.com.
@             IN              SOA             ns1.gumpti.com.     admin.gumpti.com   (
                                                                                                          2017120201
                                                                                                            1M
                                                                                                            5M
                                                                                                            7D
                                                                                                            1D )
                                 IN              NS               ns1.gumpti.com.
                                 IN              NS               www.gumpti.com.
ns1           IN              A                  172.16.20.244
www         IN              A                  172.16.20.241
www         IN              A                  172.16.20.242
[root@localhost ~]# service named start
[root@localhost ~]# dig -t A www.gumpti.com @172.16.20.244         //查看A記錄是否生效

; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> -t A www.gumpti.com @172.16.20.244
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 215
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.gumpti.com.            IN  A

;; ANSWER SECTION:
www.gumpti.com.     86400   IN  A   172.16.20.241
www.gumpti.com.     86400   IN  A   172.16.20.242

;; AUTHORITY SECTION:
gumpti.com.     86400   IN  NS  www.gumpti.com.
gumpti.com.     86400   IN  NS  ns1.gumpti.com.

;; ADDITIONAL SECTION:
ns1.gumpti.com.     86400   IN  A   172.16.20.244

;; Query time: 24 msec
;; SERVER: 172.16.20.244#53(172.16.20.244)
;; WHEN: Wed Dec 06 15:11:42 CST 2017
;; MSG SIZE  rcvd: 123

// 再執行一次dig命令查看兩條A記錄的輪詢效果是否生效
[root@localhost ~]# dig -t A www.gumpti.com @172.16.20.244 

; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> -t A www.gumpti.com @172.16.20.244
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27457
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.gumpti.com.            IN  A

;; ANSWER SECTION:
www.gumpti.com.     86400   IN  A   172.16.20.242
www.gumpti.com.     86400   IN  A   172.16.20.241

;; AUTHORITY SECTION:
gumpti.com.     86400   IN  NS  ns1.gumpti.com.
gumpti.com.     86400   IN  NS  www.gumpti.com.

;; ADDITIONAL SECTION:
ns1.gumpti.com.     86400   IN  A   172.16.20.244

;; Query time: 0 msec
;; SERVER: 172.16.20.244#53(172.16.20.244)
;; WHEN: Wed Dec 06 15:13:24 CST 2017
;; MSG SIZE  rcvd: 123

[root@localhost ~]# 

4、配置WEB服務器1,172.16.20.241:

[root@localhost ~]# showmount -e 172.16.20.245
Export list for 172.16.20.245:
/web/wordpress 172.16.20.242,172.16.20.241
[root@localhost /]# mkdir /www/wordpress -pv
[root@localhost ~]# mount -t nfs 172.16.20.245:/web/wordpress /www/wordpress/  
//  掛載NFS服務器172.16.20.245導出的/web/wordpress到本地的/www/wordpress目錄
[root@localhost ~]# yum install httpd php php-mysql -y
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
修改如下行
DocumentRoot "/www/wordpress/"
<Directory "/www/wordpress/">
[root@localhost ~]# cp /www/wordpress/wp-config-sample.php /www/wordpress/wp-config.php
[root@localhost ~]# vim /www/wordpress/wp-config.php
// 修改wordpress的配置文件
define('DB_NAME', 'web');     // 指定wordpress使用的數據庫爲web數據庫
define('DB_USER', 'user1');   // 指定wordpress使用的連接數據庫的用戶爲user1
define('DB_PASSWORD', 'redhat');   // 指定wordpress使用的用戶user1的密碼
define('DB_HOST', '172.16.20.243');   // 指定wordpress使用的數據庫的服務器IP
[root@localhost ~]# service httpd start

5、配置WEB服務器2,172.16.20.242:

[root@localhost ~]# showmount -e 172.16.20.245
Export list for 172.16.20.245:
/web/wordpress 172.16.20.242,172.16.20.241
[root@localhost /]# mkdir /www/wordpress -pv
[root@localhost ~]# mount -t nfs 172.16.20.245:/web/wordpress /www/wordpress/  
//  掛載NFS服務器172.16.20.245導出的/web/wordpress到本地的/www/wordpress目錄
[root@localhost ~]# yum install httpd php php-mysql -y
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
修改如下行
DocumentRoot "/www/wordpress/"
<Directory "/www/wordpress/">
[root@localhost ~]# service httpd start
// 已經在WEB1上修改過wordpress的配置文件,這裏WEB1和WEB2都是掛載的NFS服務器上的wordpress目錄,使用的同一份wordpress文件

6、查看配置效果
將客戶端主機的DNS服務器設置爲172.16.20.244
然後在瀏覽器中輸入地址www.gumpti.com
LAMP+NFS+DNS搭建wordpress
成功顯示wordpress界面,會提示需要安裝,安裝並註冊一個管理員賬號,然後進入管理界面(實驗中我註冊的管理員賬號爲181)
LAMP+NFS+DNS搭建wordpress
點擊“用戶”按鈕,添加一個用戶(實驗中我添加的是157)
然後發佈幾篇文章
LAMP+NFS+DNS搭建wordpress
保存後登陸另一臺服務器172.16.20.242就可以查看到wordpress頁面中有181用戶發佈的文章
LAMP+NFS+DNS搭建wordpress

也可以使用新添加的用戶157登陸,也可以看到文章的發佈

以上在WEB1上安裝了wordpress併發布了文章,通過WEB2可以成功訪問並看到相同的內容,並且可以使用不同的賬號在WEB2中登陸,說明實驗已經成功。

總結
LAMP+NFS的架構比較簡單,但在實際生產環境中使用的並不多,更實用的是分佈式文件系統而不是NFS,NFS性能有限,只是在小公司在過渡期中使用。
此次實驗做的比較匆忙:
1、關於NFS導出的wordpress權限問題並沒有做太多的研究
2、在WEB2中登陸後,網頁地址依舊會跳轉到WEB1,這裏是還沒有考究出原因,需要繼續學習
3、DNS也只配置了正向解析域,沒有配置反向解析域
後續再來繼續填坑。
寫的比較潦草,如有遺漏錯誤和爭議之處,歡迎大家的批評指正和討論,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章