繼前面兩篇《Centos6.2_(64位)服務(wù)器環(huán)境配置:第一篇源碼編譯Mysql》和《Centos6.2_(64位)服務(wù)器環(huán)境配置:第二篇源碼編譯Nginx》之后,把PHP部分也寫寫,這篇主要還是針對編譯安裝過程中遇到的一些奇怪問題詳解吧,其它安裝都差不多的。 在 開始之前,先把關(guān)于libmcrypt庫的問題再說說,我也是在安裝過程遇到的,因為原本以為yum可以安裝好一切依賴包的,但在Centos6.2 64位環(huán)境下就是這么奇怪,yum安裝上的libmcrypt始終都在編譯過程提示缺少一個.h文件,為此差點碰傷了頭。經(jīng)過過多試驗,總算把 libmcrypt這塊先弄好了,否則到了PHP的安裝環(huán)境是做不來的。 安裝PHP5.4.13要做的相關(guān)準備工作有除了下載PHP5.4.13的源碼包之外,還需要下載Libmcrypt,mcrypt和mhash,后面兩個為第一個的依賴包,而Libmcrypt又是PHP的相關(guān)依賴包,首先要把這一小部分安裝好。 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 以上幾個就是對應(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 說明:libmcript默認安裝在/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 說 明:由于在配置Mcrypt時,會找不到libmcrypt的鏈接庫,導(dǎo)致無法編譯,需要手動指定 libmcrypt:LD_LIBRARY_PATH=/usr/local/lib 。而且實驗證明,經(jīng)過以上安裝之后,可解決configure: error: mcrypt.h not found. Please reinstall libmcrypt.問題。 以下一段是PHP的安裝配置參數(shù),也是比較常用的,對于安裝路徑參數(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 細心的朋友可能已經(jīng)發(fā)現(xiàn)參數(shù)里有兩個www的參數(shù),這個就是前邊安裝Nginx的時候添加的用戶和用戶組,因為Nginx負責前端,PHP是后端,所以使用同一組賬號就方便對目錄的權(quán)限設(shè)置。 配置完畢之后,就可以執(zhí)行 #make & make install進行安裝了,這個環(huán)節(jié)要花費的時候比較長,可能是自己的機器配置不太高吧(2核4G內(nèi)存),足足make了將近20分鐘。最近還可以對所有 功能模塊進行測試,這個更長時間了,30分鐘以上,這一步不是必須的,只是閑著蛋痛的時候玩的。 編譯安裝完畢,還需要一些設(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 //取消前面的分號 經(jīng)過以上操作,PHP-FPM已經(jīng)可以運行了,但是這樣不宵完美,因為php-fpm本身沒提供方便用戶啟動或者重啟的腳本,要自己弄一個,內(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 加入開機自動啟動。 雖然此腳本也是轉(zhuǎn)載網(wǎng)友的,經(jīng)過昨天的遭遇發(fā)現(xiàn)此腳本還有個不完美的地方,如果由于服務(wù)器意外重啟或者其它原因產(chǎn)生一個空的pid文件,那么就會造成啟動失敗,所以在啟動命令執(zhí)行之前檢查pid文件是否為空,空的就把它刪除,這樣方可正常。 至此就已經(jīng)介紹完了。我相信對于很多剛接觸Linux的朋友通過閱讀三篇簡單的教程就可以輕松配置一臺具體PHP+Mysql+Nginx的Web服務(wù)器。 原創(chuàng)文章,歡迎轉(zhuǎn)載,但請注明出處:我愛共享(http://www./tech/site/368847.shtml) |
|