周氏一族,整理技术文档,给下一代留点教程...
Nginx 的功能就不多说了,不懂的请直接百度,Nginx + php 安装是比较负责,经常会出错,网上也是大家说的千篇一律,没有一个比较完美的做法
下面是我自己研究的一种最简单化的安装方式,记录一下,以防自己忘记。
先说明哦,这个是用yum安装,但是他们是公用yum,而不像哪些人,要把机器的repo修改掉,再来yum,我这个yum是所有机器,不需要修改任何yum源就行的,也就是公用资源yum,但是nginx,必须用源码,源码到官网获取
1、安装Nginx+php之前呢,需要先安装PHP,我一条命令搞定,大家请看
[[email protected]_server ~]# yum -y install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel php php-devel php-fpm
千万不要去学人家源代码搞的,一塌糊涂,又是php,又是php-fpm,很糟糕,直接yum搞定,又稳定,除非你是需要修改php的源代码,那么,你就开始蛋疼的php-fpm源代码吧!
2、查看一下php是否安装成功,很明显,直接看看php-fpm有没有起来
最好是把他设置成开机,自动启动,这个你懂得,这么简单的事情
3、下面开始安装Nginx,安装之前,先安装一下环境,yum即可
[[email protected]_server ~]# yum -y install pcre* openssl* zlib*
4、上传Nginx文件到指定目录,/usr/tmp下面
5、开始安装
[[email protected]_server ~]# cd nginx-1.6.0
[[email protected]_server nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=apache --group=apache --with-http_ssl_module --with-http_gzip_static_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
[[email protected]_server nginx-1.6.0]# make && make install
注意咯,这里configure,因为php采用yum安装,那么php官网的默认用户和组用户都是apache,所以,我们就要保证nginx的运行用户也是apache,故在编译的时候,就要指定--user=apache --group=apache
6、启动nginx
网页打开测试看看
7、测试PHP,按照Apache正常思路,我们直接上传一个php文件到nginx目录,应该就能打开
[[email protected]_server ~]# cd /usr/local/nginx/html/
[[email protected]_server html]# touch test.php
[[email protected]_server html]# vi test.php
<?php
phpinfo();
?>
现在网页打开看看,有没有问题
竟然,提示我下载?那就是说,php它还没解析到,如果可以解析到,或者说支持的话,它是直接执行php内部代码的,所以,得改。因为nginx默认只是解析html,这也就是为什么本文标题 nginx+php
8、修改配置,完成php+nginx
[[email protected]_server html]# vi /usr/local/nginx/conf/nginx.conf
user nobody; 改成 user apache apache;
worker_processes 2; 你服务器cpu有多少个就搞多少个吧,越多越好
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
把他们的前面 # 号全部去掉,然后修改成下面
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
至于为什么要这样改,你可以自己测试一下,我这里不讲
看到前面这个配置,我想大家现在的思路应该比较清晰了,首先是调用9000端口服务,也就是php-fpm,所以说嘛,php对nginx来说,就只不过是一个模块来的而已。
9、让nginx重新加载一下配置
[[email protected]_server html]# /usr/local/nginx/sbin/nginx -s reload
10、搞定