本文来自我的个人博客:从一台空服务器到 WordPress 上线:全程敲命令,不用任何面板 – 叹惋博客
全程命令行操作,不靠任何面板,使性能利用最大化
写在前面
前两天写了一个搭建typecho的文章,有朋友看了问我你自己博客都是用wordpress的,咋先写了个搭建typecho的教程,哈哈哈哈哈哈,那我现在来写一下搭建wordpress教程。
我自己的博客是在一个有宝塔面板的服务器上的,不过我肯定不能把这个服务器拿来写教程,所以我要拿我在雨云买的另外一个配置较差服务器,鉴于宝塔面板有额外占用,我就选择了抛弃面板,转用纯命令行。
这篇文章会带你一步步完成全部操作。全程用命令行,但每一条命令的意思我都会说清楚,照着敲就行。
你需要准备:
1.一台 Linux 服务器(我这里用Ubuntu 24.04),我是用的雨云服务器
2.一个已经注册好的域名
3.能 SSH 连接服务器的终端工具
4.大概 30-60 分钟的时间(比搞typecho长多了嗯。)
第一步:连接服务器
拿到服务器之后,你会有一个 IP 地址、一个 用户名(通常是 root)和一个密码。
打开终端(Mac)或 PowerShell(Windows),输入:
ssh root@你的服务器IP
如果你是第一次从这台电脑连接这个服务器,会看到一个提示:
The authenticity of host '你的服务器IP' can't be established.
Are you sure you want to continue connecting (yes/no)?
输入 yes 并回车就行。这是 SSH 在确认服务器的身份,只有第一次连接会出现。
然后输入密码(输入的时候屏幕不会显示任何字符,这是正常的),回车。如果看到类似 root@你的主机名:~# 这样的提示符,说明连接成功了。
第二步:更新系统软件包
刚拿到的服务器,软件包列表可能是旧的。先更新一下,保证后面装的都是最新版本。
apt update
这个命令会从软件源拉取最新的软件包列表。执行完之后再跑一个升级命令:
apt upgrade -y
-y 的意思是“所有询问都回答 yes”,省得你一个个确认。这个过程可能需要好多分钟,耐心等它跑完。
第三步:安装 Nginx(Web 服务器)
Nginx 是一个轻量级、高性能的 Web 服务器,它的工作就是“接待访客”——当有人在浏览器里输入你的网站地址,Nginx 负责接收这个请求,然后把对应的网页内容返回给访客。
安装命令:
apt install nginx -y
装完之后,Nginx 会自动启动。验证一下:
systemctl status nginx
如果看到 active (running) 的字样,说明 Nginx 已经在跑了。

现在打开浏览器,输入你的服务器 IP 地址,应该能看到一个“Welcome to nginx”的页面。这说明 Nginx 工作正常。

设置 Nginx 开机自启(这样服务器重启后网站还能自动恢复):
systemctl enable nginx
第四步:安装 MySQL(数据库)
MySQL 是用来存数据的——你的文章、页面、用户评论、网站设置,全都放在数据库里。
apt install mysql-server -y
装完之后,MySQL 也会自动启动。验证一下:
systemctl status mysql
看到 active (running) 就对了。

