[WordPress系列之010] LNMP 配置 PHP 和 Nginx 运行 WordPress

By 程序知路 | 2022-06-11
0
(0)

当 Nginx、MySQL 和 PHP-FPM 安装完成后,还需要做些基本的配置工作才能运行 PHP 程序。

比如设定 Nginx 和 PHP 运行时的用户。在前面(编译安装时,参考: [WordPress系列之006] CentOS 7 部署 LNMP 之 源码编译安装 Nginx )已经新建了用户 nginx ,以后以此用户来运行 Nginx ,由于在前面已经配置了这一步,这里就没必要再提及了。

那么 PHP-FPM 也要配置它的运行时用户,这里将 nginx 用户也用于 PHP-FPM。如果不设置 PHP-FPM 的运行时用户为 nginx,可能会导致服务器返回 HTTP 503 错误。

前面安装了 Nginx、MySQL 和 PHP,安装 MySQL 5.7 和 PHP 7.4 的过程请参考:

[WordPress系列之009] 部署 LNMP 之 CentOS 7 安装MySQL 5.7 以及 PHP 7.4

配置 PHP-FPM

打开 PHP-FPM 的配置文件 /etc/php-fpm.d/www.conf

  1. 首先將 user 和 group 两个设置项的值设为 nginx。

    原来的配置:

    user = apache
    group = apache
    

    配置后:

    user = nginx
    group = nginx
    
  2. 打开 listen.backlog = 511 的注释,并修改为:
    listen.backlog = 1024
    
  3. 打开以下三行的注释,并修改为 Nginx 的运行用户:
    ; 之前
    ;listen.owner = nobody
    ;listen.group = nobody
    ;listen.mode = 0660
    
    ; 之后
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660
    
  4. 注释掉下面这行
    ;listen.acl_users = apache,nginx
    
  5. 注释并修改以下行
    ; listen = /run/php-fpm/www.sock
    listen = 127.0.0.1:9000
    

保存文件并退出。

重启 PHP-FPM 系统服务:

systemctl restart php-fpm.service
# 查看状态
systemctl status -l php-fpm.service

配置 Nginx

打开 Nginx 的配置文件 /etc/nginx/nginx.conf

这里使用 WordPress 官方建议的配置(网址: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/ ):

把下面的配置放进文件的 http 块中,并且删除掉原有的内容。

# Upstream to abstract backend connection(s) for php
upstream php {
    # server unix:/tmp/php-cgi.socket;
    server 127.0.0.1:9000;
}

server {
        ## Your website name goes here.
        # 这里设置为你的域名
        server_name test.com;
        ## Your only path reference.
        # WordPress 网站的根目录路径
        root /var/www/wordpress;
        ## This should be in your http block and if it is, it's not needed here.
        index index.php;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                # This is cool because no php is touched for static content.
                # include the "?$args" part so non-default permalinks doesn't break when using query string
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                include fastcgi_params;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
                #The following parameter can be also included in fastcgi_params file
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

保存文件并退出。

当前 Nginx 配置文件全文是这样的:

user  nginx;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid         /run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # Upstream to abstract backend connection(s) for php
    upstream php {
        # server unix:/tmp/php-cgi.socket;
        server 127.0.0.1:9000;
    }

    server {
        ## Your website name goes here.
        # 这里设置为你的域名
        server_name test.com;
        ## Your only path reference.
        root /var/www/wordpress;
        ## This should be in your http block and if it is, it's not needed here.
        index index.php;

        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }

        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }

        location / {
            # This is cool because no php is touched for static content.
            # include the "?$args" part so non-default permalinks doesn't break when using query string
            try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            include fastcgi_params;
            fastcgi_intercept_errors on;
            fastcgi_pass php;
            #The following parameter can be also included in fastcgi_params file
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
             expires max;
             log_not_found off;
        }
    }
}

重启 Nginx 系统服务:

systemctl restart nginx
# 查看状态
systemctl status -l nginx

测试 PHP-FPM 和 Nginx 的连通状态

  1. 进入目录 /var/www
  2. 新建目录 wordpress

  3. 进入目录 wordpress

  4. 新建文件 test.php 并将以下代码放进文件中:

    <?php
    phpinfo();
    

    保存文件并退出。

  5. 更改上述文件的属主:

    chown nginx . -R
    

用浏览器访问域名。如果得到 PHP 信息页面,那么就表示 LNMP 架构基石层搭建完毕。

现在文件 test.php 已经完成它的使命,把它删除掉。

下一篇文章将介绍配置 MySQL 数据库使 WordPress 安装程序正确运行。

如果在配置过程中有疑问,请先百度,若是得不到解决,可以联系作者: admin@chengxuzhilu.com ,我们共同探讨一下。

欢迎访问本人的博客和关注微信公众号!

相关文章:

喜欢就请您给我评一下分吧!(从左到右为低分到高分)

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.


鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@chengxuzhilu.com