
一、需求分析
1.前端需支援更大的通路量,單台Web伺服器已無法滿足需求了,則需擴容Web伺服器;
2.雖然動态内容可交由後端的PHP伺服器執行,但靜态頁面還需要Web伺服器自己解析,那是否意味着多台Web伺服器都需要在各自的系統中都存有一份靜态頁面資料呢?那麼如果能将靜态頁面集中存放,所有Web伺服器都來集中地取檔案,對于檔案的一緻性就有了保障,這個集中地就叫做“檔案共享伺服器”;
二、需求實作:
1.web1充當http伺服器和DNS解析伺服器,用戶端到web1和web2的請求,如果是靜态資源請求通過php主機的NFS服務挂載的存儲傳回結果
2.web1和web2對于用戶端動态資源請求都反向代理到後端php伺服器進行執行後傳回結果
3.web1和web2實作DNS輪詢,用戶端通路部落格網站是負載均衡的。
4.建立wordpress部落格
5.資料庫存儲wordpress部落格的各種資料
三、架構圖
四、步驟概述
1.部署LAMP環境、配置NFS伺服器
2.web1、web2、php伺服器全部挂載NFS共享目錄為網站根目錄
3.配置httpd實作動靜分離
4.配置DNS實作負載均衡
五、詳細過程
1.web1、web2伺服器編譯安裝Apache
# 安裝依賴包
yum groupinstall "development tools"
yum install openssl-devel expat-devel pcre-devel
#
# 解壓檔案
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.0.tar.gz
tar xvf httpd-2.4.27.tar.bz2
cp -r apr-1.6.2 httpd-2.4.27/srclib/apr
cp -r apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
#
# 編譯安裝
cd httpd-2.4.27/
./configure \
--prefix=/app/httpd24 \
--sysconfdir=/etc/httpd24 \
--enable-so --enable-ssl \
--enable-rewrite --with-zlib \
--with-pcre --with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
#
make && make install
#
#配置環境變量
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:$PATH
. /etc/profile.d/lamp.sh
#
# 啟動服務
apachectl start
2.資料庫伺服器二進制安裝mariadb
# 解壓檔案
tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
#
# 建立軟連接配接,mariadb在/usr/local下必須名為mysql,可以建立軟連接配接,可以改名
ln -s mariadb-10.2.8-linux-x86_64/ mysql
#
# 建立使用者
useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql
cd mysql/
#
# 初始化資料庫
scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql
#
# 建立配置檔案
mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf
#
# 修改配置檔案,指定資料庫存放路徑
vim /etc/mysql/my.cnf
[mysqld]
datadir = /app/mysqldb 在mysqld下添加這三行
innodb_file_per_table = ON
skip_name_resolve = ON
#
# 複制啟動腳本,添加開機自動啟動
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
service mysqld start
#
# 建立日志目錄
mkdir /var/log/mariadb
chown mysql /var/log/mariadb/
#
#添加環境變量
vim /etc/profile.d/lamp.sh
PATH=/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
#
#調用安全加強腳本,加強資料庫。漢字為每一項的翻譯
mysql_secure_installation
是否設定root密碼
輸入密碼
确認密碼
是否設定匿名使用者
是否允許root遠端登入
删除test資料庫
現在是否生效
3.PHP應用伺服器編譯安裝PHP7
# 安裝依賴包
yum install libxml2-devel bzip2-devel libmcrypt-devel gcc openssl-devel
tar xvf php-7.1.7.tar.bz2
#
#編譯安裝
cd php-7.1.7.tar.bz2
./configure \
--prefix=/app/php \
--enable-mysqlnd \ #mysqlnd 指明Mysql不再本地
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \ #用FPM模式
--with-mcrypt \
--with-config-file-path=/etc/php \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2
#
# 建立PHP配置檔案
mkdir /etc/php/
cp php.ini-production /etc/php/php.ini
#
# 複制服務腳本,添加開機自動啟動
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig --list php-fpm
#
# 建立fpm的配置檔案
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cd /app/php/etc/php-fpm.d/
cp www.conf.default www.conf
vim www.conf
listen = 172.18.68.23:9000 #設定監聽的IP,注釋監聽所有, 隻寫端口監聽鄋
;listen.allowed_clients = 127.0.0.1. #把這項注釋掉,分号為注釋
systemctl start php-fpm
4.配置NFS伺服器
NFS伺服器的配置特别簡單,最重要的時配置完後就趕緊将NFS共享目錄挂載至web1、web2、PHP伺服器的網站根目錄。
mkdir -pv /app/nfs/web #建立共享目錄,此目錄為網站的根目錄,實作統一管理。
vim /etc/exports
/app/nfs/web 172.18.0.0/16(ro,sync,root_squash,no_all_squash)
# 允許172.18.0.1網段挂載NFS共享,如果要提高安全性應該控制到主機
- Web1伺服器
mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs #/app/httpd24/htdocs為httpd.conf中的根目錄
- Web2伺服器
mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs #/app/httpd24/htdocs為httpd.conf中的根目錄
- PHP應用伺服器
mkdir /app/httpd24/htdocs #PHP沒有根目錄,/app/httpd24/htdocs為NFS的挂載點。 mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs
5.配置Apache實作動靜分離
- 加載子產品
vim /etc/httpd24/httpd.conf LoadModule proxy_module modules/mod_proxy.so #取消兩行的注釋,加載兩子產品 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
-
動靜分離
在配置檔案的末尾追加這四行,利用代理将所有以.php結尾的檔案交給PHP伺服器處理,實作動靜分離
vim /etc/httpd24/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps ProxyRequests Off 關閉正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1 #要確定PHP伺服器中有這個目錄,(在NFS中建立這個目錄,且将NFS挂載至此目錄。) apachectl restart
6.部署wordpress部落格
因為web1、web2、PHP伺服器都使用NFS共享的目錄作為根目錄,是以隻需要将wordpress部落格系統部署在NFS伺服器上即可讓所有伺服器得到同樣的資料。
- 安裝部落格程式
# 解壓部落格程式 tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /app/httpd24/htdocs cd /app/httpd24/htdocs mv wordpress/ blog/ # 建立配置檔案 cd /app/httpd24/htdocs/blog/ cp wp-config-sample.php wp-config.php
-
配置資料庫
wordpress需要資料庫,是以在此先建立一個wordpress專用的資料庫,且建立授權使用者。
mysql -uroot -pcentos create datebase wpdb; grant all on wpdb.* to wpuser@'172.18.68.%' identified by 'centos';
- 配置wordpress連接配接資料庫
# 編輯配置檔案,寫入建立的IP、資料庫、與使用者性 vim wp-config.php define('DB_NAME', 'wpdb'); # /** MySQL資料庫使用者名 */ define('DB_USER', 'wpuser'); # /** MySQL資料庫密碼 */ define('DB_PASSWORD', 'centos'); # /** MySQL主機 */ define('DB_HOST', 'localhost');
7.登入測試
- 浏覽器打開, http://IP,設定管理者的使用者名密碼,點選安裝
部署LAMP+NFS實作雙Web伺服器負載均衡一、需求分析二、需求實作:三、架構圖四、步驟概述五、詳細過程 - 輸入使用者名密碼,即可進入部落格網站的背景頁面。
部署LAMP+NFS實作雙Web伺服器負載均衡一、需求分析二、需求實作:三、架構圖四、步驟概述五、詳細過程 - 預設風格的部落格頁面首頁,還是比較好看滴、
部署LAMP+NFS實作雙Web伺服器負載均衡一、需求分析二、需求實作:三、架構圖四、步驟概述五、詳細過程
8.配置DNS負載均衡
購買了單獨域名後,在背景控制台中添加兩條A記錄,就可以達到負載均衡。
到這裡基于LAMP+NFS架構的雙Web伺服器、動靜分離網站就搭建完成了。
雙WEB伺服器架構的好處在于如果有一台伺服器當機不會是整個網站癱瘓。
NFS共享存儲的好處在于,DNS負載均衡後,不論使用者被配置設定到哪台主機上,都能看到相同的頁面得到相同的結果。