轉-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13編譯安裝過程

1、編譯安裝apachephp

一、解決依賴關係html

httpd-2.4.4須要較新版本的apr和apr-util,所以須要事先對其進行升級。升級方式有兩種,一種是經過源代碼編譯安裝,一種是直接升級rpm包。這裏選擇使用編譯源代碼的方式進行,它們的下載路徑http://apr.apache.org/mysql

(1) 編譯安裝aprlinux

# tar xf apr-1.4.6.tar.bz2
# cd apr-1.4.6
# ./configure --prefix=/usr/local/lamp/apr
# make && make installweb

apr的默認設置基本已經能夠知足咱們的需求,所以只須要經過--prefix指定咱們的安裝路徑
--enable-threads 支持線程
--disable-ipv6 禁用IPv6
注:源碼編譯安裝的apr只對以後要源碼編譯安裝的apache有用,對於系統上的其餘服務是不起做用的。sql

(2) 編譯安裝apr-util數據庫

# tar xf apr-util-1.5.2.tar.bz2
# cd apr-util-1.5.2
# ./configure --prefix=/usr/local/lamp/apr-util --with-apr=/usr/local/lamp/apr
# make && make installexpress

--prefix 指定apr-util的安裝路徑
--with-apr 指定apr的位置,不指定的話將會默認的去找系統上舊版本的aprapache

附:apache官方對APR的介紹:vim

The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries that provide a predictable and consistent interface to underlying platform-specific implementations. The primary goal is to provide an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.

(3) httpd-2.4.4編譯過程要依賴於pcre-devel軟件包,須要事先安裝。此軟件包系統光盤自帶,所以,找到並安裝便可。

二、編譯安裝httpd-2.4.4

首先下載httpd-2.4.4到本地,下載路徑爲http://httpd.apache.org/。然後執行以下命令進行編譯安裝過程:

# tar xf httpd-2.4.4.tar.bz2
# cd httpd-2.4.4
# ./configure --prefix=/usr/local/lamp/apache --sysconfdir=/etc/httpd/ --enable-so --enable-rewrite --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-apr=/usr/local/lamp/apr --with-apr-util=/usr/local/lamp/apr-util/
# make && make install

--prefix 指定apache的安裝路徑
--sysconfdir 指定apache配置文件的安裝路徑,默認的是在安裝路徑下conf目錄中
--enable-mods-shared 是否啓用共享模塊,all全部的、most大部分、few少部分的、reallyall真是全部的
--enable-mods-static 靜態方式,將模塊直接編譯到apache中,all全部的、most大部分、few少部分的、reallyall真是全部的
--enable-authn-dbm|anon|dbd|socache 啓動哪一種認證功能,默認啓用的是基於文件的認證功能,能夠經過--disable-authn-file禁用
--enable-so 支持DSO(動態共享模塊)功能,若是不支持此功能,php將沒法以模塊方式跟apache結合起來工做
--enable-ssl 啓動SSL的功能,不然沒法使用HTTPS
--enable-deflate 是一種經常使用的壓縮機制,可讓apache將用戶請求的數據壓縮後在返回給用戶,而瀏覽器也會將收到的數據解壓後再查看
--enable-proxy-fcgi 若是但願apache與php結合的時候是以fastcgi的方式工做的話,必需要設置此選項
--enable-mpms-shared 此選項在apache2.4版本以後纔有,MPM(多道處理模塊,默認狀況有prefork,worker,event幾種),在2.4中能夠將全部的都編譯進去,而後動態選擇加載,默認使用event
--with-mpm 明確的說明使用哪個爲默認的MPM
--enable-rewrite 支持URL重寫
--enable-cgi 支持CGI
--enable-cgid 表示CGI被線程方式的MPM使用,當你使用的是event或worker方式的MPM時,就應該啓用CGID

補充:

(1)構建MPM爲靜態模塊
在所有平臺中,MPM均可以構建爲靜態模塊。在構建時選擇一種MPM,連接到服務器中。若是要改變MPM,必須從新構建。爲了使用指定的MPM,請在執行configure腳本 時,使用參數 --with-mpm=NAME。NAME是指定的MPM名稱。編譯完成後,可使用 ./httpd -l 來肯定選擇的MPM。 此命令會列出編譯到服務器程序中的全部模塊,包括 MPM。

