CentOS 6.x源码编译安装LNMP(FastCGI方式)

PHP 1546℃

CGI(Common Gateway Interface,公共网关接口)是Web服务器与外部程序(即CGI程序)之间的接口标准,用于两种不同程序之间的信息传递。 CGI规范允许Web服务器根据浏览器请求调用CGI程序,并将其输出结果通过响应发送给浏览器,从而使Web服务器支持处理复杂的网站业务需求。Web服务器支持CGI的意义不在于性能而在于开发速度。传统CGI性能上存在一个缺陷,就是每当客户端请求CGI时就创建一个新的进程,处理后退出,这种方式在大并发时显得非常低效。而CGI的改良版FastCGI改善了这个缺陷。FastCGI由一个常驻的CGI进程管理一个进程池来处理Web服务器的请求,由此提高了性能。Nginx和PHP均支持FastCGI。

在开始之前,已经完成了MySQL和nginx的安装,可参考:编译安装mysql5.5.59源码编译安装配置Nginx

1.安装依赖

yum -y install libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel zlib-devel gd-devel libxslt-devel openldap-devel
#由于openldap-devel生成的库文件在/usr/lib64/下,而PHP安装时会到/usr/lib/下读取,所以复制过去
cp -frp /usr/lib64/libldap* /usr/lib/
#由于yum中没有libmcrypt,需要编译安装
wget http://down1.chinaunix.net/distfiles/libmcrypt-2.5.7.tar.gz
tar -xvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make && make install

2.编译安装PHP

cd && wget http://jp2.php.net/distributions/php-5.6.37.tar.gz
tar -zxvf php-5.6.37.tar.gz
cd php-5.6.37
./configure --prefix=/usr/local/php --enable-fpm --with-zlib --enable-zip --enable-mbstring --with-mcrypt --with-mysql="/usr/local/mysql" --with-pdo-mysql --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-curl --with-openssl --with-mhash --enable-bcmath --enable-opcache --enable-sockets --with-ldap --with-gettext  --with-mysqli=/usr/local/mysql/bin/mysql_config
make && make install

上述的编译选项,使用大部分PHP项目,例如zabbix,实际生产环境可以根据自己项目特点选择适合的参数。一般来说前缀是enable的用于开启PHP的一些内置功能,前缀是with的依赖于系统中的共享库。

3.配置并启动PHP-FPM

PHP提供的PHP-FPM就是一个FastCGI进程管理器。在启动PHP-FPM之前先创建配置文件,PHP的配置文件主要包括php-fpm.conf和php.ini。

php.ini是PHP主配置文件,包括PHP的核心配置及各种扩展模块的配置,路径为/usr/local/php/lib/php.ini,但默认没安装。在PHP源码包下有两个预设的模板:php.ini-development适合开发环境(方便测试程序)、php.ini-production适合实际上线环境(安全性较高)。

php-fpm.conf是PHP-FPM配置文件,在/usr/local/php/etc/里有个默认模板,更名后即可使用。至此就可以使用/usr/local/php/php-fpm直接启动PHP-FPM,也可以使用PHP源码包中提供的service方式的启动脚本。这里将其复制到/etc/init.d中,再加入到chkconfig开机启动。PHP-FPM启动后默认监听9000端口。

cp ~/php-5.6.37/php.ini-production /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp ~/php-5.6.37/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig php-fpm on
service php-fpm start

4.配置nginx支持PHP

vim /usr/local/nginx/conf/nginx.conf
#修改server块里内容如下:
listen 80;
server_name localhost;
location / {
root html;
index index.php index.html index.htm;
}
location ~\.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
#保存后,检查nginx配置通过后重新载入
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

5.验证测试

echo '<?php echo phpinfo() ?>' /usr/local/nginx/html/index.php
curl 127.0.0.1

转载请注明:零五宝典 » CentOS 6.x源码编译安装LNMP(FastCGI方式)