一、需求分析 1.前端需支持更大的訪問量,單台Web伺服器已無法滿足需求了,則需擴容Web伺服器; 2.雖然動態內容可交由後端的PHP伺服器執行,但靜態頁面還需要Web伺服器自己解析,那是否意味著多台Web伺服器都需要在各自的系統中都存有一份靜態頁面數據呢?那麼如果能將靜態頁面集中存放,所有Web服 ...
一、需求分析
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,設置管理員的用戶名密碼,點擊安裝
- 輸入用戶名密碼,即可進入博客網站的後臺頁面。
- 預設風格的博客頁面首頁,還是比較好看滴、
8.配置DNS負載均衡
購買了單獨功能變數名稱後,在後臺控制面板中添加兩條A記錄,就可以達到負載均衡。
到這裡基於LAMP+NFS架構的雙Web伺服器、動靜分離網站就搭建完成了。
雙WEB伺服器架構的好處在於如果有一臺伺服器宕機不會是整個網站癱瘓。
NFS共用存儲的好處在於,DNS負載均衡後,不論用戶被分配到哪台主機上,都能看到相同的頁面得到相同的結果。