设置 MySQL 开机自启:
systemctl enable mysql
设置 root 密码:
Ubuntu 新版本的 MySQL 默认使用 auth_socket 认证方式,也就是说系统 root 用户可以直接免密码登录 MySQL,不需要密码。这本身是安全的,但会导致 mysql_secure_installation 这个安全配置工具跳过设置密码的步骤,让你没办法正常用密码登录。
所以我们要先手动设置 root 密码,再执行安全配置。
用系统 root 权限直接登录 MySQL(不需要输密码):
sudo mysql
进去之后提示符会变成 mysql>,执行下面的命令设置密码(把 你的密码 换成你自己要设的密码):
(mysql_native_password 是 MySQL 传统的密码认证方式,设完之后你就可以用密码登录了。)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
注意:要是提示Your password does not satisfy the current policy requirements ,那就生成一个有大小写字母,数字,特殊字符的16位密码,这样肯定符合要求(偷懒了算是)。
刷新权限让设置生效:
FLUSH PRIVILEGES;
退出 MySQL:
EXIT;
现在验证一下密码是否设置成功:
mysql -u root -p
输入刚才设的密码,能正常登录就说明成功了。输入 EXIT; 退出。
运行安全配置
mysql_secure_installation
运行后会有一系列问答,按下面这样回答就行:
记住你设的 root 密码,后面配置 WordPress 的数据库用户时要用到。但注意,WordPress 连接数据库用的不是这个 root 账号,而是我们下一步要专门创建的 wpuser 账号——root 账号权限太大,直接给网站用不安全。
情况说明:为什么 Ubuntu 新版 MySQL 跟以前不一样?
老版本的 MySQL 安装完后,mysql_secure_installation 会直接让你设置 root 密码。但从 Ubuntu 20.04 开始,MySQL 默认改用 auth_socket 插件认证 root 用户——这个插件的逻辑是“只有系统用户 root 才能登录 MySQL,不需要密码”。好处是更安全(没有密码泄露的风险),坏处是如果你想像传统方式那样用 mysql -u root -p 加密码登录,就得像上面这样手动改认证方式。
如果你后续只想用 sudo mysql 免密登录,也可以不改。但还是建议按上面的步骤改成密码认证,跟绝大多数教程保持一致,后续操作也更顺畅。
第五步:安装 PHP(运行环境)
PHP 是一种服务器端脚本语言,WordPress 就是用 PHP 写的。我们需要安装 PHP 以及 WordPress 需要的各种扩展。
apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip php-intl php-exif php-fileinfo php-bcmath php-soap -y
这条命令装了不少东西,一起安装了WordPress 官方推荐和必需的 PHP 扩展:
| curl | 发起 HTTP 请求,用于获取更新、调用外部 API |
| fileinfo | 检测上传文件的 MIME 类型,防止恶意上传 |
| json | 处理 JSON 数据,WordPress REST API 依赖它 |
| mbstring | 处理多字节字符(中文、日文等) |
| mysqli 或 pdo_mysql | 连接 MySQL 数据库 |
| SimpleXML / xml | 解析 XML 数据(RSS 订阅等) |
| zip | 处理压缩包,安装主题和插件时必须 |
| gd 或 imagick | 图片处理(缩略图、裁剪) |
| exif | 读取图片元数据(用于修正手机照片方向) |
| intl | 国际化支持(多语言网站、WooCommerce 等会用) |
| OPcache | 缓存 PHP 字节码,大幅提升性能 |
装完之后检查一下 PHP-FPM 是否在运行:
systemctl status php8.3-fpm

注意:具体版本号可能不同。Ubuntu 22.04 默认装的是 PHP 8.1,Ubuntu 24.04 默认装的是 PHP 8.3。(我写教程用的是Ubuntu 24.04,所以我就以8.3为例)。如果不确定自己装的是哪个版本,可以用 systemctl status php 然后按 Tab 键自动补全看看,或者用 php -v 命令查看版本号。后面的 Nginx 配置文件中需要填这个版本号,务必保持一致。
第六步:为 WordPress 创建数据库
装好了 MySQL,现在要为 WordPress 创建一个专用的数据库和一个专用的数据库用户。不建议用 root 账号直接跑网站,不安全。
先登录 MySQL:
mysql -u root -p
输入刚才设置的 root 密码,进入 MySQL 命令行界面(提示符会变成 mysql>)。
依次执行以下命令(把 your_password 换成你自己设的密码):
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
这条命令创建了一个名叫 wordpress 的数据库,字符集设为 utf8mb4(支持 emoji 和所有生僻字)。COLLATE utf8mb4_unicode_ci 指定了排序规则,ci 表示 case-insensitive(不区分大小写)。
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'your_password';
创建了一个叫 wpuser 的数据库用户,密码由你设定。'wpuser'@'localhost' 表示这个用户只能从本地(也就是服务器本机)连接数据库,这是最安全的做法,因为 WordPress 和 MySQL 在同一台服务器上,根本不需要远程连接。
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
给这个用户赋予 wordpress 数据库的全部权限。wordpress.* 表示数据库 wordpress 里的所有表。
FLUSH PRIVILEGES;
让权限设置立即生效。
EXIT;
退出 MySQL。
记下来:数据库名是 wordpress,用户名是 wpuser,密码是你刚才设的那个——后面配置 WordPress 的时候要用。
第七步:域名解析(把域名指向服务器)
在继续之前,需要先把你的域名指向服务器的 IP 地址。这一步是在域名注册商的后台操作的(比如你在阿里云、腾讯云、Namesilo、Cloudflare 等地方买的域名)。
登录你的域名注册商网站,找到 DNS 解析或域名解析管理页面。添加两条 A 记录:
| @ | A | 你的服务器 IP | @ 代表主域名本身,比如 example.com |
| www | A | 你的服务器 IP | 让 www.example.com 也能访问 |
什么是 A 记录? A 记录的全称是 Address Record,它的作用就是告诉全世界:“访问这个域名的时候,去这个 IP 地址”。
添加完之后,DNS 解析需要一段时间才能生效。快的话几分钟,慢的话可能要几个小时(取决于你的域名注册商和 TTL 设置,TTL 即 Time To Live,是 DNS 记录在各地 DNS 服务器上的缓存时间)。你可以用下面的命令测试域名是否已经指向了你的服务器:
ping 你的域名
如果返回的 IP 地址是你的服务器 IP,说明解析已经生效了。

