继前面两篇《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) |
|
来自: 昵称12067353 > 《网站技术》