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 权限,解决方法:自己百度 (未验证)。