CentOS7 nginx+php-fpm 环境安装

SELinux

  1. 查看
    1. getenforce/usr/sbin/sestatus -v
    2. Enforcing 是启用,Disabled 是禁用
  2. 永久关闭
    1. 编辑文件 /etc/selinux/config
    2. SELINUX=enforcing 改为 SELINUX=disabled
    3. 重启

启用网络

  1. 查看网络连接:ip addr

  2. 编辑文件 /etc/sysconfig/network-scripts/ifcfg-ens33ens33 是网络名称)

  3. ONBOOT=no 改为 ONBOOT=yes

  4. 使用静态IP(可跳过)

    1. 修改 BOOTPROTO=dhcpBOOTPROTO=static

    2. 追加以下代码(使用自己的IP信息)

      IPADDR=192.168.1.200
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.1
      DNS1=114.114.114.114
      DNS2=8.8.8.8
      
  5. 重启网络服务 systemctl restart network

防火墙

  1. 停止 sudo systemctl stop firewalld.service
  2. 禁用(谨慎) sudo systemctl disable firewalld.service

EPEL 扩展包

sudo yum install -y epel-release

bash自动补全(可选)

sudo yum install -y bash-completion

安装 nginx

安装:

sudo yum install -y nginx
sudo systemctl enable nginx

注意:如果以上安装不能正常进行,可能需要先补源。新建 /etc/yum.repos.d/nginx.repo 文件,添加以下内容,再尝试上述命令。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

安装PHP

参见

sudo yum install -y yum-utils http://rpms.remirepo.net/enterprise/remi-release-7.rpm
// 以下任选一个
sudo yum-config-manager --enable remi-php70
sudo yum-config-manager --enable remi-php71
sudo yum-config-manager --enable remi-php72
sudo yum-config-manager --enable remi-php73
sudo yum install -y php php-fpm php-zip php-gd php-pdo php-pdo_mysql php-xml php-mbstring php-ctype php-json php-openssl
sudo systemctl enable php-fpm

安装PHP扩展

版本视实际情况调整

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
sudo yum list php72w*
sudo yum install php72w-soap

配置环境

配置 php

  1. 打开 /etc/php.ini
  2. 修改 ;cgi.fix_pathinfo=1cgi.fix_pathinfo=1

配置 php-fpm (可选)

在linux中,nginx 服务器和 php-fpm 可以通过 tcp socket 和 unix socket 两种方式实现。

unix socket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。这种方式需要再 nginx 配置文件中填写 php-fpm 的 pid 文件位置,效率要比 tcp socket 高。

tcp socket 的优点是可以跨服务器,当 nginx 和 php-fpm 不在同一台机器上时,只能使用这种方式。windows 系统只能使用 tcp socket 的通信方式。

php-fpm 默认使用 tpc socket ,以下是修改为 unix socket 方式的配置。

  1. 打开 /etc/php-fpm.d/www.conf
  2. 修改以下配置:
原配置
listen = 127.0.0.1:9000
修改为
listen = /var/run/php-fpm/php-fpm.sock
# sock文件放在 /dev/shm 目录下有助于性能提升,此目录位于内存中

原配置
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
修改为
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
  1. 重载 systemctl restart php-fpm.service

配置 nginx

  1. /etc/nginx/config.d/ 目录下创建 .conf 文件,例如 host.conf参照该文档进行配置

php-fpm 配置若不修改,fastcgi_pass 参数应该使用 127.0.0.1:9000;

判断访问权限

  1. 查看 nginx.confuser
  2. 将上一步的 user 值代替 www-data ,然后执行:sudo -u www-data stat /test/path/static
  3. 确保 stat 能显示目录信息,如果出现 权限不够 ,需要先调整权限,保证第1步中的 user 拥有权限

参考资料:

  1. https://nginx.org/en/linux_packages.html#RHEL-CentOS
  2. https://docs.lvrui.io/2017/04/01/nginx%E9%85%8D%E7%BD%AEhttp%E5%BC%BA%E5%88%B6%E8%B7%B3%E8%BD%AChttps/
  3. http://seanlook.com/2015/05/28/nginx-ssl/