首页 > 代码库 > PHP编译安装

PHP编译安装

和LAMP不同的是LNMP中的N指的是Nginx(类似于Apache的一种web服务软件)其他都一样。目前这种环境应用的也是非常之多。Nginx设计的初衷是提供一种快速高效多并发的web服务软件。在静态页面的处理上Nginx的确胜Apache一筹,然而在动态页面的处理上Nginx并不比Apache有多少优势。但是,目前还是有很多爱好者对Nginx比较热衷,随着Nginx的技术逐渐成熟,它在web服务软件领域的地位越来越高。

LNMP架构中,MySQL的安装方法和LAMP中MySQL的安装方法一样,先安装MySQL再安装PHP。

PHP编译安装

这里要先声明一下,针对Nginx的php安装和针对apache的php安装是有区别的,因为Nginx中的php是以fastcgi的方式结合nginx的,可以理解为nginx代理了php的fastcgi,而apache是把php作为自己的模块来调用的。

(1)下载PHP源码包

[root@LNMP mysql]# cd /usr/local/src

[root@LNMP src]# wget http://cn2.php.net/distributions/php-5.4.45.tar.bz2

(2)解压源码包,创建账号

[root@LNMP src]# tar jxf php-5.4.45.tar.bz2

[root@LNMP src]#  useradd -s /sbin/nologin php-fpm

该账号用来运行php-fpm服务,在LNMP环境中,PHP是以一个服务来提供服务的。

(3)安装php之前,请提前安装好其所依赖的安装包:

yum install -y  bzip2-devel curl-devel db4-devel libjpeg-devel libpng-devel libXpm-devel gmp-devel libc-client-devel openldap-devel unixODBC-devel postgresql-devel sqlite-devel aspell-devel  net-snmp-devel libxslt-devel libxml2-devel pcre-devel mysql-devel unixODBC-devel postgresql-devel pspell-devel net-snmp-devel

错误:configure: error: mcrypt.h not found. Please reinstall libmcrypt.

复制代码 代码如下:

#wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz

#tar zxf libmcrypt-2.5.7.tar.gz

#cd libmcrypt-2.5.7

#./configure

#make

#make install

(4)配置编译选项

[root@LNMP libmcrypt-2.5.7]# cd /usr/local/src

[root@LNMP src]# cd php-5.4.45

[root@LNMP php-5.4.45]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl

编译过程中如遇到错误,此地址查找解决http://blog.sina.com.cn/s/blog_167f23bf50102xdki.html

(5)编译PHP

[root@LNMP php-5.4.45]# make

如果在这一步遇到错误,请参照如下:

1)Generating phar.php

Generating phar.phar

PEAR package PHP_Archive not installed: generated phar will require PHP‘s phar extension be enabled.

pharcommand.inc

directorygraphiterator.inc

clicommand.inc

invertedregexiterator.inc

directorytreeiterator.inc

phar.inc

 

Build complete.

Don‘t forget to run ‘make test‘.

 

php 的编译时需要依赖pear package ,目前的问题错误"PEAR package PHP_Archive not installed: generated phar will require PHP‘s phar extension be enabled.",已经明显报出这个问题。

因此编译使用参数 --without-pear   将pear 屏蔽掉编译安装后,再进行安装;同时因为phar 属于pear的一个库 ,所以不将phar关闭掉,同时还会报这个错误,

同时需要使用 --disable-phar   编译参数. 

解决办法: 

./configure --without-pear  --disable-phar

make

make install

2)/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] 错误 1

解决办法:

yum install -y libtool-ltdl-devel

(6)安装PHP

先查看之前PHP安装的目录文件

[root@lnmp php-5.4.45]# ls /usr/local/php/

bin  etc  include  lib  php  sbin  var

先删除,再安装新的PHP

[root@lnmp php-5.4.45]# rm -rf /usr/local/php/

[root@LNMP php-5.4.45]# make install

以上每一个步骤,如果没有完全执行正确,那么下一步是无法进行的,是否还记得判断执行是否正确的方法? 使用 echo $? 看结果是否为 “0” , 如果不是,就是没有执行正确。

(7)修复配置文件

[root@LNMP php-5.4.45]# cp php.ini-production /usr/local/php/etc/php.ini

