云计算百科
云计算领域专业知识百科平台

从一台空服务器到 WordPress 上线:全程敲命令,不用任何面板

本文来自我的个人博客:从一台空服务器到 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

运行后会有一系列问答,按下面这样回答就行:

  • 是否验证密码插件? 输入 y 建议启用,它可以帮你检查密码强度。如果选 y,后面设置密码时如果密码太简单(比如纯数字、太短),MySQL 会拒绝。建议用大小写字母 + 数字 + 特殊字符的组合密码。(你要是不想被约束,那就输入n)
  • 是否移除匿名用户? 输入 Y
  • 是否禁止 root 远程登录? 输入 Y
  • 是否移除测试数据库? 输入 Y
  • 是否重新加载权限表? 输入 Y
  • 记住你设的 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 让它知道:

  • 你的网站文件在哪个目录
  • 你的域名是什么
  • 如何处理 PHP 文件
  • 首先,为你的网站创建一个单独的 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 会问你几个问题:

  • 输入邮箱地址:用于接收紧急续期通知和安全提醒(如果证书即将过期或出现问题,会发邮件通知你)
  • 同意服务条款:输入 A 同意
  • 是否愿意分享邮箱给 EFF(电子前哨基金会,EFF 是 Let's Encrypt 的主要发起方之一):输入 Y 或 N 都行,看你自己
  • 然后 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。看着挺多,实际部署起来挺简单。

    希望这篇教程对你有帮助。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 从一台空服务器到 WordPress 上线:全程敲命令,不用任何面板
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!