努力
加油

不使用宝塔,仅用命令行在Ubuntu服务器上部署WordPress需要哪些关键步骤?

在 Ubuntu 上纯命令行部署 WordPress,核心逻辑就是搭建 LAMP(Linux + Apache/Nginx + MySQL/MariaDB + PHP)或 LNMP 环境,然后配置数据库和 Web 服务。

既然你明确排除了宝塔面板,说明你想要更底层、更可控的部署方式,或者是在学习服务器运维。以下是基于当前主流版本(Ubuntu 22.04/24.04 LTS)的标准实操步骤。我会尽量精简废话,直接给命令和关键配置点。

第一阶段:系统准备与基础软件安装

首先,更新源并安装必要的工具。

sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common curl wget -y

1. 安装 Nginx (推荐) 或 Apache

虽然 LAMP 很经典,但现代架构中 LNMP (Nginx) 性能更好,并发处理更强。如果你习惯 Apache 的 .htaccess 动态重写,可以用 Apache,否则强烈建议 Nginx。

这里以 Nginx 为例:

sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

验证:浏览器访问 http://你的IP,看到 “Welcome to nginx!” 即成功。

2. 安装 MariaDB (MySQL 分支)

MariaDB 是 MySQL 的完美替代品,兼容性好且开源协议更友好。

sudo apt install mariadb-server mariadb-client -y
sudo systemctl enable mariadb
sudo systemctl start mariadb

安全加固(必须做):

sudo mysql_secure_installation

一路回车,设置 root 密码时选 Y,删除匿名用户,禁止远程 root 登录,移除测试数据库。

3. 安装 PHP 及相关扩展

WordPress 依赖 PHP,且需要特定的扩展支持。

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

注意:不同 Ubuntu 版本默认 PHP 版本可能不同(如 8.1, 8.2, 8.3)。如果提示找不到包,先添加 Ondrej 的 PPA 源,或者直接使用 php 代替 php-fpm 检查版本。

第二阶段:数据库配置

登录数据库,创建 WP 专用的用户和数据库。不要使用 root 账号连接 WP,这是安全红线。

sudo mysql -u root -p

输入刚才设置的 root 密码后,执行以下 SQL:

-- 创建数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户 (替换 'your_password' 为强密码)
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_password';

-- 授权
GRANT ALL ON wordpress.* TO 'wp_user'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;
EXIT;

第三阶段:下载 WordPress 源码

将文件放到 Web 根目录。Nginx 默认路径通常是 /var/www/html。

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo mv wordpress /var/www/html/wordpress

关键权限设置:
Web 服务器进程通常由 www-data 用户运行。你需要确保该用户对 wp-content 目录有写入权限(用于上传媒体、安装插件等)。

sudo chown -R www-data:www-data /var/www/html/wordpress
sudo chmod -R 755 /var/www/html/wordpress
# 特别注意 uploads 目录需要写权限,有时需设为 775 或调整所有者
sudo chown -R www-data:www-data /var/www/html/wordpress/wp-content

第四阶段:Nginx 站点配置

这是最容易出错的地方。我们需要告诉 Nginx 如何处理 PHP 请求。

编辑配置文件:

sudo nano /etc/nginx/sites-available/wordpress

写入以下内容(根据你的域名和路径调整):

server {
    listen 80;
    server_name your_domain.com; # 替换为你的域名或 IP
    root /var/www/html/wordpress;
    index index.php index.html index.htm;

    # 日志
    access_log /var/log/nginx/wordpress_access.log;
    error_log /var/log/nginx/wordpress_error.log;

    # 静态资源缓存
    location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        add_header Cache-Control "public, immutable";
    }

    # 主路由规则
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP 处理
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        # 如果是 PHP 8.x,fastcgi_pass 可能需要指向 unix socket
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 请根据实际安装的 PHP 版本修改 sock 路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 隐藏敏感文件
    location ~ /.ht {
        deny all;
    }
}

启用站点并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置语法,无错误则继续
sudo systemctl reload nginx

如何找到正确的 PHP Socket 路径?
运行 php-config --socket 或者查看 /etc/php/8.1/fpm/pool.d/www.conf 中的 listen = 那一行。

第五阶段:通过 Web 界面完成安装

现在打开浏览器,访问 http://your_domain.com。

  1. 选择语言。
  2. 输入数据库名称 (wordpress)、用户名 (wp_user)、密码 (your_password)、主机名 (localhost)。
  3. 点击“提交”,然后运行安装程序。
  4. 填写站点标题、管理员账号和密码。

至此,WordPress 已部署完毕。

第六阶段:后续优化与安全(重要)

纯命令行部署的优势在于你可以精细控制,但也意味着你要自己负责安全。

1. 固定链接(Permalinks)

在 WP 后台 -> 设置 -> 固定链接,选择“文章名”。这会生成伪静态规则。由于我们上面 Nginx 配置里已经写了 try_files,所以不需要额外修改 Nginx 配置即可生效。

2. 配置 HTTPS (Let’s Encrypt)

生产环境必须上 HTTPS。使用 Certbot 是最简单的方式。

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com

Certbot 会自动修改 Nginx 配置并重定向 HTTP 到 HTTPS,同时自动续期。

3. 防火墙设置

假设你使用的是 UFW(Ubuntu 默认防火墙):

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full' # 允许 80 和 443
sudo ufw enable
sudo ufw status

4. 性能微调 (可选)

  • OPcache: 在 php.ini 中开启 OPcache 可以显著提升 PHP 执行效率。
  • Redis/Memcached: 对于高流量站点,安装 Redis 并配合 WP 插件(如 WP Redis)做对象缓存,比单纯调优 PHP 更有效。

常见坑点排查

  1. 白屏或 502 Bad Gateway:

    • 检查 Nginx 错误日志:sudo tail -f /var/log/nginx/error.log。
    • 最常见原因是 PHP-FPM 没启动,或者 fastcgi_pass 指向的 socket 路径不对。
    • 检查 PHP 版本是否匹配。
  2. 无法上传图片或安装插件:

    • 检查 /var/www/html/wordpress/wp-content 目录的所有者是否为 www-data。
    • 检查磁盘空间是否已满。
  3. 数据库连接错误:

    • 确认 wp-config.php 里的密码是否正确。
    • 确认 MySQL 服务正在运行:systemctl status mariadb。

总结

不使用宝塔,本质上就是手动串联 Nginx -> PHP-FPM -> MySQL 这三者的关系。关键在于:

  1. 权限:www-data 对网站目录要有读写权。
  2. 配置:Nginx 的 location ~ .php$ 块要正确指向 PHP-FPM 的 socket。
  3. 安全:务必上 HTTPS,限制数据库账户权限。

这套流程走通后,你对 Linux 服务器的理解会比只用面板深得多,遇到任何报错也能快速定位是 Nginx 层、PHP 层还是 DB 层的问题。