新手提示:如果你急着测试,可以先在本地电脑上修改 hosts 文件临时将域名指向服务器(Windows 下是 C:\\Windows\\System32\\drivers\\etc\\hosts,Mac/Linux 下是 /etc/hosts),但这个方法只对你自己的电脑有效,正式上线还是要等 DNS 解析生效。
第八步:开放防火墙端口
如果你的服务器开启了防火墙(Ubuntu 默认没有安装 UFW,但有些云服务商默认会开启),需要确保 80 端口(HTTP)和 443 端口(HTTPS)是开放的。
检查 UFW 状态:
ufw status
如果显示 Status: inactive,说明防火墙没开,可以跳过这一步。
如果显示 Status: active,需要开放端口:
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
为什么要开放这两个端口? 80 端口是 HTTP 协议的默认端口,443 端口是 HTTPS 协议的默认端口。如果这两个端口被防火墙挡住了,外部用户就根本打不开你的网站。
另外,有些云服务商,要去后台防火墙或安全组里放行 80 和 443 端口。这一点很容易被忽略——服务器内部的防火墙打开了,但云服务商外围的安全组还挡着,网站照样访问不了。
第九步:下载 WordPress
准备工作都做完了,现在把 WordPress 的程序文件下载到服务器上。
先进入 Nginx 的网站根目录(/var/www/html 是 Nginx 默认的网站根目录):
cd /var/www/html
补充说明:/var/www/html 这个路径是有历史渊源的。/var 目录存放的是“可变数据”(variable data),比如日志、缓存、网站文件等;/www 是 web 相关文件的常见存放位置;html 是存放 HTML 文件的目录。不过这个路径是可以自定义的,只是 Nginx 默认配置里用的是这个。
然后用 wget 下载 WordPress 中文版的最新压缩包:
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
解压:
tar -xzf latest-zh_CN.tar.gz
tar -xzf 的参数含义:-x 表示解压,-z 表示通过 gzip 解压,-f 表示指定文件名。
解压之后会看到一个 wordpress 文件夹,里面就是 WordPress 的全部程序文件。
把 wordpress 文件夹里的所有文件移动到当前目录(也就是 /var/www/html):
mv wordpress/* .
删掉空的 wordpress 文件夹和下载的压缩包:
rmdir wordpress
rm latest-zh_CN.tar.gz
第十步:配置 WordPress 数据库连接
WordPress 需要一个配置文件来告诉它数据库在哪、账号密码是什么。
先复制一份示例配置文件:
cp wp-config-sample.php wp-config.php
然后用 nano 编辑器打开配置文件(nano 比 vim 友好得多,适合新手):
nano wp-config.php
在文件里找到这几行(大概在文件中间偏下的位置):
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );
把它们改成你刚才创建的数据库信息:
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', '你的密码' );
define( 'DB_HOST', 'localhost' );

改完之后,按 Ctrl + X,然后按 Y 确认保存,再按回车退出。
额外安全步骤一:添加 Salt 密钥
WordPress 官方建议在配置文件里加一组随机密钥,用来加密用户会话、Cookie 等信息。你可以访问 https://api.wordpress.org/secret-key/1.1/salt/ 这个地址,会生成一串随机字符,把它们完整复制到 wp-config.php 文件中 Authentication Unique Keys and Salts 那几行的位置,替换掉原来那些占位内容。
额外安全步骤二:设置网站域名
在 wp-config.php 文件中找到 /* That's all, stop editing! Happy publishing. */ 这行注释,在它之前加上下面两行(把 example.com 换成你自己的域名):
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
为什么现在就要写成 https? 因为我们在后续步骤会配置 HTTPS,如果这里写的是 http://,到时候还要回头改,容易遗漏。直接写成 https:// 一步到位。而且 WordPress 后台的“设置 → 常规”里也有站点地址(Site URL)和首页地址(Home URL)两个选项,但在配置文件里定义优先级更高,会覆盖后台的设置。
第十一步:配置 Nginx(绑定域名 + 准备 HTTPS)
这一步比较关键,我们要配置 Nginx 让它知道:
首先,为你的网站创建一个单独的 Nginx 配置文件,而不是直接改默认配置。这样更干净,以后也好管理。
nano /etc/nginx/sites-available/你的域名.conf
比如你的域名是 example.com,就输入:
nano /etc/nginx/sites-available/example.com.conf
然后把下面的内容粘贴进去(把所有的 example.com 换成你自己的域名,把 php8.3 换成你实际的 PHP 版本):
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
location ~ /\\.ht {
deny all;
}
}
逐行解释一下:
- listen 80 和 listen [::]:80:监听 80 端口(HTTP 的默认端口),前者监听 IPv4,后者监听 IPv6
- server_name:告诉 Nginx,当用户访问 example.com 或 www.example.com 时,使用这个配置。Nginx 支持多个域名指向同一个站点,用空格分隔就行,如果你不需要www.你的域名,那只保留前面那个即可。
- root:网站文件存放在哪个目录
- index:当用户访问一个目录时,默认加载哪个文件(优先找 index.php,然后是 index.html,再是 index.htm)
- location / { try_files … }:这是 WordPress 的“伪静态”规则。它的意思是:如果用户请求的是一个实际存在的文件或目录,就直接返回;否则把所有请求交给 /index.php 处理,并把原始的查询参数($args)带过去。这样 WordPress 才能处理像 /about 这样的“友好 URL”
- location ~ \\.php$:所有以 .php 结尾的请求,交给 PHP-FPM 处理。~ 表示使用正则表达式匹配
- fastcgi_pass:PHP-FPM 的通信地址。这里用的是 Unix socket 方式(unix:/var/run/php/php8.1-fpm.sock),比 TCP socket(127.0.0.1:9000)性能略好,配置也更简单
- location ~ /\\.ht:禁止访问所有以 .ht 开头的文件(.htaccess 和 .htpasswd),这是 Apache 用的配置文件,Nginx 不认,直接拒绝访问更安全
如何确认 PHP-FPM 的 socket 路径? 可以用 ls /var/run/php/ 看看里面有什么 .sock 文件,比如 php8.1-fpm.sock 或 php8.3-fpm.sock,把配置文件里的版本号改成对应的就行。
保存退出(Ctrl + X,然后 Y,再回车)。
然后,启用这个配置——在 Nginx 中,sites-available 是存放所有可用配置的地方,而 sites-enabled 是存放实际启用配置的地方。我们需要创建一个软链接:
ln -s /etc/nginx/sites-available/你的域名.conf /etc/nginx/sites-enabled/
比如:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
什么是软链接? 软链接(symbolic link)类似于 Windows 下的快捷方式。这样做的目的是把配置文件集中放在 sites-available 里管理,想启用某个站点就在 sites-enabled 里创建一个指向它的链接,想停用就直接删除这个链接,而不用删除原始文件。
最后,删除默认的 Nginx 配置(不然可能会和你的配置冲突):
rm /etc/nginx/sites-enabled/default
检查一下 Nginx 配置有没有语法错误:
nginx -t
如果显示 syntax is ok 和 test is successful,说明配置没问题。

