WordPress 安装部署
三条路线,选错了后面全是补丁
装 WordPress 本身十几分钟就能完成,真正耗时间的是装完之后的一堆小事:伪静态没配导致内页 404、上传卡在 2MB、PHP 还停在 7.4、目录权限图省事给了 777。这篇把宝塔面板、命令行脚本、手动编译三条部署路线的操作顺序、参数取值和报错处理讲清楚,照着走一遍,装完就能直接进后台录内容。
环境不对,装完也是白装
六项硬指标先过一遍
下面每一条都是我们上门排查时真见过的问题。装之前花五分钟核对,能省掉后面两天的折腾。
PHP 8.1 及以上
推荐 8.2 或 8.3。仍在 7.4 的服务器必须先升级,7.4 已停止安全维护,主流插件的新版本陆续不再兼容,装上去就是一堆 Deprecated 提示。
MySQL 8.0 / MariaDB 10.6
字符集统一 utf8mb4,排序规则 utf8mb4_unicode_ci。老库如果还是 utf8,先转再导数据,否则客户发来的表情符号和部分生僻字会变成问号。
内存不低于 1GB
PHP memory_limit 设 256M,max_execution_time 300,post_max_size 与 upload_max_filesize 都放到 64M。WordPress 6.7 之后后台编辑器对内存更敏感,128M 会随机白屏。
目录 755 文件 644
所有者必须是 Web 运行用户(Nginx 一般是 www,Apache 是 www-data)。wp-config.php 可以收到 600。全站 777 是入侵的常见入口,不要图省事。
域名已解析、证书先上
先把 A 记录指向服务器并生效,再装 WordPress。装完才换域名,数据库里一堆 http 绝对地址要替换,多一道没必要的工序。
Nginx 1.24 以上
低于 1.20 的版本在 HTTP/2 与 TLS 1.3 上有兼容问题。如果前面还要挂 CDN,回源协议和真实 IP 头要一起配,不然日志里全是 CDN 节点地址。
宝塔、脚本、手动编译
按运维能力选,不按流行度选
三条路线装出来的 WordPress 是同一个 WordPress,差别在环境怎么来的、出问题谁来兜。选之前先问自己:这台服务器以后谁维护。
| 对比项 | 宝塔面板 | 命令行脚本 | 手动编译 LNMP |
|---|---|---|---|
| 上手门槛 | 低,会点鼠标即可 | 中,需要熟悉 SSH 与 wp-cli | 高,要看得懂编译参数 |
| 首次部署耗时 | 30 到 50 分钟(编译环境占大半) | 10 到 15 分钟 | 1.5 到 3 小时 |
| 环境可控度 | 中,版本切换受面板限制 | 高,参数全在命令行 | 最高,每个模块自己定 |
| 排错方式 | 看面板日志与计划任务 | 看 Nginx / PHP-FPM 原生日志 | 完全靠自己读日志与 strace |
| 适合谁 | 企业自有服务器、无专职运维 | 批量部署、需要脚本化交付 | 有 DevOps、要求极致精简 |
| 常见坑 | 面板端口暴露、默认安全入口未改 | locale 未指定导致装成英文 | 扩展漏装,GD / imagick 缺失 |
四百多家客户的实际情况是:只要服务器是客户自己买的、以后由行政或网管顺手管,宝塔的性价比最高;如果是我们交付后长期托管,命令行脚本更干净,少一层面板就少一个被扫描的入口。
宝塔路线:九步装完
重点在第 4 步和第 7 步
宝塔 9.x 的界面和 7.x 差别不小,网上很多教程还停在老版本,按老图找菜单会找不到。下面按当前版本的路径写。
装面板、选环境
安装完成后进「软件商店」,选 LNMP 编译安装:Nginx 1.24、PHP 8.2、MySQL 8.0、phpMyAdmin。别选极速安装,PHP 扩展经常缺。
建站、传程序包
「网站 → 添加站点」,填域名,根目录设为 /www/wwwroot/example.com,同时创建数据库。把 wordpress-6.8.zip 传到根目录在线解压,注意压缩包里多一层 wordpress 目录,要把里面的文件剪切到根目录,不能直接留一层。
填数据库、跑安装向导
访问域名,进入安装页,数据库主机填 localhost,表前缀改成 wp_ 之外的随机串比如 sk_。管理员用户名不要用 admin,这是被暴力破解最多的账号名。
伪静态、权限、上传限制
「网站 → 设置 → 伪静态」选 wordpress 规则并保存,否则内页全部 404。「网站 → 设置 → 配置文件」把 client_max_body_size 改成 64m,再在「软件商店 → PHP 设置 → 配置修改」同步 post_max_size。
宝塔上最容易漏的五件事
- 面板默认端口 8888 未改,安全入口还是随机串但被日志抓到
- PHP 禁用函数列表里保留了 putenv、proc_open,部分插件报错
- 没有开启「防跨站攻击 open_basedir」,多站互相能读文件
- 计划任务只备份了数据库,没备份 wp-content
- SSL 证书到期没有提醒,一年后整站变成不安全提示
装完立刻验证的四项
- 访问 /wp-admin/ 能正常登录,地址自动跳 https
- 发布一篇测试文章,链接形如 /test-post/ 能打开
- 媒体库上传一张 5MB 图片不报错
- 「工具 → 站点健康」没有红色严重项
手动部署的关键在 wp-config.php
八个常量决定后面半年的省心程度
命令行走一遍其实只有四条命令,前提是 wp-cli 已就位。相比面板,它把每一步都留在 shell 历史里,谁在什么时候改了什么,一查就有。
四条命令装完
- wp core download –locale=zh_CN –version=6.8
- wp config create –dbname=site –dbuser=site –dbpass=*** –dbhost=127.0.0.1 –dbprefix=sk_
- wp db create
- wp core install –url=https://example.com –title=”站点名” –admin_user=editor01 –admin_password=*** –admin_email=web@wordpressx.com
装完补两条权限命令
- chown -R www:www /www/wwwroot/example.com
- find . -type d -exec chmod 755 {} ; && find . -type f -exec chmod 644 {} ;
- wp rewrite structure ‘/%postname%/’ –hard
- wp option update timezone_string ‘Asia/Shanghai’
wp-config.php 里这八个常量值得逐个确认:DISALLOW_FILE_EDIT 设 true 关掉后台在线改代码;WP_DEBUG 生产环境务必 false;WP_POST_REVISIONS 设 5 控制修订版本膨胀;WP_MEMORY_LIMIT 设 256M;WP_AUTO_UPDATE_CORE 设 minor 只跟小版本;FS_METHOD 设 direct 避免每次装插件都问 FTP 账号;WP_HOME 与 WP_SITEURL 写死可以防止有人误改后台地址;FORCE_SSL_ADMIN 设 true 保证后台全程走 https。改错一个,表现往往是「后台能进但保存文章 500」,排查起来很费时间。
装完十分钟内该做完的事
以及五个会撞上的报错原文
安装向导点完「安装 WordPress」,很多人就直接开始写文章了。其实这时候站点还有一半是默认状态。
初始化清单
- 「设置 → 常规」填站点标题、副标题,时区选上海,语言选简体中文
- 「设置 → 固定链接」选「文章名」,保存两次让重写规则刷新
- 「设置 → 阅读」决定首页显示最新文章还是静态页面
- 「设置 → 讨论」关闭「需要填写姓名和邮箱」,外贸站可保留
- 删除自带 Hello Dolly、Akismet 插件与示例文章、示例页面、示例评论
- 「用户 → 个人资料」改昵称,让文章署名不显示 editor01 这种账号名
报错对照
- Error establishing a database connection:核对 wp-config 四项,localhost 与 127.0.0.1 有时结果不同
- 413 Request Entity Too Large:Nginx 的 client_max_body_size 没放开
- 您点击的链接已过期:服务器时间与标准时间偏差超过 nonce 窗口,校准 NTP
- 无法创建目录 wp-content/uploads:所有者不是 www,或 uploads 被设成只读
- Briefly unavailable for scheduled maintenance:根目录残留 .maintenance 文件,删除即可
部署只是第一步。接下来建议先看 WordPress 后台入门 把界面认全,再按 固定链接与伪静态规则 把 URL 结构定死——这两件事在站点有内容之前改成本最低。上线前别忘了配 SSL 证书与 HTTPS 和 备份与恢复,后者比任何优化插件都重要。
安装部署常见问题
五个被问得最多的
能跑,但要看流量与插件数量。1 核 2G 加 MySQL 8.0,日常几百 IP 没问题;装了 WooCommerce 再开缓存插件,内存容易吃满。建议加 2G Swap,PHP-FPM 进程数控制在 4 到 6,别按默认的 pm=dynamic 无限开。
不一定要。命令行装完照样可以用 wp-cli 管插件、管用户、跑备份,也可以用 SFTP 传文件。真正的差别是可视化程度:改 PHP 版本、看实时日志、加定时任务,面板点两下,命令行要记参数。
先看 wp-config.php 里的 DB_NAME、DB_USER、DB_PASSWORD、DB_HOST 四项有没有多余空格。其次确认数据库用户是否授权给该库,MySQL 8.0 默认认证插件是 caching_sha2_password,老版本 PHP 客户端可能连不上,需要改成 mysql_native_password。
多数情况不是。常见原因是后台在请求 WordPress.org 的更新接口超时,国内服务器尤其明显。可以在 wp-config.php 里定义 WP_HTTP_BLOCK_EXTERNAL 配合 WP_ACCESSIBLE_HOSTS 放行必要域名,或者直接关掉「更新」检查,速度立刻回来。
后台界面用中文包省事,但外贸站建议前台语言保持英文,后台语言可以在「设置 → 常规 → 站点语言」里单独设。用 wp core download –locale=zh_CN 装的是中文包,之后仍可在后台切换,不影响已有内容。
服务器已经有了,环境还没配好?
把版本和参数发我们,先评估再动手
PHP 版本、数据库版本、面板类型、现有站点数量,这四项发过来,我们就能判断是直接部署还是先做一次环境整理。迁移和加固可以一起排。