linux 安装php 然后跟nginx整合

php-fpm安装配置

nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。

nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx

本文以php-fpm为例介绍如何使nginx支持PHP

一、编译安装php-fpm

什么是PHP-FPM

PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.

PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置php的,具体选项含义可以查看这里

安装前准备

添加 epel 源

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装依赖

# yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel
1 yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel \
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \
ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
krb5 krb5-devel libidn libidn-devel openssl openssl-devel
 
 cd /usr/local/src
 wget http://php.net/get/php-5.6.30.tar.gz/from/this/mirror
 tar -zvxf php-5.6.30.tar.gz
 cd php-5.6.30

./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \
--enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath \
--enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
--with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar
make && make install
 

以上就完成了php-fpm的安装

编译的时候出现很多error,如下:
编译error:
1、configure: error: Cannot find OpenSSL's <evp.h>
办法:
yum  install  openssl.x86_64 openssl-devel.x86_64 -y
 
2、configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/
办法:
yum install libcurl.x86_64 libcurl-devel.x86_64 -y
3、If configure fails try --with-vpx-dir=<DIR> configure: error: jpeglib.h not found.
办法:
yum install libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 -y
 
在yum这些包的时候,再次执行./configure的时候,再次出错。
然后,又yum一遍,提示出No package libjpeg-devel.x86_64,在yum库中没有找到这个包。
可以利用yum -y update命令更新yum库,更新完成以后,可以再次yum install,如果这一步成功,皆大欢喜。
如果依旧不可以,使用下一种方法,利用yum search 包名(例libjpeg-devel.x86_64可以写成libjpeg),可以搜出一些,可以找到相应其他的包
 
4、configure: error: Cannot find ldap.h
办法:
yum install php-ldap.x86_64 -y
yum install openldap-devel.x86_64 -y
 
5、configure: error: Don’t know how to define struct flock on this system, set –enable-opcache=no
解决方案:
vim /etc/ld.so.conf.d/local.conf  (local.conf可以随便起名称,以.conf为后缀就可)
添加
/usr/local/lib
:wq 保存
ldconfig -v  生效
 
6、error: Cannot find ldap libraries in /usr/lib 这个可能是由于libldap32和libldap64冲突:
解决方法:cp -frp /usr/lib64/libldap* /usr/lib/
在Linux下安装PHP过程中,编译时出现configure: error: libjpeg.(a|so) not found 错误的解决办法
 
检查之后发现已经安装了libjpeg

[root@localhost php-5.2.14]# yum list installed|grep libpng
libpng.x86_64           2:1.2.49-1.el6_2

或者:

[root@localhost php-5.2.14]# rpm -qa|grep libjpeg
libjpeg-turbo-1.2.1-3.el6_5.x86_64

安装libjpeg-devel

yum -y install libjpeg-devel

[root@localhost php-5.2.14]# yum list installed|grep libjpeg
libjpeg-turbo.x86_64    1.2.1-3.el6_5   @base                                   
libjpeg-turbo-devel.x86_64
[root@localhost php-5.2.14]# rpm -ql libjpeg-turbo-devel.x86_64
/usr/include/jconfig.h
/usr/include/jerror.h
/usr/include/jmorecfg.h
/usr/include/jpeglib.h
/usr/lib64/libjpeg.so
/usr/share/doc/libjpeg-turbo-devel-1.2.1
/usr/share/doc/libjpeg-turbo-devel-1.2.1/coderules.txt
/usr/share/doc/libjpeg-turbo-devel-1.2.1/example.c
/usr/share/doc/libjpeg-turbo-devel-1.2.1/jconfig.txt
/usr/share/doc/libjpeg-turbo-devel-1.2.1/libjpeg.txt
/usr/share/doc/libjpeg-turbo-devel-1.2.1/structure.txt

下面是对php-fpm运行用户进行设置

1、为php提供配置文件

1 cp php.ini-production /usr/local/php/etc/php.ini

2、为php-fpm提供配置文件

1 cd /usr/local/php
2 cp etc/php-fpm.conf.default etc/php-fpm.conf
3 vim etc/php-fpm.conf

修改
user = www
group = www

如果www用户不存在,那么先添加www用户

1 groupadd www
2 useradd -g www www
修改
pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pid = /usr/local/php/var/run/php-fpm.pid 

3、启动php-fpm

执行

1 /usr/local/php/sbin/php-fpm
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
1 ps aux | grep php-fpm

3、nginx和php-fpm整合

编辑/usr/local/nginx/nginx.conf

1 vim /usr/local/nginx/nginx.conf

修改如下:

红框中“#”号去掉

红框中“#”号去掉

添加红框中内容

改成如下

重新载入nginx的配置文件:

1 /usr/loca/nginx/sbin/nginx -s reload

4、测试php文件

 在/usr/local/nginx/html下创建index.php文件,输入如下内容

1 <?php
2     phpinfo();
3 ?>

5、浏览器访问

访问http://你的服务器ip/index.php,皆可以见到php信息了。

猜你喜欢

转载自www.cnblogs.com/songanwei/p/9369692.html