努力
加油

使用Linux发行版如Ubuntu搭建WordPress需要注意哪些问题?

在 Ubuntu 上搭建 WordPress,看似只是 apt install 几步的事,但真要跑在生产环境里,尤其是考虑到国内的网络环境和运维成本,坑其实不少。很多人只关注“怎么装”,忽略了“怎么稳”和“怎么安”。

以下是我基于实际运维经验总结的几个核心注意点,按优先级排列:

1. 基础环境选型:不要迷信“一键安装包”

虽然宝塔(BT Panel)或 OneinStack 在国内很流行,能快速解决 LAMP/LNMP 问题,但对于追求稳定性和可维护性的场景,推荐手动配置或使用官方推荐的 Webmin/Cloud-init 模板。

  • PHP 版本选择:WordPress 对 PHP 版本敏感。目前建议直接使用 PHP 8.1 或 8.2。
    • 避坑:不要为了兼容老旧插件强行用 PHP 7.4 或更低,性能差距巨大,且安全补丁已停止更新。
    • 注意:确保安装了必要的扩展,如 php-mysql, php-curl, php-gd, php-mbstring, php-xml, php-zip, php-intl。很多新手搭建后图片上传失败或页面空白,90% 是因为漏装了 php-gd 或 php-mbstring。
  • Web 服务器:Nginx 比 Apache 更轻量、并发处理能力更强,适合云主机。如果选 Nginx,务必处理好 try_files 规则,否则 WordPress 的固定链接(Permalinks)会全部 404。

2. 数据库:MySQL vs MariaDB

Ubuntu 源里默认提供的是 MariaDB,它完全兼容 MySQL 协议。对于 WordPress 来说,两者没有本质区别。

  • 字符集设置:这是最容易被忽视的一点。安装数据库后,必须检查 /etc/mysql/my.cnf 或 /etc/my.cnf.d/server.cnf。
    • 确保 character-set-server 设置为 utf8mb4,collation-server 设置为 utf8mb4_unicode_ci。
    • 为什么:utf8 在 MySQL 中其实是 utf8mb3,不支持 emoji 表情。如果你未来想在文章里发表情包,或者用户评论里有特殊符号,utf8mb4 是必须的。
  • 内存限制:云服务器通常内存较小(如 2G/4G)。调整 innodb_buffer_pool_size,一般设为物理内存的 50%-70%。如果内存只有 1G,设 512M 即可,避免 OOM(Out of Memory)。

3. 文件权限与安全:别给 root 权限

这是新手最容易犯的错误,也是导致网站被篡改的主要原因。

  • 目录所有者:Web 根目录(如 /var/www/html)的所有者应该是 www-data(Ubuntu 下 Nginx/Apache 的运行用户),而不是你的普通用户或 root。
    sudo chown -R www-data:www-data /var/www/html
    sudo chmod -R 755 /var/www/html
    # 特别注意 wp-content/uploads 目录需要写入权限
    sudo chown -R www-data:www-data /var/www/html/wp-content/uploads
  • 禁用 XML-RPC:除非你有特定的需求(如 Jetpack 或某些移动端 App),否则建议在 functions.php 或 Nginx 配置中禁用 xmlrpc.php,它是 DDoS 攻击和暴力破解的主要入口。
  • 隐藏版本号:在 Nginx 配置中添加 server_tokens off;,防止泄露 WordPress 具体版本,减少针对性攻击。

4. 国内网络环境的特殊优化

在阿里云、腾讯云等国内厂商部署,有几个特有的痛点:

  • 时区问题:
    • Ubuntu 系统默认可能是 UTC 时间。
    • WordPress 后台设置里的“时区”要选对(上海/北京时间)。
    • 关键点:确保 PHP 的时区也设置正确。在 php.ini 中找到 date.timezone = Asia/Shanghai。否则,定时发布文章、日志记录的时间都会错乱。
  • 磁盘 I/O 瓶颈:
    • 云服务器的系统盘通常是 SSD,但读写性能有限。WordPress 频繁读写数据库和日志。
    • 建议:将 wp-content/uploads 目录迁移到独立的云硬盘(EBS/CBS),并挂载到服务器上。这样扩容和备份更方便,也减轻系统盘压力。
  • CDN 与静态资源分离:
    • 国内访问速度受带宽影响大。强烈建议使用对象存储(OSS/COS/SMS)存放图片、视频等大文件,并通过 CDN 提速。
    • 使用插件如 “WP Offload Media” 或 “UpdraftPlus” 将媒体库直接推送到对象存储,本地只留引用。这能极大提升加载速度并节省服务器带宽费用。

5. 备份策略:没有备份等于裸奔

WordPress 的核心价值在于内容,数据丢了比服务宕机更可怕。

  • 数据库备份:使用 mysqldump 脚本,通过 Crontab 每天凌晨自动备份,并上传到远程存储(如 OSS/COS)。不要只存在服务器本地!
  • 文件备份:除了 wp-content 目录,还要备份 wp-config.php(里面包含数据库密码等关键信息)。
  • 自动化方案:可以使用 BorgBackup 或 Restic 进行增量备份,效率高且支持加密。
  • 测试恢复:定期做一次恢复演练。很多站长发现备份文件损坏或无法解压时,已经是网站被黑之后了。

6. 防火墙与安全组

  • 最小化端口开放:云服务器控制台的安全组(Security Group)只开放必要端口:
    • 80 (HTTP)
    • 443 (HTTPS)
    • 22 (SSH,建议修改默认端口,并使用密钥登录,禁用密码登录)
    • 严禁随意开放 3306 (MySQL)、888 (面板)、或其他管理端口到 0.0.0.0/0。
  • Fail2Ban:安装 fail2ban,监控 SSH 和 Nginx 日志,自动封禁多次失败登录的 IP。这对抵御暴力破解非常有效。

7. SSL 证书:强制 HTTPS

  • 使用 Let’s Encrypt 的 Certbot 免费申请证书,配置自动续期。
  • 在 Nginx 配置中强制 HTTP 跳转到 HTTPS。
  • 在 WordPress 后台设置中,将站点地址(Site Address)和主页地址(WordPress Address)都改为 https://。
  • 检查主题和插件中是否有硬编码的 http:// 链接,否则会出现混合内容警告(Mixed Content),影响 SEO 和用户信任。

总结

在 Ubuntu 上搭建 WordPress,技术门槛不高,但稳定性、安全性和性能优化才是关键。记住三个原则:

  1. 最小权限:系统、数据库、Web 服务各司其职,权限严格控制。
  2. 数据外置:重要数据不放在系统盘,定期异地备份。
  3. 动静分离:利用云存储和 CDN 缓解服务器压力,提升用户体验。

最后,别怕命令行。虽然图形界面工具方便,但熟悉基本的 Linux 命令(如 journalctl, systemctl, grep, awk)能让你在排查问题时快人一步。