(2)構建 MPM 爲動態模塊

在Unix或相似平臺中,MPM能夠構建爲動態模塊,與其它動態模塊同樣在運行時加載。 構建 MPM 爲動態模塊容許經過修改LoadModule指令內容來改變MPM,而不用從新構建服務器程序。在執行configure腳本時,使用--enable-mpms-shared選項便可啓用此特性。當給出的參數爲all時,全部此平臺支持的MPM模塊都會被安裝。還能夠在參數中給出模塊列表。默認MPM,能夠自動選擇或者在執行configure腳本時經過--with-mpm選項來指定,而後出如今生成的服務器配置文件中。編輯LoadModule指令內容能夠選擇不一樣的MPM。


三、修改httpd的主配置文件,設置其Pid文件的路徑

編輯/etc/httpd/httpd.conf,添加以下行便可:
PidFile "/var/run/httpd.pid"

四、提供SysV服務腳本/etc/rc.d/init.d/httpd,內容以下:

#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/lamp/apache/bin/apachectl
httpd=${HTTPD-/usr/local/lamp/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}

stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d 10 $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=$?
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
fi
echo
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
exit 1
esac

exit $RETVAL

然後爲此腳本賦予執行權限:
# chmod +x /etc/rc.d/init.d/httpd

五、加入服務列表:
# chkconfig --add httpd

接下來就能夠啓動服務進行測試了。

六、將apache的相關命令所在路徑加入PATH環境變量中
(1)
# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lamp/apache/bin
# source ~/.bash_profile
(2)
# vim /etc/profile.d/httpd.sh
export PATH=$PATH:/usr/local/lamp/apache/bin
從新登陸生效

七、改變apache加載的模塊
編輯apache的主配置文件
# vim /etc/httpd/httpd.conf
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
重啓apache服務,經過httpd -M查看


httpd 2.4新特性:
一、MPM可於運行時裝載;
--enable-mpms-shared=all --with-mpm=event
二、Event MPM
三、異步讀寫
四、在每模塊及每目錄上指定日誌級別;
五、每請求配置;<If>, <ElseIf>, <Else>;
六、加強的表達式分析器;
七、毫秒級的KeepAlive Timeout;
八、基於域名的虛擬主機再也不須要NameVirtualHost指令;
九、下降了內存佔用;
十、支持在配置文件中使用自定義變量;

新增長的模塊:
mod_proxy_fcgi
mod_proxy_scgi
mod_proxy_express
mod_remoteip
mod_session
mod_ratelimit
mod_request
等等


2.4版本以前apache對於基於IP的訪問控制
Order allow,deny
allow from all

2.4中再也不支持此方法

2.4使用Require user
Require user USERNAME
Require group GRPNAME


Require ip IPADDR
Require not ip IPADDR
IP
NETWORK/NETMASK
NETWORK/LENGTH
NET

172.16.0.0/255.255.0.0 = 172.16.0.0/16 = 172.16

Require host HOSTNAME
HOSTNAME
DOMAIN

www.magedu.com
.magedu.com

容許全部主機訪問:
Require all granted

拒絕全部主機訪問:
Require all deny

八、使用ab命令測試apache服務器性能:

常見的壓力測試工具:
一、ab
二、http_load
三、webbench
四、siege

-c concurrency:一次性發起的請求個數,默認爲1
-i:測試時使用HEAD方法,默認爲GET
-k:啓用HTTP長鏈接請求方式
-n requests:發起的模擬請求個數;默認爲1個;請求數要大於等於併發鏈接數
-q:靜默模式,在請求數大於150個時不輸出請求完成百分比

# ab -c 500 -n 1000 http://www.a.com/index.html
輸出結果:
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.a.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software: Apache/2.4.12 對方的web服務器軟件和版本號
Server Hostname: www.a.com 主機名稱
Server Port: 80 端口

Document Path: /index.html 請求的文件
Document Length: 10 bytes 請求的文件的大小

