分享

CentOS6.2(64位)服务器环境配置:第三篇源码编译PHP5.4

 昵称12067353 2013-04-24

继前面两篇《Centos6.2_(64位)服务器环境配置:第一篇源码编译Mysql》和《Centos6.2_(64位)服务器环境配置:第二篇源码编译Nginx》之后,把PHP部分也写写,这篇主要还是针对编译安装过程中遇到的一些奇怪问题详解吧,其它安装都差不多的。

在 开始之前,先把关于libmcrypt库的问题再说说,我也是在安装过程遇到的,因为原本以为yum可以安装好一切依赖包的,但在Centos6.2 64位环境下就是这么奇怪,yum安装上的libmcrypt始终都在编译过程提示缺少一个.h文件,为此差点碰伤了头。经过过多试验,总算把 libmcrypt这块先弄好了,否则到了PHP的安装环境是做不来的。

安装PHP5.4.13要做的相关准备工作有除了下载PHP5.4.13的源码包之外,还需要下载Libmcrypt,mcrypt和mhash,后面两个为第一个的依赖包,而Libmcrypt又是PHP的相关依赖包,首先要把这一小部分安装好。

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

以上几个就是对应文件的下载链接,直接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的链接库,导致无法编译,需要手动指定 libmcrypt:LD_LIBRARY_PATH=/usr/local/lib 。而且实验证明,经过以上安装之后,可解决configure: error: mcrypt.h not found. Please reinstall libmcrypt.问题。

以下一段是PHP的安装配置参数,也是比较常用的,对于安装路径参数可以自行调整。

./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

细心的朋友可能已经发现参数里有两个www的参数,这个就是前边安装Nginx的时候添加的用户和用户组,因为Nginx负责前端,PHP是后端,所以使用同一组账号就方便对目录的权限设置。

配置完毕之后,就可以执行

#make & make install进行安装了,这个环节要花费的时候比较长,可能是自己的机器配置不太高吧(2核4G内存),足足make了将近20分钟。最近还可以对所有 功能模块进行测试,这个更长时间了,30分钟以上,这一步不是必须的,只是闲着蛋痛的时候玩的。

编译安装完毕,还需要一些设置:

#cp php.ini-production   /apps/php5.4/etc/php.ini //复制php配置文件到安装目录

#rm -rf /etc/php.ini   //删除系统自带配置文件

#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    //取消前面的分号

经过以上操作,PHP-FPM已经可以运行了,但是这样不宵完美,因为php-fpm本身没提供方便用户启动或者重启的脚本,要自己弄一个,内容如下:

#!/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

------------------------分隔线--------

以上内容保存到/etc/init.d/php-fpm,并加入执行权限,chkconfig php-fpm on 加入开机自动启动。

虽然此脚本也是转载网友的,经过昨天的遭遇发现此脚本还有个不完美的地方,如果由于服务器意外重启或者其它原因产生一个空的pid文件,那么就会造成启动失败,所以在启动命令执行之前检查pid文件是否为空,空的就把它删除,这样方可正常。

至此就已经介绍完了。我相信对于很多刚接触Linux的朋友通过阅读三篇简单的教程就可以轻松配置一台具体PHP+Mysql+Nginx的Web服务器。

原创文章,欢迎转载,但请注明出处:我爱共享(http://www./tech/site/368847.shtml

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多