相关资源与链接

Wordpress-12:在 VPS 上原生部署 Wordpress

这一节课主要涉及内容:在全新的 CentOS VPS 上借助 AI 完成 WordPress 的完整部署,包括 MariaDB、Nginx、PHP-FPM、文件权限、域名解析与 SSL 证书配置。

环境准备

官方教程:https://developer.wordpress.org/advanced-administration/before-install/

AI 引导:https://chatgpt.com/share/6a2639de-9ea8-83a7-b73a-38cc201a2d0c

我现在要在 centos 上部署 wordpress,使用的数据库是 MariaDB,之后再使用 nginx 反向代理,并使用 certbot 进行 ssl 证书添加

请告诉我具体的步骤

系统:Centos Stream 9

sudo dnf update -y
sudo dnf install -y epel-release
sudo dnf install -y wget curl unzip vim policycoreutils-python-utils

数据库:MariaDB

sudo dnf install -y mariadb-server mariadb
sudo systemctl enable --now mariadb

# 初始化安全配置:
sudo mysql_secure_installation

# Settings
# Set root password? Y
# Remove anonymous users? Y
# Disallow root login remotely? Y
# Remove test database? Y
# Reload privilege tables? Y

# 创建 WordPress 数据库和用户
sudo mysql -u root -p

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '请换成强密码';

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';

FLUSH PRIVILEGES;

EXIT;

代理:Nginx

从这一步开始需要调整,我需要使用 nginx + php 插件直接来运行 Wordpress,不需要再多安装一个 apache

ps:我的系统是 centos stream 9

安装

sudo dnf install -y nginx
sudo dnf install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-curl php-zip php-intl php-json php-opcache

sudo systemctl enable --now nginx
sudo systemctl enable --now php-fpm

# 配置 php-fpm
sudo vim /etc/php-fpm.d/www.conf

安装:Wordpres

# 下载并放置 WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz

sudo dnf install tar
tar -xzf latest.tar.gz

# 移动源码
sudo mkdir -p /var/www
sudo mv wordpress /var/www/wordpress

# 设置文件权限
sudo chown -R nginx:nginx /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;

配置 Wordpress:

cd /var/www/wordpress
sudo cp wp-config-sample.php wp-config.php
sudo vim wp-config.php

配置 nginx

sudo mkdir -p /etc/nginx/sites-available
sudo mkdir -p /etc/nginx/sites-enabled

sudo vim /etc/nginx/nginx.conf

# 添加下面这一行
include /etc/nginx/sites-enabled/*;

# 变成
http {
    ...

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

sudo vim /etc/nginx/sites-available/wordpress

# 添加内容后 :wq 保存退出

# 软链接
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress

# 测试配置是否正确
sudo nginx -t

# 应用新配置
sudo systemctl reload nginx

参考配置(域名需替换):

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/wordpress;
    index index.php index.html index.htm;

    client_max_body_size 64M;

    access_log /var/log/nginx/wordpress_access.log;
    error_log /var/log/nginx/wordpress_error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;

        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|avif|woff|woff2|ttf|eot)$ {
        expires max;
        log_not_found off;
    }

    location ~ /\.ht {
        deny all;
    }

    location = /xmlrpc.php {
        deny all;
    }
}

绑定域名:Cloudflare

Cloudflare - 域名 - DNS - 添加 A 记录

配置 SSL 证书

sudo dnf install -y epel-release
sudo dnf update -y
sudo dnf install -y certbot python3-certbot-nginx

certbot --version

# 申请证书(替换域名)
sudo certbot --nginx -d example.com

# 更新 nginx 配置
sudo nginx -t
sudo systemctl reload nginx

页面配置:

  • 输入地址:wp.justincourse.site
  • 按向导配置(最好尽快)

课程讨论与答疑

提问默认仅你和管理员可见;管理员精选后会作为公开讨论展示。

正在载入讨论…