Concurrency Level: 500 併發級別,每次併發請求的數量
Time taken for tests: 0.243 seconds 從第一個請求鏈接創建到收到最後一個請求的響應報文結束所經歷的時長
Complete requests: 1000 成功請求的數量
Failed requests: 0 請求失敗的個數
Write errors: 0 失敗的寫入次數
Total transferred: 281410 bytes 總共的傳輸量,用戶實際請求的數據加上每層的報文頭部的總和
HTML transferred: 10700 bytes 請求的數據的大小
Requests per second: 4113.30 [#/sec] (mean) 每秒鐘完成的請求數
Time per request: 121.557 [ms] (mean) 併發一次請求完成的平均時間,此例爲完成500個併發請求的平均時間
Time per request: 0.243 [ms] (mean, across all concurrent requests) 單個請求完成的平均時間
Transfer rate: 1130.39 [Kbytes/sec] received 傳輸速率 字節

Connection Times (ms)
最短期 平均時間 偏差 最長時間
min mean[+/-sd] median max
Connect: 10 17 4.1 18 26 創建鏈接的時間
Processing: 8 36 58.7 19 230 處理過程的時間
Waiting: 0 30 60.3 12 228 等待的時間
Total: 30 53 57.0 37 241 時間總和

Percentage of the requests served within a certain time (ms)
50% 37
66% 38
75% 38
80% 38
90% 40
95% 241
98% 241
99% 241
100% 241 (longest request)

九、配置apache的虛擬機主機

編輯apache的主配置文件
# vim /etc/httpd/httpd.conf
#DocumentRoot "/usr/local/lamp/apache/htdocs" 將本來的默認發佈目錄註釋
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf 去掉本行註釋
LoadModule log_config_module modules/mod_log_config.so 確保此模塊已經被apache模塊加載,由於在httpd-vhosts.conf文件中指出須要此模塊:Required modules: mod_log_config

編譯/etc/httpd/extra/httpd-vhosts.conf這個虛擬機主機配置文件
<VirtualHost *:80>
DocumentRoot "/var/www/a.com" 發佈目錄
ServerName www.a.com 虛擬主機名
<Directory "/var/www/a.com"> 設置目錄權限,必須有此設置,apache2.4版本以後必須有此設置,不然全部用戶都沒法訪問
Options none 不容許索引
AllowOverride none
Require all granted 容許全部用戶訪問
</Directory>
ErrorLog "logs/www.a.com-error_log" 錯誤日誌記錄路徑
CustomLog "logs/www.a.com-access_log" common apache日誌記錄路徑
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/var/www/b.com"
ServerName www.b.com
<Directory "/var/www/b.com">
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog "logs/www.b.example.com-error_log"
CustomLog "logs/www.b.example.com-access_log" common
</VirtualHost>

創建文件
# mkdir /var/www/a.com
# mkdir /var/www/b.com

重啓apache服務便可


2、安裝mysql-5.5.28

一、準備數據存放的文件系統

新建一個邏輯卷,並將其掛載至特定目錄便可。這裏再也不給出過程。

這裏假設其邏輯卷的掛載目錄爲/mydata,然後須要建立/mydata/data目錄作爲mysql數據的存放目錄。

二、新建用戶以安全方式運行進程:

# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data

三、安裝並初始化mysql-5.5.28

首先下載平臺對應的mysql版本至本地,這裏是32位平臺,所以,選擇的爲mysql-5.5.28-linux2.6-i686.tar.gz,其下載位置爲ftp://172.16.0.1/pub/Sources/mysql-5.5。

# tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local/lamp
# cd /usr/local/lamp
# ln -sv mysql-5.5.28-linux2.6-i686 mysql
# cd mysql

# chown -R mysql:mysql .
# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data
--user 設置以哪一個用戶的身份進行初始化
--datadir 指定mysql的數據目錄

# chown -R root .
注:若是使用mysql默認的數據目錄,則須要將mysql安裝目錄下的data目錄的屬主改成mysql
# chown -R mysql /usr/local/mysql/data

四、爲mysql提供主配置文件:

# cd /usr/local/lamp/mysql
# cp support-files/my-large.cnf /etc/my.cnf

並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,好比這裏使用以下行:
thread_concurrency = 2

另外還須要添加以下行指定mysql數據文件的存放位置:
datadir = /mydata/data


五、爲mysql提供sysv服務腳本:

# cd /usr/local/lamp/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld

添加至服務列表:
# chkconfig --add mysqld
# chkconfig mysqld on

然後就能夠啓動服務測試使用了。


爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還須要進行以下步驟:
六、輸出mysql的man手冊至man命令的查找路徑:

編輯/etc/man.config,添加以下行便可:
MANPATH /usr/local/lamp/mysql/man

七、輸出mysql的頭文件至系統頭文件路徑/usr/include:

這能夠經過簡單的建立連接實現:
# ln -sv /usr/local/lamp/mysql/include /usr/include/mysql

八、輸出mysql的庫文件給系統庫查找路徑:

# echo '/usr/local/lamp/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

然後讓系統從新載入系統庫:
# ldconfig

九、修改PATH環境變量,讓系統能夠直接使用mysql的相關命令。具體實現過程這裏再也不給出。

十、MySQL服務器維護了兩類變量:
服務器變量
定義MySQL服務器運行特性
SHOW GLOBAL VARIABLES [LIKE 'STRING'];
狀態變量
保存了MySQL服務器運行統計數據
SHOW GLOBAL STATUS [LIKE 'STRING'];

MySQL通配符:
_:任意單個字符
%:任意長度的任意字符


3、編譯安裝php-5.4.13

一、解決依賴關係:

請配置好yum源(能夠是本地系統光盤)後執行以下命令:
# yum -y groupinstall "X Software Development"

二、編譯安裝php-5.4.13

首先下載源碼包至本地目錄,下載地址:http://php.net/

# tar xf php-5.4.13.tar.bz2
# cd php-5.4.13
# ./configure --prefix=/usr/local/lamp/php --with-mysql=/usr/local/lamp/mysql --with-openssl --with-mysqli=/usr/local/lamp/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/lamp/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

--prefix 指定php的安裝路徑
--with-mysql 指定mysql所在的路徑
--with-openssl 讓php支持openssl功能
--with-mysqli 支持mysql的另一種接口
--enable-mstring 讓php支持mstring的功能
--with-freetype-dir 讓php支持freetype的功能,freetype引擎是一個自由的,可移植的字體庫
--with-jpeg-dir 讓php支持jpeg圖片
--with-zlib 讓php支持zlib,zlib是互聯網上經常使用的通用格式的壓縮庫,讓數據文件壓縮後再發送
--with-libxml-dir 讓php支持xml擴展標記語言,並告訴其xml庫的路徑。如今衆多系統實現數據交互的時候都要基於xml來實現
--enable-sockets 讓php支持基於套接字的通訊
--with-apxs2 基於這個apxs能夠將php編譯成Apache的模塊,若是要使用fastcgi模式的話,將此選項改成--enable-fpm
--with-mcrypt 讓php支持加密功能,額外的加密庫
--with-config-file-path 配置php的配置文件php.ini存放的目錄
--with-config-file-scan-dir 除了主配置文件以外,而主配置文件的一些子配置文件的存放路徑
--with-bz2 讓php支持bz2壓縮,一個壓縮庫


說明:
一、這裏爲了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項。
二、若是使用PHP5.3以上版本,爲了連接MySQL數據庫,能夠指定mysqlnd,這樣在本機就不須要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,能夠編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定造成依賴),但從PHP 5.4開始它就是默認設置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

