編譯安裝LAMP-------動靜分離

                           編譯安裝LAMP-------動靜分離


  動靜分離能有效提升站點訪問效率,此時apache工作在反向代理模式。Php不在作爲apache的模塊。而是以獨立服務器的方式運行。兩者之間通過fcgi機制建立通訊。本文將以安裝discuz方式說明其工作特性。下圖爲其工作流程的簡單描述:


wKiom1PrhhKgzxSMAAMnFMyeTUU339.jpg



首先apache監聽主進程預先啓動多個子進程,當用戶請求到達時,主進程負責將請求接進來然後調用子進程處理請求,若爲靜態文件則直接有子進程進行I/O操作讀取數據,處理請求,構建響應報文,並將結果交由監聽主進程,主進程再將結果響應給客戶端。若請求報文爲動態的php頁面,則子進程通過fcgi將請求交給php服務器。同樣的機制,php調用子進程執行php程序(含有對數據庫的讀寫等操作)php與數據庫的通信與前者類似。等到數據處理完畢。Php子進程將處理結果交給主進程,主進程將結果送給httpd子進程,httpd子進程再將處理結果交給 監聽主進程 最終將結果 響應給客戶端。

   以下爲實驗拓撲圖:



wKioL1Prh03QepmQAAEwhk-x7HU350.jpg


編譯安裝httpd服務器,這裏採用httpd-2.4並使用event工作模型

首先源代碼編譯安裝aprapache可移植運行時環境) apr-util 採用1.5的版本

apr的編譯選項:

./configure --prefix=/usr/local/apr-1.5
Make && make install
Apr-util的編譯選項:
./configure --prefix=/usr/local/apr-util-1.5 --with-apr=/usr/local/apr-1.5
Make && make install

wKiom1Prhl3BLwIYAAByqRUZb8o717.jpg


接下來就可以編譯httpd

httpd的編譯選項:

 
./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-modules=most
   --enable-mpms-shared=all 
   --with-mpm=event
編譯安裝:
Make &&  make  install



wKiom1PrhpCy0sySAABaI6PAQiY391.jpg


編輯配置文件:

主配置文件

Vim /etc/httpd/http.conf


wKioL1Prh8zyjlZeAABrcv2FSsc840.jpg

註釋掉DocumentRoot我們將以虛擬主機的形式實現


wKiom1Prht2BsWG4AADu8WA2tBo184.jpg

wKiom1PrhvWh_z3SAAA_FW6E0jU789.jpg

Event工作場景模塊 啓用

wKiom1PrhxXT-G3ZAADQoWLgAcY012.jpg

添加編碼方法


wKiom1Prh0WgCXqPAABUQiiZAV0383.jpg

啓用虛擬主機


編輯虛擬主機配置文件:

wKiom1Prh2XQxXE2AAF2FSGT5qY025.jpg


開啓當前虛擬主機的php代理

創建/www/hefeng 目錄

 

解壓Discuz壓縮文件放入此目錄中並賦予777權限

wKiom1Prh3_D2zFmAAENo6qJNis547.jpg

至此httpd服務器配置完畢

 

 

Php服務器配置

這裏採用php5.4

 

編譯選項配置

 

./configure
   --prefix=/usr/local/php5
   --with-mysql=mysqlnd
   --with-openssl
   --with-mysqli=mysqlnd
   --enable-mbstring
   --with-freetype-dir=/usr/local/freetype - ---->  請自行編譯安裝
   --with-jpeg-dir=/usr/local/jpeg  ----->  請自行編譯安裝
   --with-png-dir=/usr/local/png   ----->  請自行編譯安裝
   --with-zlib
   --with-libxml-dir=/usr
   --enable-xml
   --enable-sockets
   --enable-fpm
   --with-mcrypt
   --with-config-file-path=/etc
   --with-config-file-scan-dir=/etc/php.d 
   --with-bz2
編譯安裝:
Make && make install
後續配置
 
爲php提供配置文件:
cp php.ini-production /etc/php.ini
 
配置php-fpm
 
php-fpm提供SysV init腳本,並將其添加至服務列表:
cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
 
php-fpm提供配置文件:
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 
 
編輯php-fpm的配置文件:
vim /usr/local/php/etc/php-fpm.conf
配置fpm的相關選項爲你所需要的值,並啓用pid文件(如下最後一行):
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php/var/run/php-fpm.pid


 

修改監聽端口

wKiom1Prh7-jJGv9AACAiO2Q_Ug811.jpg



修改爲apache裏設置的主機監聽套接字

 

Mkdir -pv /www/hefeng/

 

Discuz解壓的文件copy至此目錄並給777權限

 

啓動php-fpm查看監聽端口 service php-fpm start


wKioL1PriPnjJU_aAAE-e-SaYZE676.jpg


配置mariadbmydql的克隆版組織)數據庫服務器:

這裏以二進制包進行安裝

 

 

tar xf mariadb-5.5.33-linux2.6-i686.tar.gz -C /usr/local
cd /usr/local/
ln -sv mariadb-5.5.33-linux2.6-i686  mysql
cd mysql 
 
chown -R mysql:mysql  .
scripts/mysql_install_db --user=mysql --datadir=/mydata/data
chown -R root  .
 
爲mysql提供主配置文件:
 
cd /usr/local/mysql
cp support-files/my-large.cnf  /etc/my.cnf


 

 

另外還需要添加如下行指定mysql數據文件的存放位置:

datadir = /mydata/data


wKioL1PriSTDaSkjAAD40dwuqsk070.jpg


mysql提供sysv服務腳本:

 

cd /usr/local/mysql

cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

chmod +x /etc/rc.d/init.d/mysqld

 

添加至服務列表:

chkconfig --add mysqld

 

啓動mysqld service mysqld start

 

創建數據庫和用戶 用來安裝Discuz

 

Create database discux;

Grant all on discux . * to discux@172.16.101.35 identified by hzm132;

Flush privileges;

 

開始安裝 Discuz

 

wKioL1PriUKQp3tJAAPQ2jzVtdE691.jpg

環境檢測:


wKioL1PriV3QPZFhAAIDrQ1Cw3g729.jpg


全新安裝:

wKiom1PriGORgo11AAGNrQtdArs795.jpg


數據庫選項:

wKiom1PriH3AG6yKAAIcSuqKlxM240.jpg



安裝完成:

wKioL1PribLgPpA3AAOVJi6ufyw678.jpg



 

   再將安裝後生成的文件copy一份至apache主機網站根目錄 否則不現實靜態文件(由於設計網站本身並不是讀寫分離架構的)

Scp -r /www/hefeng/upload 172.16.101.34:/www/hefeng/

完成測試:

wKioL1PridmiDCWyAAKm4H5AtjY304.jpg



至此整個過程結束



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