转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程
一、編譯安裝apache
1、解決依賴關(guān)系
httpd-2.4.4需要較新版本的apr和apr-util,因此需要事先對其進行升級。升級方式有兩種,一種是通過源代碼編譯安裝,一種是直接升級rpm包。這里選擇使用編譯源代碼的方式進行,它們的下載路徑http://apr.apache.org/
(1) 編譯安裝apr
# tar xf apr-1.4.6.tar.bz2
# cd apr-1.4.6
# ./configure --prefix=/usr/local/lamp/apr
# make && make install
apr的默認設(shè)置基本已經(jīng)可以滿足我們的需求,因此只需要通過--prefix指定我們的安裝路徑
--enable-threads 支持線程
--disable-ipv6 禁用IPv6
注:源碼編譯安裝的apr只對之后要源碼編譯安裝的apache有用,對于系統(tǒng)上的其他服務(wù)是不起作用的。
(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 install
--prefix 指定apr-util的安裝路徑
--with-apr 指定apr的位置,不指定的話將會默認的去找系統(tǒng)上舊版本的apr
附:apache官方對APR的介紹:
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軟件包,需要事先安裝。此軟件包系統(tǒng)光盤自帶,因此,找到并安裝即可。
2、編譯安裝httpd-2.4.4
首先下載httpd-2.4.4到本地,下載路徑為http://httpd.apache.org/。而后執(zhí)行如下命令進行編譯安裝過程:
# 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 靜態(tài)方式,將模塊直接編譯到apache中,all所有的、most大部分、few少部分的、reallyall真是所有的
--enable-authn-dbm|anon|dbd|socache 啟動哪種認證功能,默認啟用的是基于文件的認證功能,可以通過--disable-authn-file禁用
--enable-so 支持DSO(動態(tài)共享模塊)功能,如果不支持此功能,php將無法以模塊方式跟apache結(jié)合起來工作
--enable-ssl 啟動SSL的功能,否則無法使用HTTPS
--enable-deflate 是一種常用的壓縮機制,可以讓apache將用戶請求的數(shù)據(jù)壓縮后在返回給用戶,而瀏覽器也會將收到的數(shù)據(jù)解壓后再查看
--enable-proxy-fcgi 如果希望apache與php結(jié)合的時候是以fastcgi的方式工作的話,必須要設(shè)置此選項
--enable-mpms-shared 此選項在apache2.4版本之后才有,MPM(多道處理模塊,默認情況有prefork,worker,event幾種),在2.4中可以將所有的都編譯進去,然后動態(tài)選擇加載,默認使用event
--with-mpm 明確的說明使用哪一個為默認的MPM
--enable-rewrite 支持URL重寫
--enable-cgi 支持CGI
--enable-cgid 表示CGI被線程方式的MPM使用,當你使用的是event或worker方式的MPM時,就應(yīng)該啟用CGID
補充:
(1)構(gòu)建MPM為靜態(tài)模塊
在全部平臺中,MPM都可以構(gòu)建為靜態(tài)模塊。在構(gòu)建時選擇一種MPM,鏈接到服務(wù)器中。如果要改變MPM,必須重新構(gòu)建。為了使用指定的MPM,請在執(zhí)行configure腳本 時,使用參數(shù) --with-mpm=NAME。NAME是指定的MPM名稱。編譯完成后,可以使用 ./httpd -l 來確定選擇的MPM。 此命令會列出編譯到服務(wù)器程序中的所有模塊,包括 MPM。
(2)構(gòu)建 MPM 為動態(tài)模塊
在Unix或類似平臺中,MPM可以構(gòu)建為動態(tài)模塊,與其它動態(tài)模塊一樣在運行時加載。 構(gòu)建 MPM 為動態(tài)模塊允許通過修改LoadModule指令內(nèi)容來改變MPM,而不用重新構(gòu)建服務(wù)器程序。在執(zhí)行configure腳本時,使用--enable-mpms-shared選項即可啟用此特性。當給出的參數(shù)為all時,所有此平臺支持的MPM模塊都會被安裝。還可以在參數(shù)中給出模塊列表。默認MPM,可以自動選擇或者在執(zhí)行configure腳本時通過--with-mpm選項來指定,然后出現(xiàn)在生成的服務(wù)器配置文件中。編輯LoadModule指令內(nèi)容可以選擇不同的MPM。
3、修改httpd的主配置文件,設(shè)置其Pid文件的路徑
編輯/etc/httpd/httpd.conf,添加如下行即可:
PidFile "/var/run/httpd.pid"
4、提供SysV服務(wù)腳本/etc/rc.d/init.d/httpd,內(nèi)容如下:
#!/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
而后為此腳本賦予執(zhí)行權(quán)限:
# chmod +x /etc/rc.d/init.d/httpd
5、加入服務(wù)列表:
# chkconfig --add httpd
接下來就可以啟動服務(wù)進行測試了。
6、將apache的相關(guān)命令所在路徑加入PATH環(huán)境變量中
(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
重新登錄生效
7、改變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服務(wù),通過httpd -M查看
httpd 2.4新特性:
1、MPM可于運行時裝載;
--enable-mpms-shared=all --with-mpm=event
2、Event MPM
3、異步讀寫
4、在每模塊及每目錄上指定日志級別;
5、每請求配置;<If>, <ElseIf>, <Else>;
6、增強的表達式分析器;
7、毫秒級的KeepAlive Timeout;
8、基于域名的虛擬主機不再需要NameVirtualHost指令;
9、降低了內(nèi)存占用;
10、支持在配置文件中使用自定義變量;
新增加的模塊:
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
8、使用ab命令測試apache服務(wù)器性能:
常見的壓力測試工具:
1、ab
2、http_load
3、webbench
4、siege
-c concurrency:一次性發(fā)起的請求個數(shù),默認為1
-i:測試時使用HEAD方法,默認為GET
-k:啟用HTTP長連接請求方式
-n requests:發(fā)起的模擬請求個數(shù);默認為1個;請求數(shù)要大于等于并發(fā)連接數(shù)
-q:靜默模式,在請求數(shù)大于150個時不輸出請求完成百分比
# ab -c 500 -n 1000 http://www.a.com/index.html
輸出結(jié)果:
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服務(wù)器軟件和版本號
Server Hostname: www.a.com 主機名稱
Server Port: 80 端口
Document Path: /index.html 請求的文件
Document Length: 10 bytes 請求的文件的大小
Concurrency Level: 500 并發(fā)級別,每次并發(fā)請求的數(shù)量
Time taken for tests: 0.243 seconds 從第一個請求連接建立到收到最后一個請求的響應(yīng)報文結(jié)束所經(jīng)歷的時長
Complete requests: 1000 成功請求的數(shù)量
Failed requests: 0 請求失敗的個數(shù)
Write errors: 0 失敗的寫入次數(shù)
Total transferred: 281410 bytes 總共的傳輸量,用戶實際請求的數(shù)據(jù)加上每層的報文頭部的總和
HTML transferred: 10700 bytes 請求的數(shù)據(jù)的大小
Requests per second: 4113.30 [#/sec] (mean) 每秒鐘完成的請求數(shù)
Time per request: 121.557 [ms] (mean) 并發(fā)一次請求完成的平均時間,此例為完成500個并發(fā)請求的平均時間
Time per request: 0.243 [ms] (mean, across all concurrent requests) 單個請求完成的平均時間
Transfer rate: 1130.39 [Kbytes/sec] received 傳輸速率 字節(jié)
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)
9、配置apache的虛擬機主機
編輯apache的主配置文件
# vim /etc/httpd/httpd.conf
#DocumentRoot "/usr/local/lamp/apache/htdocs" 將原本的默認發(fā)布目錄注釋
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf 去掉本行注釋
LoadModule log_config_module modules/mod_log_config.so 確保此模塊已經(jīng)被apache模塊加載,因為在httpd-vhosts.conf文件中指出需要此模塊:Required modules: mod_log_config
編譯/etc/httpd/extra/httpd-vhosts.conf這個虛擬機主機配置文件
<VirtualHost *:80>
DocumentRoot "/var/www/a.com" 發(fā)布目錄
ServerName www.a.com 虛擬主機名
<Directory "/var/www/a.com"> 設(shè)置目錄權(quán)限,必須有此設(shè)置,apache2.4版本之后必須有此設(shè)置,否則所有用戶都無法訪問
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服務(wù)即可
二、安裝mysql-5.5.28
1、準備數(shù)據(jù)存放的文件系統(tǒng)
新建一個邏輯卷,并將其掛載至特定目錄即可。這里不再給出過程。
這里假設(shè)其邏輯卷的掛載目錄為/mydata,而后需要創(chuàng)建/mydata/data目錄做為mysql數(shù)據(jù)的存放目錄。
2、新建用戶以安全方式運行進程:
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data
3、安裝并初始化mysql-5.5.28
首先下載平臺對應(yīng)的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 設(shè)置以哪個用戶的身份進行初始化
--datadir 指定mysql的數(shù)據(jù)目錄
# chown -R root .
注:如果使用mysql默認的數(shù)據(jù)目錄,則需要將mysql安裝目錄下的data目錄的屬主改為mysql
# chown -R mysql /usr/local/mysql/data
4、為mysql提供主配置文件:
# cd /usr/local/lamp/mysql
# cp support-files/my-large.cnf /etc/my.cnf
并修改此文件中thread_concurrency的值為你的CPU個數(shù)乘以2,比如這里使用如下行:
thread_concurrency = 2
另外還需要添加如下行指定mysql數(shù)據(jù)文件的存放位置:
datadir = /mydata/data
5、為mysql提供sysv服務(wù)腳本:
# cd /usr/local/lamp/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
添加至服務(wù)列表:
# chkconfig --add mysqld
# chkconfig mysqld on
而后就可以啟動服務(wù)測試使用了。
為了使用mysql的安裝符合系統(tǒng)使用規(guī)范,并將其開發(fā)組件導出給系統(tǒng)使用,這里還需要進行如下步驟:
6、輸出mysql的man手冊至man命令的查找路徑:
編輯/etc/man.config,添加如下行即可:
MANPATH /usr/local/lamp/mysql/man
7、輸出mysql的頭文件至系統(tǒng)頭文件路徑/usr/include:
這可以通過簡單的創(chuàng)建鏈接實現(xiàn):
# ln -sv /usr/local/lamp/mysql/include /usr/include/mysql
8、輸出mysql的庫文件給系統(tǒng)庫查找路徑:
# echo '/usr/local/lamp/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而后讓系統(tǒng)重新載入系統(tǒng)庫:
# ldconfig
9、修改PATH環(huán)境變量,讓系統(tǒng)可以直接使用mysql的相關(guān)命令。具體實現(xiàn)過程這里不再給出。
10、MySQL服務(wù)器維護了兩類變量:
服務(wù)器變量
定義MySQL服務(wù)器運行特性
SHOW GLOBAL VARIABLES [LIKE 'STRING'];
狀態(tài)變量
保存了MySQL服務(wù)器運行統(tǒng)計數(shù)據(jù)
SHOW GLOBAL STATUS [LIKE 'STRING'];
MySQL通配符:
_:任意單個字符
%:任意長度的任意字符
三、編譯安裝php-5.4.13
1、解決依賴關(guān)系:
請配置好yum源(可以是本地系統(tǒng)光盤)后執(zhí)行如下命令:
# yum -y groupinstall "X Software Development"
2、編譯安裝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是互聯(lián)網(wǎng)上常用的通用格式的壓縮庫,讓數(shù)據(jù)文件壓縮后再發(fā)送
--with-libxml-dir 讓php支持xml擴展標記語言,并告訴其xml庫的路徑。現(xiàn)在眾多系統(tǒng)實現(xiàn)數(shù)據(jù)交互的時候都要基于xml來實現(xiàn)
--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壓縮,一個壓縮庫
說明:
1、這里為了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項。
2、如果使用PHP5.3以上版本,為了鏈接MySQL數(shù)據(jù)庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發(fā)包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設(shè)置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
# make
# make test
# make intall
為php提供配置文件:
# cp php.ini-production /etc/php.ini
3、 編輯apache配置文件httpd.conf,以apache支持php
# vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改為:
DirectoryIndex index.php index.html
而后重新啟動httpd,或讓其重新載入配置文件即可測試php是否已經(jīng)可以正常使用。
四、安裝xcache,為php加速:
1、安裝
# 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
安裝結(jié)束時,會出現(xiàn)類似如下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
2、編輯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指令行,要確保此新增的行排在第一位。
五、啟用服務(wù)器狀態(tài)
mod_status模塊可以讓管理員查看服務(wù)器的執(zhí)行狀態(tài),它通過一個HTML頁面展示了當前服務(wù)器的統(tǒng)計數(shù)據(jù)。這些數(shù)據(jù)通常包括但不限于:
(1) 處于工作狀態(tài)的worker進程數(shù);
(2) 空閑狀態(tài)的worker進程數(shù);
(3) 每個worker的狀態(tài),包括此worker已經(jīng)響應(yīng)的請求數(shù),及由此worker發(fā)送的內(nèi)容的字節(jié)數(shù);
(4) 當前服務(wù)器總共發(fā)送的字節(jié)數(shù);
(5) 服務(wù)器自上次啟動或重啟以來至當前的時長;
(6) 平均每秒鐘響應(yīng)的請求數(shù)、平均每秒鐘發(fā)送的字節(jié)數(shù)、平均每個請求所請求內(nèi)容的字節(jié)數(shù);
啟用狀態(tài)頁面的方法很簡單,只需要在主配置文件中添加如下內(nèi)容即可:
<Location /server-status>
SetHandler server-status
Require all granted
</Location>
需要提醒的是,這里的狀態(tài)信息不應(yīng)該被所有人隨意訪問,因此,應(yīng)該限制僅允許某些特定地址的客戶端查看。比如使用Require ip 172.16.0.0/16來限制僅允許指定網(wǎng)段的主機查看此頁面。
?
?
第二部分、配置apache-2.4.4與fpm方式的php-5.4.13
一、apache、MySQL的安裝與前一部分相同;請根據(jù)其進行安裝;
二、編譯安裝php-5.4.13
1、解決依賴關(guān)系:
請配置好yum源(可以是本地系統(tǒng)光盤)后執(zhí)行如下命令:
# yum -y groupinstall "X Software Development"
2、編譯安裝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數(shù)據(jù)庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發(fā)包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設(shè)置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
# make
# make intall
為php提供配置文件:
# cp php.ini-production /etc/php.ini
3、配置php-fpm
為php-fpm提供Sysv init腳本,并將其添加至服務(wù)列表:
# 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的相關(guān)選項為你所需要的值,并啟用pid文件(如下最后一行):
pm.max_children = 50 最大子進程的數(shù)量
pm.start_servers = 5 啟動時候開啟的空閑進程數(shù)量
pm.min_spare_servers = 2 最小的空間進程數(shù)量
pm.max_spare_servers = 8 最大的空閑進程數(shù)量
pid = /usr/local/php/var/run/php-fpm.pid
注:如果你修改了pid的值,需要在/etc/rc.d/init.d/php-fpm中也修改相應(yīng)的路徑,因為默認的啟動腳本中規(guī)定到/usr/local/php/var/run/php-fpm.pid中去尋找pid文件
接下來就可以啟動php-fpm了:
# service php-fpm start
使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啟動成功了):
# ps aux | grep php-fpm
默認情況下,fpm監(jiān)聽在127.0.0.1的9000端口,也可以使用如下命令驗正其是否已經(jīng)監(jiān)聽在相應(yīng)的套接字。
# netstat -tnlp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm
三、配置httpd-2.4.4
1、啟用httpd的相關(guān)模塊
在Apache httpd 2.4以后已經(jīng)專門有一個模塊針對FastCGI的實現(xiàn),此模塊為mod_proxy_fcgi.so,它其實是作為mod_proxy.so模塊的擴充,因此,這兩個模塊都要加載
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2、配置虛擬主機支持使用fcgi
在相應(yīng)的虛擬主機中添加類似如下兩行。
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:關(guān)閉正向代理功能
ProxyPassMatch:把以.php結(jié)尾的文件請求發(fā)送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這里直接在fcgi://127.0.0.1:9000后指明了這兩個參數(shù),其它的參數(shù)的傳遞已經(jīng)被mod_proxy_fcgi.so進行了封裝,不需要手動指定。
反向代理:客戶端向服務(wù)端請求數(shù)據(jù),但是服務(wù)端本身是沒有用戶請求的這些數(shù)據(jù)的,但是服務(wù)端會到數(shù)據(jù)所在的主機上取得數(shù)據(jù),并取回或緩存到本機,然后將結(jié)果返回給用戶,這個過程就叫做反向代理
3、編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,并支持php格式的主頁
# vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改為:
DirectoryIndex index.php index.html
補充:Apache httpd 2.4以前的版本中,要么把PHP作為Apache的模塊運行,要么添加一個第三方模塊支持PHP-FPM實現(xiàn)。
轉(zhuǎn)載于:https://www.cnblogs.com/xautlmx/p/4385184.html
總結(jié)
以上是生活随笔為你收集整理的转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: delphichromiumembedd
- 下一篇: 数据库连接池-连接的关闭内幕