# make
# make test
# make intall

爲php提供配置文件:
# cp php.ini-production /etc/php.ini

三、 編輯apache配置文件httpd.conf,以apache支持php

# vim /etc/httpd/httpd.conf
一、添加以下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

二、定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html

然後從新啓動httpd,或讓其從新載入配置文件便可測試php是否已經能夠正常使用。

4、安裝xcache,爲php加速:

一、安裝
# tar xf xcache-3.0.1.tar.gz
# cd xcache-3.0.1
# /usr/local/lamp/php/bin/phpize 準備一個php擴展以便進行編譯
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install

安裝結束時,會出現相似以下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

二、編輯php.ini,整合php和xcache:

首先將xcache提供的樣例配置導入php.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d

說明:xcache.ini文件在xcache的源碼目錄中。

接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改成以下行:
zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

注意:若是php.ini文件中有多條zend_extension指令行,要確保此新增的行排在第一位。

5、啓用服務器狀態

mod_status模塊可讓管理員查看服務器的執行狀態,它經過一個HTML頁面展現了當前服務器的統計數據。這些數據一般包括但不限於:
(1) 處於工做狀態的worker進程數;
(2) 空閒狀態的worker進程數;
(3) 每一個worker的狀態,包括此worker已經響應的請求數,及由此worker發送的內容的字節數;
(4) 當前服務器總共發送的字節數;
(5) 服務器自上次啓動或重啓以來至當前的時長;
(6) 平均每秒鐘響應的請求數、平均每秒鐘發送的字節數、平均每一個請求所請求內容的字節數;

