从零开始:命令行部署 WordPress 与 Nginx/Certbot 自动 SSL 续期

摘要

本文档详细记录了在 Linux 环境下,通过 wp-cli 快速部署 WordPress 实例,并结合 Nginx 作为 Web 服务器,配置 certbot 实现域名 SSL 证书的自动获取与续期过程。


1. 环境准备与核心文件部署

1.1 数据库准备

完成数据库的创建、用户授权和数据库的创建。

1.2 安装 WP-CLI

通过 Phar 包安装 WP-CLI 以实现无头部署:

sudo curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
sudo chmod +x /usr/local/bin/wp

1.3 部署 WordPress 核心

我们将网站根目录定在 /var/www/html/blog,并确保所有权归于 Web 服务器用户 www-data,以避免权限冲突:

# 假设数据库名为 wordpress_db,用户为 wp_user,主机为 localhost
sudo mkdir -p /var/www/html/blog
sudo chown -R www-data:www-data /var/www/html/blog

# 下载核心文件(中文版)
sudo -u www-data /usr/local/bin/wp core download --locale=zh_CN --path=/var/www/html/blog

# 创建 wp-config.php
sudo -u www-data /usr/local/bin/wp config create --dbname=wordpress_db --dbuser=wp_user --dbpass='<DB_PASSWORD_PLACEHOLDER>' --locale=zh_CN --path=/var/www/html/blog

# 核心安装
sudo -u www-data /usr/local/bin/wp core install --url='https://blog.8912345.xyz' --title='我的博客' --admin_user='admin_user' --admin_password='<ADMIN_PASSWORD_PLACEHOLDER>' --admin_email='admin@example.com' --skip-email --path=/var/www/html/blog

注:请将 和 替换为您设置的实际安全密码。

  1. Nginx 服务器配置与 502 解决

关键修复点: 确保 Nginx Worker 进程用户与 PHP-FPM Socket 权限一致。通过检查 /etc/nginx/nginx.conf,我们将 user 指令从 nginx; 修改为 user www-data;,并重启服务,从而解决了 502 Bad Gateway (Permission denied) 问题。

我们配置的 Nginx 站点文件 /etc/nginx/conf.d/blog.conf 确保了 HTTP 到 HTTPS 的重定向,并预留了 Certbot 验证路径。

  1. 自动 SSL 证书集成 (Let’s Encrypt)

为实现自动续期,我们使用了 Nginx 配置来指向 Let’s Encrypt 的标准证书路径,并依赖 Certbot 自动完成部署和定时续期任务。

下一步操作:

运行 Certbot 客户端完成首次验证和部署:

sudo certbot --nginx -d blog.8912345.xyz

Certbot 将自动完成证书的获取、配置写入 blog.conf,并设置 Cron 任务进行后续续期。

Posted in 网站 | Leave a comment