實驗目標:php
1,兩臺前端apache和php都掛載nfs文件系統中的php程序。html
2,mysql 爲單獨一臺服務器,爲php頁面程序提供數據庫存儲前端
3,靜態頁面文件都放在nfs服務器上mysql
4,須要dns輪循爲兩臺前端服務器分配訪問請求linux
缺點: 壓力都在文件存儲服務器上web
優勢:不用考慮兩臺web服務器靜態頁面一致性的問題。sql
操做大致步驟:shell
1,兩臺web服務器:掛載nfs。編譯安裝apache,添加支持fcgi協議的模塊,把php請求都代理到php服務器,站點根目錄爲掛載的文件。根據實際狀況調整進程啓動數量。數據庫
2,nfs : 在/etc/exprots 配置文件中寫明,容許兩臺apache和php服務器訪問本機的nfs服務apache
3,mysql: 須要受權一個用戶從php服務器訪問mysql中的一個數據庫,此庫給discuz使用。
4,php:編譯安裝以fpm方式啓動進程,進程監聽本機的通訊ip。根據實現狀況調整進程數量。
使用的軟件級版本
數據庫 :mariadb-5.5.36-linux-x86_64.tar.gz
web:httpd-2.4.9.tar.bz2 apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2
php :php-5.4.26.tar.bz2
nfs 是centos6.5系統發行時安裝的版本。
===================================================================
NFS配置,/webdata是存儲數據的位置
# vim /etc/exprots 編輯nfs配置文件加入如下一行
/webdata 172.16.2.10(rw,no_root_squash) 172.16.2.15(rw,no_root_squash) 172.16.2.11(rw,no_root_squash)
# service nfs start 啓動nfs服務
把discuz代碼upload目錄中的全部傳到/webdata目錄下。
====================================================================
php服務器配置
編譯php時依賴的開發環境,位於系統盤和和epel安裝源。
「Desktop Platform Development」 包組
bzip2-devel php用到的壓縮功能
libmcrypt-devel php用到的加密功能
libmcrypt
mhash
mhash-devel
# yum -y groupinstall "Desktop Platform Development"
# yum -y install bzip2-devel
# yum -y install libmcrypt-devel
# tar -xvf php-5.4.26.tar.bz2
# cd php-5.4.26
# ./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --enable-sockets --enable-fpm --with-bz2 --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-mcrypt
# make && make install
爲php提供配置文件和 Sysv 腳本文件。這些文件的模板在php解壓後的源代碼包下。
[root@wukui php-5.4.26]# cp php.ini-production /etc/php.ini 複製主配置文件的模板到/etc下,位於源代碼目錄中。
[root@wukui php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php 複製服務控制腳本模板到/etc/rc.d/init.d下
[root@wukui php-5.4.26]# chmod u+x /etc/rc.d/init.d/php
[root@wukui php-5.4.26]# chkconfig --add php 添加到init的控制下
[root@wrukui php-5.4.26]# chkconfig php on 設定php開機自動啓動
[root@wukui php-5.4.26]# cp /usr/local/php/etc/php-fpm.conf.default /usr/lcocal/php/etc/php.fpm.conf 提供php的fpm工做模式下的配置文件。
[root@wukui php-5.4.26]# vim /usr/local/php/etc/php-fpm.conf 修改配置文件
listen = 172.16.2.11:9000 修改php監聽的ip地址
pm.max_children = 20 容許最大請求的併發數,由httpd請求的。
pm.start_servers = 5 服務啓動後開啓多少個進程
pm.min_spare_servers = 2 最少空閒多少個進程
pm.max_spare_servers = 10 最多空閒多少個進程
pid = /usr/local/php/var/run/php-fpm.pid 指定php的PID文件所在位置。這條要寫在[global]下面第一行。
[root@wukui php-5.4.26]# service php start 啓動php進程
[root@wukui php-5.4.26]# mkdir /webdata
[root@wukui php-5.4.26]# mount -t nfs 172.16.2.14:/webdata /webdata 掛載nfs,用來存儲php頁面。
[root@wukui php-5.4.26]# echo " mount -t nfs 172.16.2.14:/webdata /webdata" /etc/rc.d/rc.local 讓系統啓動後自動執行掛載腳本
[root@wukui php-5.4.26]# chown -R nobody /webdata 修改webdata目錄的全部者爲nobody,nobody是php進程運行的用戶。
====================================================================
apache服務器配置
# mount -t nfs 172.16.2.14:/webdata /webdata 掛載nfs
# echo " mount -t nfs 172.16.2.14:/webdata /webdata" /etc/rc.d/rc.local 讓系統啓動後自動執行掛載腳本
# yum grouplist 查看當前系統是否安裝了編譯時所需的開發環境。須要如下兩個開發包組
Development tools
Server Platform Development
httpd程序依賴於apr和apr-util
apr : apache portable runtime,apache可移值運行環境。至關於httpd運行於各平臺的虛擬機,爲了httpd跨平臺開發不那麼複雜,和httpd底層實現方法統一。
httpd-2.4依賴1.4以上版本的apr。
# rpm -qa | grep apr 查看當前系統是否安裝了apr和apr-util。若是安裝會把apr的包名顯示出來,包名包含了版本信息。
下載所須要的軟件包
[root@wukui httpd]# ls
apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 httpd-2.4.9.tar.bz2
安裝apr--------------------------------------------------------
[root@wukui httpd]# mv /etc/httpd /etc/httpd.bak 備份以前httpd的配置文件,此步操做看狀況而定。
[root@wukui httpd]# tar -xf apr-1.5.0.tar.bz2
[root@wukui httpd]# cd apr-1.5.0
[root@wukui apr-1.5.0]# ./configure --prefix=/usr/local/apr 安裝到/usr/local/apr下是爲了避免和系統以前rpm安裝的包衝突。
[root@wukui apr-1.5.0]# make && make install
[root@wukui apr-1.5.0]# ls /usr/local/apr/bin/ 查看已安裝的apr二進制程序
[root@wukui apr-1.5.0]# ls /usr/local/apr/lib/ 查看apr的庫文件
安裝apr-util------------------------------------------------------------
解壓,並切換到解壓後的目錄
[root@wukui apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #指定安裝目錄 指定剛纔編譯好的apr路徑,由於apr-util是爲做apr的子功能運行的。
[root@wukui apr-util-1.5.3]# make && make install 編譯,編譯安裝
編譯apache操做-----------------------------------------------------------------------
[root@wukui httpd-2.4.9]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd/ --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-mpms-shared=all --with-mpm=event --enable-modules=all 配置安裝特性
[root@wukui httpd-2.4.9]# make && make install 編譯而且安裝vi
[root@wukui apache]# echo "export PATH=/usr/local/apach/bin:$PATH" >> /etc/profile.d/httpd.sh 修改PATH環境變量,讓shell能夠搜索到apache的命令
[root@wukui apache]# source /etc/profile.d/httpd.sh 讓剛設置的PATH環境變量在當前shell進程中生效
[root@wukui apache]# apachectl start 使用apachectl 啓動httpd服務
測試是否安裝成功
# vim /etc/httpd/httpd.con 編輯httpd的主配置文件
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 開啓fcgi協議支持
LoadModule proxy_module modules/mod_proxy.so 開啓代理支持
ServerName www.wukui.com:80 設定主機名
ProxyRequests off 關閉正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.2.11:9000/webdata/$1 只要是php文件都使用fcgi協議代理到php服務器。
DocumentRoot "/webdata/" 修改站點根目錄爲nfs
<Directory "/webdata/"> 修改對站點根目錄的控制標籤
DirectoryIndex index.html index.php 添加默認請求文件
AddType application/x-httpd-php .php 在<IfModule mime_module>標籤中加入,以支持php格式的文件。
AddType application/x-httpd-php-source .phps 同上
# httpd -t 測試配置文件是否有語法錯誤
# apache restart 重啓httpd服務
====================================================================
mysql配置
安裝mariadb ,二進制安裝。mysql數據庫文件存放在/data下。?data掛載的是一個邏輯卷,屬主屬組爲mysql。
[root@mysql /]# groupadd -r mysql
[root@mysql /]# useradd -s /sbin/nologin -g mysql -r mysql
[root@mysql wukui]# tar -xvf mariadb-5.5.36-linux-x86_64.tar.gz
[root@mysql wukui]# mv mariadb-5.5.36-linux-x86_64 /usr/local/
[root@mysql local]# ln -sv /usr/local/mariadb-5.5.36-linux-x86_64/ /usr/local/mysql
[root@mysql mysql]# cd /usr/local/mysql 切換到解壓後的目錄到
[root@mysql mysql]#chown -R mysql:mysql ./*
[root@mysql mysql]# scripts/mysql_install_db --user=mysql --datadir=/data 執行mysql腳本安裝配置。
[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf
修改配置文件如下幾個參數
thread_concurrency = 2 數據是cpu核心乘以2
datadir = /data 指定mysql數據庫文件存放的位置
[root@mysql mysql]# vim /etc/profile.d/mysql.sh 添加一環境變量
export PATH=/usr/local/mysql/bin:$PATH
[root@mysql mysql]# . /etc/profile.d/mysql.sh
[root@mysql mysql]# chown -R mysql ./*
[root@mysql mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql]# chmod u+x /etc/init.d/mysqld
[root@mysql mysql]# chkconfig --add mysqld
[root@mysql mysql]# chkconfig mysqld on
[root@mysql mysql]# service mysqld start
[root@mysql mysql]#mysql
MariaDB [(none)]> use mysql
MariaDB [mysql]> grant all on discuz.* to disadmin@172.16.2.11 identified by 'discuz'; 爲數據庫用戶disadmin受權在172.16.2.11主機上登錄,密碼爲 discuz
Query OK, 0 rows affected (0.34 sec)
MariaDB [mysql]> flush privileges; 刷新受權
Query OK, 0 rows affected (0.03 sec)
mysql配置完成
=============================================================
安裝discuz測試
在瀏覽器裏輸入httpd的訪問地址
==================================================================
第二個apache配置
# yum -y groupinstall "Development tools" 安裝所需的開發包組
# yum -y groupinstall "Server Platform Development"
# yum -y install pcre-devel
# tar -xvf apr-1.5.0.tar.bz2 安裝apr
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
# tar -xvf apr-util-1.5.3.tar.bz2 安裝apr-util
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
# tar -xvf httpd-2.4.9.tar.bz2 安裝apache
# cd apr-util-1.5.3
#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mpms-shared=all --with-mpm=event --enable-modules=all
# make && make install
# vim /etc/httpd/httpd.conf 修改主配置文件
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 啓用
LoadModule proxy_module modules/mod_proxy.so 啓用
ServerName www.wukui.com:80 設定主機名
ProxyRequests off 關閉正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.2.11:9000/webdata/$1 只要是php文件都使用fcgi協議代理到php服務器。
DocumentRoot "/webdata/" 修改站點根目錄爲nfs
<Directory "/webdata/"> 修改對站點根目錄的控制標籤
DirectoryIndex index.html index.php 添加默認請求文件
AddType application/x-httpd-php .php 在<IfModule mime_module>標籤中加入,以支持php格式的文件。
AddType application/x-httpd-php-source .phps 同上
# mount -t nfs 172.16.2.14:/webdata /webdata 掛載nfs
=================================================================
收尾工做,讓各個服務開機自動啓動,並掛載文件共享服務目錄。至此完成。