前言

之前本站的程序是部署在docker容器里,然后使用物理机的Nginx转发请求到docker中的Apache2,现在改为直接将应用部署到Nginx中,不再做一层额外转发,因此需要配置Nginx支持PHP。CentOS默认源中只有PHP5.4,但由于zblog不支持PHP5.4,故本文使用的是PHP7.4。Nginx直接使用源里默认的很简单,这里不再赘述过程。本文主要讲解PHP7.4的安装和配置。

  • 系统:CentOS 7

  • Nginx: 1.20.1

  • PHP: 7.4


一、添加EPEL和REMI存储库

运行以下命令以添加所需的存储库:

sudo yum install epel-release
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm


二、在CentOS 7上安装PHP7.4版本

我们现在可以启用PHP 7.4 Remi存储库并在CentOS 7上安装PHP 7.4:

sudo yum -y install yum-utils (可不用)
yum repolist all | grep php
sudo yum-config-manager --enable remi-php74

在CentOS 7上安装PHP 7.4 以及扩展:

sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis php-calendar php-bcmath php-sockets php-session php-snmp

安装完毕后确认PHP的版本,应该是7.4:

php -v

如果要查看启用的模块,请运行:

php --m


三、配置PHP7.4支持Nginx

1. 编辑PHP的配置文件,/etc/php.ini,注意去掉分号注释:

vim /etc/php.ini

;cgi.fix_pathinfo=1

改为

cgi.fix_pathinfo=0


2. 编辑PHP-FPM配置文件:

vim /etc/php-fpm.d/www.conf

user = apache
group = apache

改为

user = nginx
group = nginx

前提是已经创建了nginx用户和nginx组。如果没有创建方法:

groupadd -r nginx 
useradd -r -g nginx nginx

查看用户

cat /etc/passwd

查看用户组

cat /etc/group


3. 启动PHP—FPM

systemctl start php-fpm


4. 设置开机启动

systemctl enable php-fpm


四、配置Nginx支持PHP7.4解析

1. 进入文件夹/etc/nginx/default.d/ ,新建一个文件php.conf,内容如下:

location ~ .php$ {
    try_files $uri = 404;
    root /var/www/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

值得注意的是,我这里root对应的路径是/var/www/html,这是因为我之前的应用部署在Apache,默认路径就在这,所以这里直接设置根路径在这里。读者应根据自己的情况设置这一块。


2. 编辑/etc/nginx/nginx.conf,配置:

location / {

    if (-f $request_filename/index.html){
                rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
                rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
                rewrite (.*) /index.php;
    }

    root /var/www/html/;
    index index.php;
    #proxy_pass http://zblog;
}


3. 保存退出,重启或重新加载nginx

重启:

systemctl restart nginx

或者:

nginx -t
nginx -s reload


五、设置网站目录权限

nginx使用nginx用户运行,需要有相应的权限才能创建或修改网站应用下的文件:

sudo chown nginx:nginx -R /var/www/html


参考文章:

  1.  CentOS 7上安装并配置Nginx、PHP、MySql

  2.  centos7安装php7.4