然后重载 Nginx:
systemctl reload nginx
现在在浏览器里输入你的域名(http://你的域名),应该能看到 WordPress 的安装界面了。不过别急,我们先加上 HTTPS 再继续。
第十二步:用 Certbot 自动配置 HTTPS(Let's Encrypt 免费证书)
HTTP 是明文传输的,你输入的任何信息(包括密码)在网络传输过程中都是裸奔的,非常不安全。我们要给网站加上 HTTPS,用 Let's Encrypt 提供的免费 SSL 证书。
什么是 Let's Encrypt? 它是一个非营利性的证书颁发机构(CA),由 Linux 基金会托管,为全球网站提供免费的 SSL/TLS 证书。它的证书有效期为 90 天,但可以自动续期,完全不需要手动干预。
Let's Encrypt 的证书申请和配置过程可以使用 Certbot 这个工具全自动完成。
安装 Certbot 和 Nginx 插件:
apt install certbot python3-certbot-nginx -y
申请证书并自动配置 Nginx:
如果不需要www.的部分去掉后面的-d www.你的域名即可
certbot –nginx -d 你的域名 -d www.你的域名
比如:
certbot –nginx -d example.com -d www.example.com
运行后,Certbot 会问你几个问题:
然后 Certbot 会自动完成以下步骤:
- 验证你对域名的所有权(通过在你网站目录下放一个临时验证文件,Let's Encrypt 的服务器会通过 HTTP 访问这个文件来确认你确实拥有这个域名的控制权)
- 向 Let's Encrypt 申请证书
- 自动修改你的 Nginx 配置文件,加上 HTTPS 相关的配置
- 重载 Nginx 让配置生效
整个过程不到一分钟。完成后,打开浏览器输入 https://你的域名,应该能看到浏览器地址栏旁边有个小锁头图标,说明 HTTPS 已经生效了。

检查证书状态:任何时候你可以用 certbot certificates 命令查看当前所有已安装的证书列表及其到期时间。
第十三步:配置 HTTP 自动跳转到 HTTPS
虽然 Certbot 通常会自动帮你配置好 HTTP 到 HTTPS 的重定向,但最好确认一下。打开你的 Nginx 配置文件:
nano /etc/nginx/sites-available/你的域名.conf
检查一下,应该有两个 server 块:
第一个(监听 80 端口)负责把 HTTP 请求重定向到 HTTPS:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
return 301 是永久重定向(Moved Permanently),告诉浏览器和搜索引擎:这个地址已经永久迁移到 HTTPS 版本了。301 和 302 的区别是:301 是永久性的,搜索引擎会把权重转移到新地址;302 是临时性的,搜索引擎不会转移权重。
第二个(监听 443 端口)负责处理 HTTPS 请求,Certbot 会自动帮你填好证书路径:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com www.example.com;
root /var/www/html;
index index.php index.html index.htm;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
location ~ /\\.ht {
deny all;
}
}
证书文件的含义:fullchain.pem 是完整的证书链文件,包含了你的站点证书和中间证书;privkey.pem 是你的私钥文件,必须严格保密,绝对不能泄露。
如果你的配置里没有第一个 server 块(80 端口那个),手动加上就行。保存后检查配置并重载:
nginx -t
systemctl reload nginx
现在访问 http://你的域名 会自动跳转到 https://你的域名。
第十四步:设置文件权限
WordPress 需要对某些文件夹有写入权限,比如上传图片、安装主题和插件。但权限也不能给得太松,不安全。
先修改文件所有者:
chown -R www-data:www-data /var/www/html
这条命令把网站目录的所有者改成 www-data。-R 表示递归处理,会修改该目录下所有子目录和文件。
www-data 是什么? 它是 Ubuntu/Debian 系统中 Nginx 和 PHP-FPM 默认的运行用户。Web 服务器以这个用户的身份读取和执行网站文件。把网站目录的所有者设为 www-data,Web 服务器才有权限读写这些文件。
然后设置文件夹权限为 755,文件权限为 644:
find /var/www/html -type d -exec chmod 755 {} \\;
find /var/www/html -type f -exec chmod 644 {} \\;
755 和 644 是什么意思? Linux 权限用三位数字表示:第一位是所有者(owner)的权限,第二位是所属组(group)的权限,第三位是其他人(others)的权限。7 = 读(4)+ 写(2)+ 执行(1),5 = 读(4)+ 执行(1),4 = 只读。所以 755 表示所有者有全部权限,组用户和其他用户只有读和执行权限;644 表示所有者有读写权限,组用户和其他用户只有读权限。
这样 WordPress 就能正常读写文件了,同时安全性也有保障。
第十五步:调整 PHP 上传文件大小限制
WordPress 默认允许上传的文件大小是 2MB,这个对于上传主题、插件或者大图片来说通常是不够的。我们需要修改 PHP 的配置文件。
找到 PHP 的配置文件:
nano /etc/php/8.3/fpm/php.ini
注意:版本号换成你实际的 PHP 版本。Ubuntu 22.04 是 8.1,Ubuntu 24.04 是 8.3。
找到下面这三行,修改成你想要的数值(这里以 64MB 为例):
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 128M
- upload_max_filesize:单个上传文件的最大大小
- post_max_size:单次 POST 请求的最大大小(必须大于等于 upload_max_filesize,因为上传文件是用 POST 方法提交的)
- memory_limit:PHP 脚本可使用的最大内存(必须大于 post_max_size,否则大文件上传过程中可能内存溢出)
改完之后保存退出,然后重启 PHP-FPM 让配置生效:
systemctl restart php8.3-fpm
注意版本号同样要换成你实际的版本。
第十六步:浏览器中完成 WordPress 安装
以上所有步骤都做完之后,打开浏览器,输入你的域名(https://你的域名)。
应该会看到 WordPress 的安装界面,让你选择语言——选简体中文,点“继续”。
然后会看到数据库连接信息(前面如果你跟着我的教程在文件里设置过了,那可以直接去设置网站基本信息了):
1.数据库名:wordpress
2.用户名:wpuser
3.密码:你设的密码
4.数据库主机:localhost
5.表前缀:wp_(默认就好,如果你有特殊需求可以改,但一般不需要动)
填好之后点“提交”,如果信息都对,就会进入下一步。
如果提示“无法连接数据库”:返回检查 wp-config.php 里的数据库信息是否完全正确,尤其是密码有没有打错字、有没有多余的空格。
下一步是设置网站的基本信息:
1.站点标题:你的网站名字(之后可以随时修改)
2.用户名:管理员账号(不要用 admin,因为这是 WordPress 默认的管理员用户名,很容易被暴力破解攻击盯上)
3.密码:设一个复杂点的(WordPress 会给你一个强密码建议,可以直接用)
4.您的电子邮件:填你的邮箱

填完之后点“安装 WordPress”,等几秒钟,看到“安装成功”的页面就大功告成了。

点“登录”,用刚才设的管理员账号和密码登录后台。后台地址是 https://你的域名/wp-admin

第十七步:确认 HTTPS 自动续期
Let's Encrypt 的证书只有 90 天有效期,但 Certbot 会自动帮你续期。验证一下自动续期是否配置好了:
certbot renew –dry-run
–dry-run 是“模拟运行”的意思,不会真的去续期,只是测试整个续期流程是否正常。
如果输出类似 The dry run was successful 的信息,说明自动续期正常工作。

Certbot 会在系统中创建一个定时任务(systemd timer),每天运行两次,检查所有已安装的证书,如果发现哪个证书距离过期不足 30 天,就自动续期。你什么都不用做。
第十八步:(可选)开启 HSTS 提升安全性
HSTS(HTTP Strict Transport Security)是一个安全机制,它告诉浏览器:在接下来的一年里,只能用 HTTPS 访问我的网站,绝对不要用 HTTP。这样即使有人点击了 HTTP 链接或输入了 HTTP 地址,浏览器也会自动把它转换成 HTTPS。
在 Nginx 配置文件的 HTTPS server 块里加上一行:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
max-age=31536000 表示有效期一年(单位是秒,31536000 秒 = 365 天),includeSubDomains 表示对所有子域名也生效。
加完保存后检查并重载配置:
nginx -t
systemctl reload nginx
注意:启用 HSTS 后,如果你后续想关闭 HTTPS,会非常麻烦。因为浏览器已经记住了“只能用 HTTPS”的指令,即使你删除了服务器上的 HTTPS 配置,浏览器还是会固执地尝试用 HTTPS 访问。所以建议在网站运行稳定后再开启。
常见的坑和解决办法
1. 打开浏览器看到的是 Nginx 欢迎页,不是 WordPress 安装界面
说明 Nginx 的配置没有生效,或者默认配置没有被替换。检查一下:
<1>/etc/nginx/sites-enabled/default 是否已经被删除
<2>你的配置文件是否已经软链接到 sites-enabled
<3>运行 nginx -t 检查配置是否有语法错误
<4>运行 systemctl reload nginx 重载配置
2. 提示“Error establishing a database connection”
多半是 wp-config.php 里的数据库名、用户名或密码填错了。回去检查一下,尤其是密码有没有打错字。也有可能是 MySQL 服务没启动,用 systemctl status mysql 看一下。
3. 安装主题或插件时提示需要 FTP 信息
在 wp-config.php 文件中找到 /* That's all, stop editing! Happy publishing. */ 这行注释,在它之前加上一行:
define('FS_METHOD', 'direct');
这样 WordPress 就会直接用文件系统写入,不需要 FTP。
4. 上传图片或主题时提示“文件大小超过限制”
这是 PHP 上传大小限制的问题。按第十五步调整 upload_max_filesize、post_max_size 和 memory_limit 这三个参数,然后重启 PHP-FPM。
5. 上传图片失败,提示“无法创建目录”
检查一下 /var/www/html/wp-content/uploads 文件夹是否存在,如果不存在就手动创建:
mkdir -p /var/www/html/wp-content/uploads
chown www-data:www-data /var/www/html/wp-content/uploads
6. 页面打不开,显示 502 Bad Gateway
通常是 PHP-FPM 没启动或者 Nginx 和 PHP-FPM 之间的通信出了问题。检查 PHP-FPM 的状态:
systemctl status php8.3-fpm
如果没启动,就启动它:
systemctl start php8.3-fpm
如果 PHP-FPM 是启动的但问题依然存在,检查 Nginx 配置文件中的 fastcgi_pass 路径是否正确(版本号是否匹配)。
7. 浏览器提示“您的连接不是私密连接”或证书无效
可能的原因:
<1>证书还没有生效(刚申请完需要等几秒)
<2>你访问的是 http:// 而不是 https://(某些浏览器会把 HTTP 访问显示为“不安全”而不是“私密连接”)
<3>域名解析还没生效,Certbot 验证域名所有权时失败了
<4>你是用 IP 地址访问的,而 SSL 证书是绑定在域名上的,用 IP 访问必然证书报错
可以用 certbot certificates 命令查看证书状态,确认证书是否已成功签发。
8. 域名解析一直不生效
DNS 解析的生效时间取决于两个因素:一是你域名注册商那边的 TTL(Time To Live)设置,二是各地 DNS 服务器的缓存刷新速度。如果你急着测试,可以先把 TTL 设短一些(比如 300 秒,即 5 分钟),等正式上线再改回默认值(通常是 600 秒或 3600 秒)。
9. 打开网站显示空白页(白屏)
可能是 PHP 内存不足或某个插件/主题报错。可以先检查 PHP 错误日志:
tail -f /var/log/php8.3-fpm.log
版本号换成你实际的版本。tail -f 会实时显示日志的最后几行并持续更新。
如果错误日志里没有信息,可以临时在 wp-config.php 中开启调试模式:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
然后访问网站,错误信息会被记录到 /var/www/html/wp-content/debug.log 文件中,查看这个文件就能定位问题。
接下来可以做什么
网站跑起来之后,你可以:
1.换个好看的主题:后台“外观 → 主题”里有很多免费的,挑一个顺眼的
2.装几个实用的插件:比如 Yoast SEO(搜索引擎优化)、Akismet(防垃圾评论)、UpdraftPlus(自动备份)
3.写第一篇文章:点击后台左侧的“文章 → 写文章”,开始你的创作
4.定期备份:建议每周备份一次数据库和网站文件,可以用 mysqldump 导出数据库,用 tar 打包网站目录
部署 WordPress 的核心就是装好 Nginx + MySQL + PHP 这三个东西,再把域名解析做好,用 Certbot 一键搞定 HTTPS。看着挺多,实际部署起来挺简单。
希望这篇教程对你有帮助。
网硕互联帮助中心



评论前必须登录!
注册