怎样使用 Nginx 在子域上安装 WordPress

WordPress 是一种流行的自托管内容管理系统 (CMS),通常用于为博客和通用网站提供支持。 构建一个快速可靠的 WordPress 网站需要一个稳定的网络服务器(如 Nginx)来提供特定域上的网站访问者请求的所有必要文件。

将 Nginx 设置为 Web 服务器,将 MySQL 或 MariaDB 设置为数据库服务器,本文将介绍怎样在子域上安装 WordPress 并将其配置为与底层基础设施良好配合。

先决条件

在开始之前,请务必:

  • 部署 Vultr One-Click LEMP 服务器,或安装新的 Ubuntu 20.04 服务器和 LEMP 堆栈。
  • 创建一个子域并将其指向服务器。
  • 以非 root 用户身份访问服务器 sudo 特权。

在本文中,子域 wp.example.com 出于演示目的出现,请务必将所有出现的地方替换为您的实际子域。

设置 WordPress 数据库

登录 MySQL 数据库服务器。

$ mysql -u root -p

创建一个新的数据库。

mysql> CREATE DATABASE wp;

创建一个使用强密码保护的新数据库用户。

mysql> CREATE USER `wpuser`@`localhost` IDENTIFIED BY ‘Strong-Password’;

向 WordPress 数据库中的用户授予完全权限。

mysql> GRANT ALL PRIVILEGES ON wp.* TO 'wpuser’@’localhost';

刷新 MySQL 权限。

mysql> FLUSH PRIVILEGES

Exit MySQL 控制台。

mysql> EXIT

安装 WordPress

创建一个新的 WordPress 文件目录。

$ sudo mkdir /var/www/wp.example.com

下载最新的 WordPress 发布文件。

$ wget https://wordpress.org/latest.tar.gz

从存档中提取文件。

$ tar -xzf latest.tar.gz

将提取的文件移动到 WordPress 目录。

$ sudo mv wordpress/* /var/www/wp.example.com

授予 Nginx 对该目录的读写权限。

$ sudo chown -R www-data:www-data /var/www/wp.example.com

配置 Nginx

创建一个新的 Nginx 服务器块 /etc/nginx/sites-available 目录。

$ sudo touch /etc/nginx/sites-available/wp.example.com.conf

使用您选择的文本编辑器,编辑服务器块文件。

$ sudo nano /etc/nginx/sites-available/wp.example.com.conf

将以下配置行复制并粘贴到文件中。

fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=WP:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
        listen 80;
        root /var/www/wp.example.com;
        index index.php index.html index.htm;

        server_name wp.example.com;

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

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

location / {
                # try_files $uri $uri/ =404;
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        location ~ .php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                # Enable FastCGI Caching
                fastcgi_cache WP;
                fastcgi_cache_valid 200 60m;
        }
}

Save 和 close 文件。

配置文件包括 WordPress 网站的 FastCGI 缓存和 PHP 设置。

测试 Nginx 的配置错误。

$ sudo nginx -t

通过将 Nginx 服务器块链接到 /etc/nginx/sites-enabled 目录。

$ sudo ln -s /etc/nginx/sites-available/wp.example.com.conf   /etc/nginx/sites-enabled/wp.example.com.conf

重新启动 Nginx 以使更改生效。

$ sudo systemctl nginx restart

启动 PHP-FPM 以提供 WordPress PHP 文件。

$ sudo systemctl php7.4-fpm start

安全

允许 HTTP 和 HTTPS 端口通过防火墙。

在带有 UFW 的基于 Debian 的系统上:

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

在具有 FirewallD 的基于 RHEL 的系统上:

$ sudo firewall-cmd --permanent --zone=public --add-service=http.
$ sudo firewall-cmd --permanent --zone=public --add-service=https.

安装 Certbot 以使用 HTTPS 保护 WordPress 站点。

在基于 Debian 的系统上:

$ sudo apt install certbot python3-certbot-nginx

在基于 RHEL 的系统上:

$ sudo yum install certbot python3-certbot-nginx

使用 Certbot 请求免费的 Let’s Encrypt SSL 证书。

$ sudo certbot -d wp.example.com -d www.wp.example.com

编辑 Nginx 服务器块文件。

$ sudo nano /etc/nginx/sites-available/wp.example.com.conf

server{ 部分将所有 HTTP 请求重定向到 HTTPS,并限制对关键网站文件的访问,例如 .php.htaccess.

# Redirect all HTTP requests to HTTPS

return 301 https://wp.example.com$request_uri;

# Deny access to hidden files such as .htaccess

location ~ /. {
        deny all;
        access_log off;
        log_not_found off;
}

# Deny access to any PHP files In the WordPress uploads directory

location /source/uploads/ {
        location ~ .php$ {
                deny all;
        }
}

配置 WordPress

在您的本地计算机上启动一个新的 Web 浏览器会话并访问您配置的子域。

https://wp.example.com
  1. 点击 开始使用 开始 WordPress 设置过程。
  2. Enter 之前创建的数据库信息。
  3. Enter WordPress 网站标题,并设置一个新的管理员帐户。
  4. 完成设置并登录 WordPress 网站。
  5. 从 WordPress 管理员仪表板,导航到 插件 并点击 添加新插件.
  6. 在插件搜索字段中,输入关键字 Nginx 助手,然后在 WordPress 网站上下载并安装它。
  7. 找到 Nginx 助手 WordPress 设置下拉菜单中的插件,并切换可用选项以使用 Nginx 微调您的 WordPress 网站。
  8. 作为最低限度,启用 缓存清除 每次网站上出现新的更改时自动清除 FastCGI 缓存。

下一步

您已成功在带有 Nginx 的子域上安装了 WordPress,有关怎样使用 WordPress 和 Nginx 的更多信息,请参阅以下资源:

  • 怎样为 WordPress 设置 Redis 缓存
  • 您应该从共享主机转移到 Vultr 的 7 大理由 Cloud 服务器
  • 怎样使用 Ubuntu 或 Debian 在 LEMP 上安装 WordPress
  • 在 Debian 8 上使用 PageSpeed 模块编译和安装 Nginx
  • 在 Nginx 上将 HTTP 请求重定向到 HTTPS
  • 在 Ubuntu 上安装 Let’s Encrypt SSL Apache 或 Nginx

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com