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方式)