[root@LNMP php-5.4.45]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm(拷贝启动执行脚本)

[root@lnmp php-5.4.45]# chmod 755 /etc/init.d/php-fpm

授执行权限

[root@lnmp php-5.4.45]# chkconfig --add php-fpm

加入到系统服务列表里去

[root@LNMP php-5.4.45]# chkconfig php-fpm on

开机启动

[root@LNMP php-5.4.45]# service php-fpm start

重新启动php-fpm服务

Starting php-fpm [06-Apr-2017 03:18:37] ERROR: failed to open configuration file ‘/usr/local/php/etc/php-fpm.conf‘: No such file or directory (2)

[06-Apr-2017 03:18:37] ERROR: failed to load configuration file ‘/usr/local/php/etc/php-fpm.conf‘

[06-Apr-2017 03:18:37] ERROR: FPM initialization failed

failed

以上错误是配置文件不存在,无法启动

解决办法需要拷贝一个启动文件

[root@lnmp php-5.4.45]# cd /usr/local/php/etc/

[root@lnmp etc]# ls

pear.conf  php-fpm.conf.default  php.ini

[root@lnmp etc]# mv php-fpm.conf.default php-fpm.conf(重命名)

[root@lnmp etc]# /usr/local/php/sbin/php-fpm -t (检查文件是否有错误)

[06-Apr-2017 03:24:53] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful

[root@LNMP php-5.4.45]# service php-fpm start

再次重新启动php-fpm服务

Starting php-fpm [06-Apr-2017 03:31:22] ERROR: unable to bind listening socket for address ‘127.0.0.1:9000‘: Address already in use (98)

[06-Apr-2017 03:31:22] ERROR: FPM initialization failed

failed

解决方法:

#netstat -lntup | grep 9000

#killall php-fpm

# service php-fpm start

Starting php-fpm done启动成功

[root@lnmp etc]# ps aux |grep php-fpm

查看是否启动,查看进程

[root@lnmp etc]# netstat -lnp

查看监听端口

root     21454  0.0  0.1  26712  2972 ?        Ss   18:52   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

php-fpm  21455  0.0  0.1  26712  2656 ?        S    18:52   0:00 php-fpm: pool www

php-fpm  21456  0.0  0.1  26712  2656 ?        S    18:52   0:00 php-fpm: pool www

root     21458  0.0  0.0   5980   740 pts/0    R+   18:52   0:00 grep php-fpm

以上笔记已经将PHP安装完毕,以下内容经供参考

[root@LNMP php-5.4.45]# vim /usr/local/php/etc/php-fpm.conf

把如下内容写入该文件:

[global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log [www] listen = /tmp/php-fcgi.sock user = php-fpm group = php-fpm pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024

保存配置文件后,检验配置是否正确的方法为:

/usr/local/php/sbin/php-fpm -t

如果出现诸如 “test is successful” 字样,说明配置成功。

(8)启动php-fpm

首先要拷贝一个启动脚本到/etc/init.d/下

[root@LNMP php-5.4.45]# cp /usr/local/src/php-5.4.45/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

给它更改权限为755

[root@LNMP php-5.4.45]# chmod 755 /etc/init.d/php-fpm

重新启动php-fpm服务

[root@LNMP php-5.4.45]# service php-fpm start

如果想让它开机启动,执行:

[root@LNMP php-5.4.45]# chkconfig php-fpm on

检测是否启动:

[root@LNMP php-5.4.45]# ps aux |grep php-fpm

root      5901  0.0  0.1  26888  3144 ?        Ss   23:32   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

php-fpm   5902  0.0  0.1  26888  2660 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5903  0.0  0.1  26888  2660 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5904  0.0  0.1  26888  2660 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5905  0.0  0.1  26888  2660 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5906  0.0  0.1  26888  2660 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5907  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5908  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5909  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5910  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5911  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5912  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5913  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5914  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5915  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5916  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5917  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5918  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5919  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5920  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

php-fpm   5921  0.0  0.1  26888  2664 ?        S    23:32   0:00 php-fpm: pool www

root      5924  0.0  0.0   5984   752 pts/0    S+   23:36   0:00 grep php-fpm


本文出自 “12350027” 博客,谢绝转载!

PHP编译安装