在 CentOS(推荐 8/9)或 Ubuntu(推荐 22.04/24.04)上安装 WordPress,需搭建 LAMP(Linux + Apache + MySQL/MariaDB + PHP)或 LEMP(Linux + Nginx + MySQL/MariaDB + PHP)环境。以下是安全、生产就绪的标准化安装步骤与关键注意事项,兼顾两者差异,并强调最佳实践。
✅ 一、通用前提准备(CentOS & Ubuntu 均适用)
| 项目 | 要求 |
|---|---|
| 系统更新 | sudo apt update && sudo apt upgrade -y(Ubuntu)sudo dnf update -y(CentOS 8+)或 sudo yum update -y(CentOS 7) |
| 防火墙配置 | 开放端口:80(HTTP)、443(HTTPS)、22(SSH)Ubuntu: sudo ufw allow 'Apache Full' 或 sudo ufw allow OpenSSHCentOS: sudo firewall-cmd --permanent --add-service=http & --add-service=https → --reload |
| 域名与 SSL(强烈推荐) | 使用真实域名(如 example.com),通过 Let’s Encrypt(Certbot)免费获取 HTTPS 证书(禁用 HTTP 明文部署!) |
✅ 二、选择 Web 服务器(LAMP vs LEMP)
⚠️ 推荐 LEMP(Nginx):更轻量、高并发性能更好;但 Apache 对
.htaccess兼容性更好(部分插件依赖)。根据团队熟悉度选择。
🔹 方案 A:LEMP(Nginx + MariaDB + PHP)— 推荐(Ubuntu/Debian & CentOS 8+/Rocky/AlmaLinux)
1️⃣ 安装基础组件
# Ubuntu 22.04/24.04
sudo apt install nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip unzip wget -y
# CentOS 9 / Rocky Linux 9 / AlmaLinux 9
sudo dnf install nginx mariadb-server php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip unzip wget -y
💡 注意:
- CentOS 7 使用
php-mysql(非php-mysqlnd);- 确保
php-fpm已启动:sudo systemctl enable --now php-fpm
2️⃣ 配置 MariaDB(安全加固)
sudo mysql_secure_installation
# → 设定 root 密码、删除匿名用户、禁止远程 root、移除 test DB、重载权限表
3️⃣ 创建 WordPress 数据库与用户(绝不使用 root!)
sudo mysql -u root -p
> CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
> CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPass123!';
> GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';
> FLUSH PRIVILEGES;
> EXIT;
4️⃣ 配置 Nginx 站点(示例:/etc/nginx/conf.d/wordpress.conf)
server {
listen 80;
server_name example.com www.example.com;
root /var/www/wordpress;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock; # Ubuntu 路径可能为 /var/run/php/php8.1-fpm.sock
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /.ht {
deny all;
}
}
✅ 启用配置:
sudo nginx -t && sudo systemctl reload nginx
5️⃣ 下载并解压 WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo rsync -av wordpress/ /var/www/wordpress/
sudo chown -R www-data:www-data /var/www/wordpress # Ubuntu
# CentOS/RHEL: sudo chown -R nginx:nginx /var/www/wordpress
sudo chmod -R 755 /var/www/wordpress
6️⃣ 配置 WordPress(生成 wp-config.php)
cd /var/www/wordpress
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
替换以下三行(使用上一步创建的数据库凭据):
define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'StrongPass123!');
✅ 强烈建议添加安全密钥(自动生成):
访问 https://api.wordpress.org/secret-key/1.1/salt/ → 复制全部内容,替换 wp-config.php 中 `// MySQL settings…之后的define(‘AUTH_KEY’, …)` 区块**
7️⃣ 安装 SSL(使用 Certbot)
# Ubuntu (snap 安装)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d example.com -d www.example.com
# CentOS 9+
sudo dnf install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
✅ 自动配置 HTTPS 并启用自动续期(Certbot 每 90 天续签,systemd timer 已启用)
🔹 方案 B:LAMP(Apache + MariaDB + PHP)— 兼容性优先
1️⃣ 安装组件
# Ubuntu
sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
# CentOS 9
sudo dnf install httpd mariadb-server php php-mysqlnd php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
2️⃣ 启用 Apache 重写模块(必需)
sudo a2enmod rewrite # Ubuntu
# CentOS: 编辑 `/etc/httpd/conf/httpd.conf`,确保 `LoadModule rewrite_module modules/mod_rewrite.so` 未注释,且 `<Directory "/var/www">` 中 `AllowOverride All`
3️⃣ 配置虚拟主机(/etc/apache2/sites-available/wordpress.conf)
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/wordpress
<Directory /var/www/wordpress>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
✅ 启用站点:sudo a2ensite wordpress.conf && sudo systemctl reload apache2
✅ 后续步骤(数据库、下载、wp-config、SSL)与 LEMP 完全一致。
⚠️ 三、关键注意事项(必读!)
| 类别 | 注意事项 |
|---|---|
| ✅ 安全第一 | • 禁用文件编辑:在 wp-config.php 添加 define('DISALLOW_FILE_EDIT', true);• 限制 wp-admin 访问:通过 Nginx/Apache IP 白名单或 .htaccess 限制登录入口 • 定期更新:WordPress 核心、主题、插件(启用自动更新: define('WP_AUTO_UPDATE_CORE', 'minor');) |
| ✅ 权限最小化 | • wp-content 目录:755(目录),644(文件),wp-content/plugins 和 themes 可写(仅需 755)• wp-config.php:设为 600(仅所有者可读写)→ sudo chmod 600 /var/www/wordpress/wp-config.php |
| ✅ PHP 配置优化 | 修改 /etc/php/*/fpm/php.ini:memory_limit = 256Mupload_max_filesize = 64Mpost_max_size = 128Mmax_execution_time = 300重启 PHP-FPM: sudo systemctl restart php*-fpm |
| ✅ 备份策略 | • 数据库备份:mysqldump -u wpuser -p wordpress > /backup/wp_$(date +%F).sql• 文件备份: rsync -av --delete /var/www/wordpress/ /backup/wordpress/• 推荐工具:UpdraftPlus(插件)或 BorgBackup(CLI) |
| ✅ 性能优化(上线后) | • 启用 OPcache(PHP 内置) • 安装缓存插件:WP Super Cache / Redis Object Cache(需 Redis 服务) • 启用 Gzip 压缩(Nginx: gzip on; / Apache: mod_deflate) |
| ❌ 绝对避免 | • 使用 root 用户连接数据库• 将 WordPress 放在 /var/www/html 下不加子目录(易冲突)• 在生产环境开启 WP_DEBUG = true• 忽略 .htaccess 或 Nginx 重写规则导致固定链接(Permalinks)失效• 使用弱密码或默认数据库名(如 wordpress → 改为 wp_prod_2024) |
✅ 四、验证与后续操作
- 访问
https://example.com→ 进入 WordPress 安装向导 - 输入站点标题、管理员账号(勿用 admin!)、强密码、邮箱 → 完成安装
- 登录后台
https://example.com/wp-admin - 立即操作:
- 更新所有插件/主题
- 安装安全插件(Wordfence 或 Sucuri)
- 设置固定链接(设置 → 永久链接 → 选“文章名”)
- 删除默认主题(Twenty Twenty-Four)和 Hello Dolly 插件
📌 附:一键脚本(谨慎使用,仅用于测试环境)
# Ubuntu 示例(生产环境请手动执行!)
curl -s https://raw.githubusercontent.com/rtCamp/easyengine/master/ee.sh | sudo bash
sudo ee site create example.com --wp --php74 --letsencrypt
⚠️ 生产环境严禁直接运行未知脚本!务必理解每一步原理。
如需我为你生成:
- ✅ 完整的
nginx.conf或apache2.conf模板(含安全头、CSP、缓存) - ✅ 自动化备份脚本(每日压缩+异地同步至 S3/MinIO)
- ✅ Docker Compose 部署方案(带 MariaDB、Redis、Nginx)
- ✅ WordPress 多站点(Multisite)配置指南
欢迎随时提出 👍
祝你部署顺利、安全稳定!🚀
CLOUD技术博