繼前面兩篇《Centos6.2_(64位)服務(wù)器環(huán)境配置:第一篇源碼編譯Mysql》和《Centos6.2_(64位)服務(wù)器環(huán)境配置:第二篇源碼編譯Nginx》之后,把PHP部分也寫(xiě)寫(xiě),這篇主要還是針對(duì)編譯安裝過(guò)程中遇到的一些奇怪問(wèn)題詳解吧,其它安裝都差不多的。
在 開(kāi)始之前,先把關(guān)于libmcrypt庫(kù)的問(wèn)題再說(shuō)說(shuō),我也是在安裝過(guò)程遇到的,因?yàn)樵疽詾閥um可以安裝好一切依賴(lài)包的,但在Centos6.2 64位環(huán)境下就是這么奇怪,yum安裝上的libmcrypt始終都在編譯過(guò)程提示缺少一個(gè).h文件,為此差點(diǎn)碰傷了頭。經(jīng)過(guò)過(guò)多試驗(yàn),總算把 libmcrypt這塊先弄好了,否則到了PHP的安裝環(huán)境是做不來(lái)的。
安裝PHP5.4.13要做的相關(guān)準(zhǔn)備工作有除了下載PHP5.4.13的源碼包之外,還需要下載Libmcrypt,mcrypt和mhash,后面兩個(gè)為第一個(gè)的依賴(lài)包,而Libmcrypt又是PHP的相關(guān)依賴(lài)包,首先要把這一小部分安裝好。
PHP5.4.13 源碼下載地址 http://cn.php.net/get/php-5.4.13.tar.gz/from/cn2.php.net/mirror
Libmcrypt( libmcrypt-2.5.8.tar.gz ): http://sourceforge.net/project/showfiles.php?group_id=87941&package_id=91774&release_id=487459
http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/Production/libmcrypt-2.5.7.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmcrypt%2Ffiles%2FLibmcrypt%2FProduction%2F&ts=1364009948&use_mirror=nchc
mcrypt( mcrypt-2.6.8.tar.gz ): http://sourceforge.net/project/showfiles.php?group_id=87941&package_id=91948&release_id=642101
mhash( mhash-0.9.9.9.tar.gz ): http://sourceforge.net/project/showfiles.php?group_id=4286&package_id=4300&release_id=645636
以上幾個(gè)就是對(duì)應(yīng)文件的下載鏈接,直接wget即可。
1、先安裝Libmcrypt
#www.5ishare.com ,以/apps/setup為安裝文件存放目錄
#tar -zxvf libmcrypt-2.5.8.tar.gz
#cd libmcrypt-2.5.8
#./configure
#make & make install
說(shuō)明:libmcript默認(rèn)安裝在/usr/local/lib
2.安裝mhash
#tar -zxvf mhash-0.9.9.9.tar.gz
#cd mhash-0.9.9.9
#./configure
#make & make install
3.安裝mcrypt
#tar -zxvf mcrypt-2.6.8.tar.gz
#cd mcrypt-2.6.8
#LD_LIBRARY_PATH=/usr/local/lib ./configure
#make & make install
說(shuō) 明:由于在配置Mcrypt時(shí),會(huì)找不到libmcrypt的鏈接庫(kù),導(dǎo)致無(wú)法編譯,需要手動(dòng)指定 libmcrypt:LD_LIBRARY_PATH=/usr/local/lib 。而且實(shí)驗(yàn)證明,經(jīng)過(guò)以上安裝之后,可解決configure: error: mcrypt.h not found. Please reinstall libmcrypt.問(wèn)題。
以下一段是PHP的安裝配置參數(shù),也是比較常用的,對(duì)于安裝路徑參數(shù)可以自行調(diào)整。
./configure --prefix=/apps/php5.4 \
--with-config-file-path=/apps/php5.4/etc \
--with-mysql=/apps/mysql \
--with-mysqli=/apps/mysql/bin/mysql_config \
--with-mysql-sock=/tmp/mysql.sock \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-magic-quotes \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-appsimization \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-mcrypt \
--with-curl
細(xì)心的朋友可能已經(jīng)發(fā)現(xiàn)參數(shù)里有兩個(gè)www的參數(shù),這個(gè)就是前邊安裝Nginx的時(shí)候添加的用戶(hù)和用戶(hù)組,因?yàn)镹ginx負(fù)責(zé)前端,PHP是后端,所以使用同一組賬號(hào)就方便對(duì)目錄的權(quán)限設(shè)置。
配置完畢之后,就可以執(zhí)行
#make & make install進(jìn)行安裝了,這個(gè)環(huán)節(jié)要花費(fèi)的時(shí)候比較長(zhǎng),可能是自己的機(jī)器配置不太高吧(2核4G內(nèi)存),足足make了將近20分鐘。最近還可以對(duì)所有 功能模塊進(jìn)行測(cè)試,這個(gè)更長(zhǎng)時(shí)間了,30分鐘以上,這一步不是必須的,只是閑著蛋痛的時(shí)候玩的。
編譯安裝完畢,還需要一些設(shè)置:
#cp php.ini-production /apps/php5.4/etc/php.ini //復(fù)制php配置文件到安裝目錄
#rm -rf /etc/php.ini //刪除系統(tǒng)自帶配置文件
#ln -s /apps/php5.4/etc/php.ini /etc/php.ini //添加軟鏈接
#cp /apps/php5.4/etc/php-fpm.conf.default /apps/php5.4/etc/php-fpm.conf //拷貝模板文件為php-fpm配置文件
#vi apps/php5.4/etc/php-fpm.conf
pid = /tmp/php-fpm.pid //取消前面的分號(hào)
經(jīng)過(guò)以上操作,PHP-FPM已經(jīng)可以運(yùn)行了,但是這樣不宵完美,因?yàn)閜hp-fpm本身沒(méi)提供方便用戶(hù)啟動(dòng)或者重啟的腳本,要自己弄一個(gè),內(nèi)容如下:
#!/bin/bash
# www.free920.com
# create by gesion<gesion@163.com>
# php-fpm - This shell script takes care of starting and stopping php-fpm.#
# chkconfig: - 60 50
# description: php-fpm is a php-cgi service.
# processname: php-fpm
# config: /etc/php-fpm.ini
php_fpm_path="/apps/php5.4/sbin/php-fpm"
php_fpm_conf="/apps/php5.4/etc/php-fpm.conf"
php_fpm_pid="/tmp/php-fpm.pid"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $php_fpm_path ] || exit 0
RETVAL=0
prog="php-fpm"
# Start daemons.
start() {
if [ ! -s $php_fpm_pid ]; then
rm -f $php_fpm_pid
fi
if [ -e $php_fpm_pid -a ! -z $php_fpm_pid ]; then
echo $"$prog already running..."
exit 1
fi
if [ -e $php_fpm_conf ]; then
echo -n $"Starting $prog: "
$php_fpm_path -y $php_fpm_conf &
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$prog"
echo
[ $RETVAL -eq 0 ] && return $RETVAL
pid created $php_fpm_pid
if [ -n "$try" ]; then
RETVAL=1
else
RETVAL=0
fi
else
RETVAL=1
fi
return $RETVAL
}
# Stop daemons.
stop() {
echo -n $"Stopping $prog: "
killproc $php_fpm_path -TERM
RETVAL=$?
pid removed $php_fpm_pid
if [ -n "$try" ]; then
RETVAL=1
failure
else
RETVAL=0
success
fi
echo
[ $RETVAL = 0 ] && rm -f $php_fpm_pid
return $RETVAL
}
pid () {
try=0
while test $try -lt 35; do
case "$1" in
'created')
if [ -f "$2" ]; then
try=""
break
fi
;;
'removed')
if [ ! -f "$2" ]; then
try=""
break
fi
;;
esac
try=$(expr $try + 1)
sleep 1
done
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
------------------------分隔線--------
以上內(nèi)容保存到/etc/init.d/php-fpm,并加入執(zhí)行權(quán)限,chkconfig php-fpm on 加入開(kāi)機(jī)自動(dòng)啟動(dòng)。
雖然此腳本也是轉(zhuǎn)載網(wǎng)友的,經(jīng)過(guò)昨天的遭遇發(fā)現(xiàn)此腳本還有個(gè)不完美的地方,如果由于服務(wù)器意外重啟或者其它原因產(chǎn)生一個(gè)空的pid文件,那么就會(huì)造成啟動(dòng)失敗,所以在啟動(dòng)命令執(zhí)行之前檢查pid文件是否為空,空的就把它刪除,這樣方可正常。
至此就已經(jīng)介紹完了。我相信對(duì)于很多剛接觸Linux的朋友通過(guò)閱讀三篇簡(jiǎn)單的教程就可以輕松配置一臺(tái)具體PHP+Mysql+Nginx的Web服務(wù)器。
原創(chuàng)文章,歡迎轉(zhuǎn)載,但請(qǐng)注明出處:我愛(ài)共享(http://www.5ishare.com/tech/site/368847.shtml)聯(lián)系客服