Ubuntu部署WordPress网站完整教程
本文部署一个全新的WordPress单站点,面向允许建站且拥有系统管理权限的服务器;住宅云禁止建站,不适用。示例域名example.com必须改为自己管理的实际域名。不要在已有正式网站目录覆盖安装;迁移旧站与保留数据不是本教程的操作范围。
先完成三项前置准备
- 按Nginx连接PHP-FPM教程验证静态页及PHP执行,确认处理器是PHP 8.3。
- 按MariaDB专用账号教程准备独立数据库与网站账号。示例库baole_site、账号baole_app只是命名示例。
- 按Certbot证书教程让实际域名HTTPS正常,安装过程输入数据库密码和管理密码时全程使用有效HTTPS。
WordPress官方当前推荐PHP 8.3或更高、MariaDB 10.11或MySQL 8.0或更高,并支持HTTPS。选择下载时的稳定版,先核对主题和插件兼容要求;本文不锁定一个会过期的WordPress小版本。
准备安装包并上传到独立目录
先在本地准备来源可信、版本兼容的WordPress稳定版tar.gz完整安装包,确认包内顶层目录为wordpress;不要把ZIP文件直接改成tar.gz后缀。然后在服务器当前SSH会话创建独立临时目录,并显示上传目标:
workdir=$(mktemp -d /var/tmp/wordpress-install.XXXXXX) &&
printf '上传目标:%s\n' "$workdir/wordpress.tar.gz"
确认上一步成功后,按使用SFTP上传与下载服务器文件连接这台服务器,用与当前SSH会话相同的系统部署账号,把本地完整安装包上传到刚才显示的绝对路径,远程文件名统一为wordpress.tar.gz。先核对SFTP中的实际远程目录,不向已有网站目录覆盖文件;临时目录默认只允许创建它的账号进入,权限不足时先核对账号,不将目录改成777。上传完成后,回到原SSH会话检查文件:
test -s "$workdir/wordpress.tar.gz" &&
sha256sum "$workdir/wordpress.tar.gz" &&
tar -tzf "$workdir/wordpress.tar.gz" > "$workdir/package-list.txt" &&
head "$workdir/package-list.txt"
只有传输无报错、文件大小符合本地原包、服务器SHA256与本地同一文件一致,且完整列包命令成功后才继续。查看清单,确认内容位于wordpress/目录下;文件缺失、哈希不同、包损坏或目录结构不符时停止,不直接改后续路径去覆盖其他文件。哈希相同只证明传输一致,安装包来源仍需可信。确认后再解压并准备空目标目录:
tar -xzf "$workdir/wordpress.tar.gz" -C "$workdir" &&
test -f "$workdir/wordpress/wp-settings.php" &&
sudo install -d -m 0750 /var/www/baole-wp &&
sudo find /var/www/baole-wp -mindepth 1 -maxdepth 1 -print -quit
确认解压和文件检查都没有报错,解压后有wordpress目录。最后一条用于确认目标目录为空;若打印出任何文件,停止并选择新的独立目录。变量只在当前终端有效,重开会话后使用自己记录的实际绝对路径。目标确认为空后再复制:
sudo cp -a "$workdir/wordpress/." /var/www/baole-wp/
sudo chown -R "$USER":www-data /var/www/baole-wp
sudo find /var/www/baole-wp -type d -exec chmod 0750 {} +
sudo find /var/www/baole-wp -type f -exec chmod 0640 {} +
sudo install -d -o www-data -g www-data -m 0750 /var/www/baole-wp/wp-content/uploads
以上基于Ubuntu默认Web用户www-data:部署账户维护代码,PHP只在uploads写入媒体。不要把全站设置为777。后台安装插件、主题和自动更新可能需要独立部署流程或受控写权限,不能因出现文件权限提示就放宽全部目录。
调整目标HTTPS站点根目录和PHP规则
编辑前置教程创建的目标域名配置,保留已有listen 443 ssl、证书路径和证书管理指令,只替换相应root、index及location;同名location应修改原块,不能重复添加。
root /var/www/baole-wp;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location = /wp-config.php { deny all; }
上传目录的PHP禁止规则应置于通用PHP正则规则之前,防止上传目录脚本被执行。若已有点文件限制,保留并核对ACME验证路径。HTTP侧继续使用已验证的HTTPS跳转。
sudo nginx -t
sudo systemctl reload nginx
curl -I --resolve example.com:443:127.0.0.1 https://example.com/wp-admin/install.php
在浏览器完成数据库与管理账号设置
首次打开安装页若出现语言选择,先选择“简体中文”并继续,再按下面的中文字段填写。
- 访问真实域名的HTTPS安装页;地址和证书正常后再输入资料。
- 填写数据库名、专用用户名、对应密码与数据库主机localhost;表前缀在新库内保持合理默认或使用独立前缀,不与已有表混用。
- 如果程序不能写入wp-config.php,按页面生成的内容,由部署管理员在网站根目录创建该文件;使用部署账户所有者、www-data组及0640权限,不将整份配置贴到工单。
- 输入网站标题、独立的管理员用户名、强密码和自己控制的邮箱。测试站应阻止搜索引擎索引,并同时实施真实访问限制;单个“建议不索引”选项不能阻止公众访问。
安装完成后逐项验收
- HTTPS首页、/wp-admin/与一次退出再登录均正常,页面不暴露PHP源代码。
- 发布一篇测试文章、打开其固定链接,并上传一张不含敏感信息的小图片。
- 站点健康中核对PHP和数据库连接;缺扩展时按当前FPM版本补齐,不更换整套系统。
- 保留安装版本和环境记录,安排代码、数据库的独立备份及更新计划;不要把可登录后台当成所有功能都已完成验收。
安装过程中出现数据库连接错误,应先核对专用账号连接结果及wp-config字段;出现502先检查FPM;文章404核对Nginx规则。新站失败时保留现场及日志,停用新站配置,不删除其他站点或共用数据库。
安装表单图用于对照字段位置,具体版本未标注;后台与前台图演示WordPress 7.1.4中文界面。服务器环境是否可用,仍需按本文逐项验收。