啓用狀態頁面的方法很簡單,只須要在主配置文件中添加以下內容便可:
<Location /server-status>
SetHandler server-status
Require all granted
</Location>

須要提醒的是,這裏的狀態信息不該該被全部人隨意訪問,所以,應該限制僅容許某些特定地址的客戶端查看。好比使用Require ip 172.16.0.0/16來限制僅容許指定網段的主機查看此頁面。

 

 


第二部分、配置apache-2.4.4與fpm方式的php-5.4.13

1、apache、MySQL的安裝與前一部分相同;請根據其進行安裝;

2、編譯安裝php-5.4.13

一、解決依賴關係:

請配置好yum源(能夠是本地系統光盤)後執行以下命令:
# yum -y groupinstall "X Software Development"

二、編譯安裝php-5.4.13

首先下載源碼包至本地目錄,下載地址:http://php.net/

# tar xf php-5.4.13.tar.bz2
# cd php-5.4.13
# ./configure --prefix=/usr/local/lamp/php --with-mysql=/usr/local/lamp/mysql --with-openssl --with-mysqli=/usr/local/lamp/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --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


說明:若是使用PHP5.3以上版本,爲了連接MySQL數據庫,能夠指定mysqlnd,這樣在本機就不須要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,能夠編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定造成依賴),但從PHP 5.4開始它就是默認設置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

# make
# make intall

爲php提供配置文件:
# cp php.ini-production /etc/php.ini

三、配置php-fpm

爲php-fpm提供Sysv init腳本,並將其添加至服務列表:
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod +x /etc/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
注:若是你修改了pid的值,須要在/etc/rc.d/init.d/php-fpm中也修改相應的路徑,由於默認的啓動腳本中規定到/usr/local/php/var/run/php-fpm.pid中去尋找pid文件

接下來就能夠啓動php-fpm了:
# service php-fpm start

使用以下命令來驗正(若是此命令輸出有中幾個php-fpm進程就說明啓動成功了):
# ps aux | grep php-fpm

默認狀況下,fpm監聽在127.0.0.1的9000端口,也可使用以下命令驗正其是否已經監聽在相應的套接字。
# netstat -tnlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm

3、配置httpd-2.4.4

一、啓用httpd的相關模塊

在Apache httpd 2.4之後已經專門有一個模塊針對FastCGI的實現,此模塊爲mod_proxy_fcgi.so,它實際上是做爲mod_proxy.so模塊的擴充,所以,這兩個模塊都要加載
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


二、配置虛擬主機支持使用fcgi

在相應的虛擬主機中添加相似以下兩行。
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1


例如:
<VirtualHost *:80>
DocumentRoot "/www/magedu.com"
ServerName magedu.com
ServerAlias www.magedu.com

ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/magedu.com/$1

<Directory "/www/magedu.com">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>

ProxyRequests Off:關閉正向代理功能
ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少須要知道運行的目錄和URI,因此這裏直接在fcgi://127.0.0.1:9000後指明瞭這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不須要手動指定。
反向代理:客戶端向服務端請求數據,可是服務端自己是沒有用戶請求的這些數據的,可是服務端會到數據所在的主機上取得數據,並取回或緩存到本機,而後將結果返回給用戶,這個過程就叫作反向代理

三、編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,並支持php格式的主頁

# vim /etc/httpd/httpd.conf
一、添加以下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

二、定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html

補充:Apache httpd 2.4之前的版本中,要麼把PHP做爲Apache的模塊運行,要麼添加一個第三方模塊支持PHP-FPM實現。

相關文章
相關標籤/搜索