架構簡介:
這裏其實就是使用的LAMP+NFS組合,將結構化數據存儲在mysql數據庫服務器中(例如論壇用戶數據,文字內容等等),非結構化數據(例如附件數據,多媒體文件)存儲在NFS服務器上的文件系統中;其具體架構爲:2臺web服務器,1臺NFS服務器,1臺mysql服務器,1臺DNS服務器;以下圖所示php
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,CentOS7mysql
具體配置:
一、NFS服務器配置,172.16.20.245:web
[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 ~]#
二、mysql服務器配置,172.16.20.243:sql
[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>
三、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 ~]#
四、配置WEB服務器1,172.16.20.241:apache
[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
五、配置WEB服務器2,172.16.20.242:vim
[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文件
六、查看配置效果
將客戶端主機的DNS服務器設置爲172.16.20.244
而後在瀏覽器中輸入地址www.gumpti.com
成功顯示wordpress界面,會提示須要安裝,安裝並註冊一個管理員帳號,而後進入管理界面(實驗中我註冊的管理員帳號爲181)
點擊「用戶」按鈕,添加一個用戶(實驗中我添加的是157)
而後發佈幾篇文章
保存後登錄另外一臺服務器172.16.20.242就能夠查看到wordpress頁面中有181用戶發佈的文章
瀏覽器
也可使用新添加的用戶157登錄,也能夠看到文章的發佈安全
以上在WEB1上安裝了wordpress併發布了文章,經過WEB2能夠成功訪問並看到相同的內容,而且可使用不一樣的帳號在WEB2中登錄,說明實驗已經成功。服務器
總結:LAMP+NFS的架構比較簡單,但在實際生產環境中使用的並很少,更實用的是分佈式文件系統而不是NFS,NFS性能有限,只是在小公司在過渡期中使用。這次實驗作的比較匆忙:一、關於NFS導出的wordpress權限問題並無作太多的研究二、在WEB2中登錄後,網頁地址依舊會跳轉到WEB1,這裏是尚未考究出緣由,須要繼續學習三、DNS也只配置了正向解析域,沒有配置反向解析域後續再來繼續填坑。寫的比較潦草,若有遺漏錯誤和爭議之處,歡迎你們的批評指正和討論,謝謝。