編譯安裝LAMP-------動靜分離
動靜分離能有效提升站點訪問效率,此時apache工作在反向代理模式。Php不在作爲apache的模塊。而是以獨立服務器的方式運行。兩者之間通過fcgi機制建立通訊。本文將以安裝discuz方式說明其工作特性。下圖爲其工作流程的簡單描述:
首先apache監聽主進程預先啓動多個子進程,當用戶請求到達時,主進程負責將請求接進來然後調用子進程處理請求,若爲靜態文件則直接有子進程進行I/O操作讀取數據,處理請求,構建響應報文,並將結果交由監聽主進程,主進程再將結果響應給客戶端。若請求報文爲動態的php頁面,則子進程通過fcgi將請求交給php服務器。同樣的機制,php調用子進程執行php程序(含有對數據庫的讀寫等操作)php與數據庫的通信與前者類似。等到數據處理完畢。Php子進程將處理結果交給主進程,主進程將結果送給httpd子進程,httpd子進程再將處理結果交給 監聽主進程 最終將結果 響應給客戶端。
以下爲實驗拓撲圖:
編譯安裝httpd服務器,這裏採用httpd-2.4並使用event工作模型
首先源代碼編譯安裝apr(apache可移植運行時環境) 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
接下來就可以編譯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
編輯配置文件:
主配置文件
Vim /etc/httpd/http.conf
註釋掉DocumentRoot我們將以虛擬主機的形式實現
Event工作場景模塊 啓用
添加編碼方法
啓用虛擬主機
編輯虛擬主機配置文件:
開啓當前虛擬主機的php代理
創建/www/hefeng 目錄
解壓Discuz壓縮文件放入此目錄中並賦予777權限
至此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
修改監聽端口
修改爲apache裏設置的主機監聽套接字
Mkdir -pv /www/hefeng/
將Discuz解壓的文件copy至此目錄並給777權限
啓動php-fpm查看監聽端口 service php-fpm start
配置mariadb(mydql的克隆版組織)數據庫服務器:
這裏以二進制包進行安裝
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
爲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:
環境檢測:
全新安裝:
數據庫選項:
安裝完成:
再將安裝後生成的文件copy一份至apache主機網站根目錄 否則不現實靜態文件(由於設計網站本身並不是讀寫分離架構的)
Scp -r /www/hefeng/upload 172.16.101.34:/www/hefeng/
完成測試:
至此整個過程結束