努力
加油

云服务器Ubuntu版配置LAMP环境安装WordPress步骤是什么?

在云服务器(无论是阿里云、腾讯云还是华为云等主流厂商)上搭建 LAMP (Linux, Apache, MySQL, PHP) 环境来跑 WordPress,是目前最经典也最稳定的方案之一。虽然现在 Docker 和容器化很火,但对于个人博客或中小型网站,原生安装依然简单直接且资源占用可控。

以下是在 Ubuntu 20.04/22.04 LTS 版本下,从零开始配置 LAMP 并部署 WordPress 的完整步骤。我会尽量避开那些网上抄来抄去的废话,直接给干货和需要注意的坑。

第一步:系统更新与基础准备

登录你的服务器(通过 SSH),首先确保系统包是最新的。这一步很多人会跳过,但依赖库冲突往往就出在这里。

sudo apt update && sudo apt upgrade -y

第二步:安装 Apache 2

Apache 是最成熟的 Web 服务器软件。

sudo apt install apache2 -y

安装完成后,检查服务状态:

sudo systemctl status apache2

关键点:

  1. 防火墙放行:如果你开启了 UFW 防火墙(Ubuntu 默认可能没开,但云服务器安全组必须开),记得放行 HTTP (80) 和 HTTPS (443)。
    sudo ufw allow 'Apache Full'
    sudo ufw enable
  2. 验证:浏览器访问 http://<你的公网IP>,看到 “It works!” 页面说明 Apache 启动正常。

第三步:安装 MySQL 数据库

WordPress 需要数据库来存储内容。我们选择 MariaDB 或者 MySQL 均可,这里以标准的 MySQL 为例(部分新镜像默认推荐 MariaDB,两者兼容,用法一致)。

sudo apt install mysql-server -y

安装后,务必运行安全脚本,这是很多新手忽略的安全隐患:

sudo mysql_secure_installation

按照提示操作:

  1. Validate Password Component(密码强度校验插件):建议开启,设置强密码。
  2. Remove anonymous users:Y
  3. Disallow root login remotely:Y(禁止远程 root 登录,安全起见)
  4. Remove test database:Y
  5. Reload privilege tables now:Y

创建 WordPress 专用数据库和用户:

sudo mysql

进入 MySQL 命令行后,依次执行以下 SQL 语句(请替换 your_password 为你自己的强密码):

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

注:使用 utf8mb4 是为了支持 Emoji 表情等特殊字符,这对中文环境和现代网页很重要。

第四步:安装 PHP 及必要模块

LAMP 中的 P 就是 PHP。我们需要安装 PHP 以及让 PHP 能连接 Apache 和 MySQL 的模块。

sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y

这里列出的模块是 WordPress 官方推荐的核心扩展。特别是 php-mbstring 和 php-intl,很多插件报错都是因为缺这些。

调整 PHP 配置(可选但推荐):
为了应对稍大一点的流量或上传较大的媒体文件,可以修改 php.ini:

sudo nano /etc/php/7.4/apache2/php.ini
# 注意:版本号可能因 Ubuntu 版本不同而不同,如 8.0, 8.1, 8.2 等,请用 php -v 查看当前版本对应的路径

查找并修改以下参数(如果没有则添加):

  • memory_limit = 256M
  • upload_max_filesize = 64M
  • post_max_size = 64M
  • max_execution_time = 300

修改后重启 Apache 使配置生效:

sudo systemctl restart apache2

测试 PHP 是否工作:

创建一个 info 页面:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

浏览器访问 http://<你的公网IP>/info.php,如果能显示 PHP 信息页,说明环境通了。记得装完 WordPress 后删除这个文件,防止泄露服务器信息。

第五步:下载并配置 WordPress

不要直接在服务器上解压压缩包,这样权限管理很麻烦。推荐从官网下载最新稳定版。

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

将文件移动到 Apache 的默认目录 /var/www/html:

sudo mv wordpress/* /var/www/html/

最关键的一步:权限设置

Apache 进程通常以 www-data 用户身份运行。我们需要让该用户拥有对网站目录的写权限(用于上传图片和生成配置文件)。

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

注意:不要使用 chmod 777,那是巨大的安全隐患。755 配合正确的所有者即可满足需求。如果后续遇到上传失败,再针对性地调整特定文件夹权限,而不是全局放开。

第六步:通过 Web 界面完成安装

现在打开浏览器,输入 http://<你的公网IP>。

  1. 选择语言(简体中文)。
  2. 点击“开始”。
  3. 填写数据库信息:
    • 数据库名:wordpress
    • 用户名:wordpressuser
    • 密码:你在第三步设置的 your_password
    • 数据库主机:localhost
    • 表前缀:wp_ (保持默认即可,除非你有多个 WP 实例共用一个库)
  4. 点击“提交”,然后“运行安装程序”。
  5. 填写站点标题、管理员账号、密码、邮箱等信息。
  6. 点击“安装 WordPress”。

至此,LAMP + WordPress 环境搭建完成。

进阶优化建议(避坑指南)

  1. 固定链接(Permalinks):
    默认链接结构是 ?p=123,不利于 SEO。进入后台 -> 设置 -> 固定链接,选择“文章名”。
    如果点击后出现 404 错误,是因为 Apache 没有开启 mod_rewrite 模块。
    解决方法:

    sudo a2enmod rewrite
    sudo nano /etc/apache2/sites-available/000-default.conf

    在 <Directory /var/www/html> 块中,将 AllowOverride None 改为 AllowOverride All。
    最后重启 Apache:sudo systemctl restart apache2。

  2. HTTPS 证书(Let’s Encrypt):
    现在没有 SSL 证书的网站会被浏览器标记为“不安全”,严重影响体验。推荐使用 Certbot 自动申请免费证书。

    sudo apt install certbot python3-certbot-apache -y
    sudo certbot --apache

    按照提示输入邮箱和域名(如果是 IP 地址访问,需先绑定域名解析到服务器 IP),Certbot 会自动配置 Apache 并重定向到 HTTPS。

  3. 性能与安全:

    • WAF/防火墙:除了系统自带的 UFW,建议开启云厂商自带的“Web 应用防火墙”或“安全组”策略,只开放 80/443 端口,SSH 端口限制特定 IP 访问。
    • 备份:WordPress 最怕数据丢失。定期备份数据库和 /var/www/html/wp-content/uploads 目录。可以使用云服务器的快照功能,或者安装 UpdraftPlus 等插件自动备份到 OSS/S3。
  4. 关于 PHP 版本:
    Ubuntu 22.04 默认可能安装 PHP 8.1。PHP 7.4 已经停止维护,建议直接使用 8.0 或 8.1+,性能更好,安全性更高。上述命令中的 libapache2-mod-php 会自动适配当前安装的 PHP 版本,无需手动指定版本号。

按照这个流程走下来,基本不会遇到什么大坑。如果遇到具体报错,通常是权限问题或模块缺失,对照上面的步骤排查即可。