CentOS 6.9 yum安装nginx、php

序:好久没有写过博客了。这篇文章本应在半年前写的,无奈,人太懒了…… 刚好这里因为工作原因,又要搭建一套环境,我又到处百度,想想还是记录一下。

一、安装Nginx

1、查看系统版本信息(centos 6.X 和 7 略有不同)

[root@DevNginx nginx]# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.9 (Final)
Release: 6.9
Codename: Final

[root@DevNginx nginx]# cat /etc/centos-release
CentOS release 6.9 (Final)

2、创建源配置文件nginx.repo

vim /etc/yum.repos.d/nginx.repo

填写如下类容:

[nginx] name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

保存,生成一个新的nginx.repo文件

3、安装Nginx

安装:yum install nginx -y

开机启动:centos6 : chkconfig nginx on

             centos7 : systemctl enable nginx

常用操作:centos6 : service nginx stop|start|reload|restart|status|…

             centos7 : systemctl stop|start|reload|restart|status|… nginx

4、防火墙

service nginx start 启动Nginx,如果无法访问,需要开启防火墙开放端口

查看防火墙状态:service iptables status

修改防火墙开放端口号:vim /etc/sysconfig/iptables

修改完重启防火墙:service iptables restart

注:当使用阿里云等服务商的服务器时,修改防火墙无效,需要到控制台→安全策略进行配置

二、安装PHP

1、检查当前是否安装PHP

yum list installed | grep php

删除之前版本:yum remove php* php-common

2、安装源

yum install epel-release

centos 7.x :  rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

centos 6.x :  rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

3、安装

你可以查看可安装的PHP版本及插件:yum list php*

这里我全部安装:

yum install php71w php71w-mysql php71w-odbc php71w-common php71w-embedded php71w-pgsql php71w-xml php71w-ldap php71w-fpm php71w-gd php71w-pdo php71w-devel php71w-mbstring php71w-mcrypt php71w-cli php71w-json php71w-imap php71w-bcmath mod_php71w php71w-pear

4、启动PHP服务

[root@DevNginx nginx]# whereis php-fpm
php-fpm: /usr/sbin/php-fpm /etc/php-fpm.conf /etc/php-fpm.d /usr/share/man/man8/php-fpm.8.gz
[root@DevNginx nginx]# service php-fpm start
正在启动 php-fpm:
[root@DevNginx nginx]# service php-fpm status
php-fpm (pid 1929) 正在运行…

开机自动启动:chkconfig php-fpm on

5、配置Nginx 使用PHP

location ~ \.php$ {
    #root /usr/share/nginx/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

三、终

每次更改nginx配置文件之后都要记得重启。今天搭的服务器是在公司本地服务器上的虚拟机上面,用作测试,在Nginx上配了反向代理,但是我在测试的时候,发现无法访问。我自己的本地和线上服务器是没有问题的,都是一样的配置。真的很奇怪,后来查看日志:

tail -f /var/log/nginx/error.log

2018/06/11 14:57:54 [error] 2653#2653: *79 open() “/usr/share/nginx/html/platform/favicon.ico” failed (2: No such file or directory), client: 192.168.1.92, server: localhost, request: “GET /favicon.ico HTTP/1.1”, host: “192.168.1.202”, referrer: “http://192.168.1.202/”

最后百度到:RELOAD不靠谱啊!!!!必须stop再启动才可以

停止nginx -s stop
重启nginx -c nginx.conf

这个还是第一次遇到,因为以前安装的时候都是手动将Nginx添加到service启动,今天用yum安装Nginx时,自动就添加到service启动了。不过不管怎么说,总算完成了,还是记录一下,下次不想再到处百度找教程了。还记得上次通过编译安装,哇,简直要人命!


2018-7-19 补充:

昨晚断电,公司服务器今天重启了,遇到奇怪的问题:接口没有响应,查看错误日志如下:

2018/07/19 10:49:54 [crit] 2287#2287: *16 connect() to 192.168.1.209:2001 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: “POST /api/sct/webLogin HTTP/1.1”, upstream: “http://192.168.1.209:2001/api/sct/webLogin”, host: “127.0.0.1”

网上查询结果:SeLinux导致的权限问题

解决方法:

查看SELinux状态:
1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
SELinux status:                 enabled
2、getenforce                 ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0                  ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可

来源:osheep

这里我直接临时关闭了,但是感觉关闭selinux还是挺暴力的,不是挺推荐,百度发现另一个解决方法,应该是要给php-fpm 权限,解决方法:自己百度 (未验证)。

2019-10-7补充

京东云和阿里云区别还是挺大的。工作需要,要在京东云上搭建项目。

补充点1:查看版本信息

补充点2:配置nginx的yum源无效,见上面[创建源配置文件nginx.repo],直接通过rpm安装

nginx源:http://nginx.org/packages  找到需要安装的nginx的rpm包,通过rpm直接安装,我这里安装1.12.1

参考:CentOS 6.9/7通过yum安装指定版本的Nginx

 

2020-07-13补充

实在没想到,这个项目我还在维护。。。

老板些接了很多项目,都相当于卖系统了,并在这个系统上做定制开发。这不,这个甲方爸爸我们不仅系统卖了,帮人家搭建了项目,人家还组了个开发团队,要自己做后续的定制开发。还要负责给人讲怎么部署,人家自己搭建了个测试环境,这就给我挖了个坑。。。

我给布的生产环境:CentOS6.9 + Nginx1.12.1 + PHP7.1.33

甲方爸爸自己部署的测试环境:CentOS8.1.1911 + Nginx1.14.1 + PHP7.2.24

问题:甲方部署完成后,将生产环境的配置信息迁移到了测试环境,并作了相应的更改,但是可以访问HTML文件,PHP无法访问,报404。

问题排查:

html可以访问,但PHP文件不行,怀疑是PHP文件解析问题,检查php-fpm服务,各种服务重启,查看配置:

也感觉没啥问题,然后网上查资料,看到centos8安装PHP配置是有点区别,然后修改如下:

中间走了很多弯路,虽然知道肯定是解析这配置问题,但是网上找资料也很多不清不楚,试了好些都不行。期间还发现9000端口没有监听:

查看端口是否被占用:netstat -nltp |grep 9000

查看特定程序占用端口:ps axu |grep 程序名,找到特定程序的pid,然后根据pid查端口:netstat -nltp |grep pid 即可。

最终,百度搜索CentOS8安装nginx、php,找了几篇文章,终于ok。

主要修改两处:更改 vim /etc/php-fpm.d/www.conf

1594653880(1)

参考:阿里云CentOS8安装nginx+php-fpm

CentOS 8.1下搭建LEMP(Linux+Nginx+MySQL+PHP)环境(教程详解)