繼前面兩篇《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./get/php-5.4.13.tar.gz/from/cn2./mirror Libmcrypt( libmcrypt-2.5.8.tar.gz ): http:///project/showfiles.php?group_id=87941&package_id=91774&release_id=487459 http://downloads./project/mcrypt/Libmcrypt/Production/libmcrypt-2.5.7.tar.gz?r=http%3A%2F%2F%2Fprojects%2Fmcrypt%2Ffiles%2FLibmcrypt%2FProduction%2F&ts=1364009948&use_mirror=nchc
mcrypt( mcrypt-2.6.8.tar.gz ): http:///project/showfiles.php?group_id=87941&package_id=91948&release_id=642101
mhash( mhash-0.9.9.9.tar.gz ): http:///project/showfiles.php?group_id=4286&package_id=4300&release_id=645636 以上幾個(gè)就是對(duì)應(yīng)文件的下載鏈接,,直接wget即可,。 1、先安裝Libmcrypt #www. ,以/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<[email protected]> # 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./tech/site/368847.shtml) |
|