LHIDC

香港服务器部署WordPress:Ubuntu 22.04 LTS安装Nginx与MySQL的完整步骤

面向使用全新Ubuntu 22.04 LTS香港服务器的站长,说明部署前提、组件安装、数据库与站点配置及HTTPS启用步骤,并提供服务状态与页面功能验证、常见故障定位和备份回滚方法。

香港服务器部署WordPress:Ubuntu 22.04 LTS安装Nginx与MySQL的完整步骤

在香港服务器上部署WordPress,需要先让Nginx、PHP-FPM和MySQL协同工作,再完成域名与HTTPS配置。以下操作适用于全新Ubuntu 22.04 LTS主机:准备一个具有sudo权限的账户,将域名解析到服务器公网IP,并确认可以访问Ubuntu软件源及WordPress下载站。

Nginx负责接收网页请求,PHP-FPM执行WordPress代码,MySQL保存文章、用户与站点设置。服务器所在地不改变安装命令;真正需要核对的是系统版本、端口占用、软件兼容性和网络访问权限。

1. 核对环境并安装组件

已有网站的服务器应先做快照,并备份网站文件、数据库和/etc/nginx。下面的目录及数据库名按新站设计,遇到同名资源请停止,不要直接覆盖。

cat /etc/os-release
sudo ss -lntp
sudo nginx -t 2>/dev/null

系统信息应包含VERSION_ID="22.04"。未安装Nginx时,最后一条检查失败属于正常现象;如果80或443端口已有服务监听,应先确认用途。

Ubuntu 22.04官方仓库提供Nginx、MySQL 8.0及PHP 8.1系列软件包,具体修订版本以当前软件源为准:

sudo apt update
sudo apt install nginx mysql-server \
  php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd \
  php8.1-mbstring php8.1-xml php8.1-zip php8.1-intl \
  curl ca-certificates unzip

sudo systemctl enable --now nginx mysql php8.1-fpm
php -v
nginx -v
mysql --version

PHP 8.1是此系统的发行版默认分支,不代表新建站点的长期推荐版本。上线前应核对WordPress官方要求、插件兼容性及Ubuntu安全维护范围;若必须使用更高版本PHP,需另行制定升级方案,不能只替换下面的socket路径。

2. 建立独立数据库

不要让WordPress使用MySQL的root账户。以下SQL会创建新数据库及账户,密码必须替换为独立生成的强密码,并妥善保存。

sudo mysql

在MySQL命令行执行:

CREATE DATABASE wordpress
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

CREATE USER 'wpuser'@'localhost'
  IDENTIFIED BY 'REPLACE_WITH_A_UNIQUE_STRONG_PASSWORD';

GRANT ALL PRIVILEGES ON wordpress.*
  TO 'wpuser'@'localhost';

EXIT;

验证应用账户,而不只是验证root能否登录:

mysql -u wpuser -p -h localhost wordpress \
  -e "SELECT DATABASE(), CURRENT_USER();"

输出应包含wordpresswpuser@localhost。本机部署无需对公网开放3306端口,后续安装页面中的数据库主机填写localhost

3. 下载WordPress并配置Nginx

先确认/var/www/wordpress不存在,或确实是为本站准备的空目录。以下复制操作不可用于覆盖已有站点。

workdir=$(mktemp -d)
curl -fL https://wordpress.org/latest.tar.gz \
  -o "$workdir/wordpress.tar.gz"
tar -xzf "$workdir/wordpress.tar.gz" -C "$workdir"

sudo install -d -m 755 /var/www/wordpress
sudo cp -a "$workdir/wordpress/." /var/www/wordpress/
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;

latest.tar.gz内容随官方发布变化,生产环境应记录实际安装版本并留存安装包。上述权限方便首次安装和后台更新,但意味着PHP进程可以修改网站代码;不要再把目录权限放宽为777。

创建/etc/nginx/sites-available/wordpress。若文件已存在,先备份并人工合并。把example.com替换为实际域名:

server {
    listen 80;
    server_name example.com;

    root /var/www/wordpress;
    index index.php index.html;
    client_max_body_size 32m;

    access_log /var/log/nginx/wordpress.access.log;
    error_log /var/log/nginx/wordpress.error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location = /wp-config.php {
        deny all;
    }

    location ~* ^/wp-content/uploads/.*\.php(?:/|$) {
        deny all;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /\.(?!well-known) {
        deny all;
    }
}

确认/etc/nginx/sites-enabled/wordpress尚不存在,再启用配置:

sudo ln -s /etc/nginx/sites-available/wordpress \
  /etc/nginx/sites-enabled/wordpress
sudo nginx -t

仅当输出包含syntax is oktest is successful时执行:

sudo systemctl reload nginx

通过域名访问会匹配对应站点,不必为了新站删除默认配置。此时不要长期留下无人完成的安装向导。

4. 配置HTTPS与必要限制

云端安全组和主机防火墙需要允许80、443入站。先确认实际SSH端口已经放行,再调整防火墙,不要在远程操作中直接启用未知规则集。

sudo ufw status verbose

如果UFW已经启用,可添加Web访问规则;如果未启用,下面命令只保存规则,不会自动开启防火墙:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

域名解析及80端口公网可达后,申请证书。若配置了AAAA记录,IPv6也必须正确指向本站。Certbot会修改Nginx配置,先备份:

sudo cp -a /etc/nginx "/etc/nginx.before-certbot-$(date +%Y%m%d-%H%M%S)"
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com --redirect
sudo certbot renew --dry-run

随后访问https://example.com完成安装,填写数据库信息,并设置独立的管理员密码。完成后收紧配置文件权限:

sudo chmod 640 /var/www/wordpress/wp-config.php

若需要上传较大的媒体文件,还要同步调整/etc/php/8.1/fpm/php.ini

upload_max_filesize = 32M
post_max_size = 40M

对应的Nginx请求体上限应大于上传文件大小,可把client_max_body_size改为40m,为表单附加内容留出空间。修改前备份文件,执行sudo php-fpm8.1 -tsudo nginx -t,均通过后再分别reload服务。CLI使用的php.ini不是网站使用的FPM配置。

5. 验证服务、页面与写入功能

sudo systemctl is-active nginx mysql php8.1-fpm
sudo mysqladmin ping
sudo ss -lntp
sudo ss -lxnp | grep php

curl -I -H 'Host: example.com' http://127.0.0.1/
curl -I https://example.com/

sudo journalctl -u nginx -u mysql -u php8.1-fpm \
  --since "10 minutes ago" --no-pager

按以下标准判断:

  • 三个服务均返回active,说明进程正在运行,但不等于网站功能正常。
  • mysqld is alive说明MySQL可响应;WordPress权限仍需通过前面的应用账户查询验证。
  • Nginx应监听80、443;PHP-FPM使用Unix socket,不要求出现TCP监听端口。
  • HTTP跳转到HTTPS属于预期;HTTPS首页通常返回200,安装前也可能跳转到安装向导。
  • journalctl可检查近期启动、配置与异常退出信息;没有错误日志不能代替实际页面测试。

再登录后台,发布一篇测试文章,开启固定链接并访问文章页,上传一张图片。这样才能同时覆盖数据库写入、URL重写和文件权限。

6. 遇到失败时先定位,再决定回滚

  • 502错误:检查systemctl status php8.1-fpm,确认/run/php/php8.1-fpm.sock存在,并查看/var/log/nginx/wordpress.error.log。socket路径和服务版本必须一致。
  • 数据库连接错误:先用wpuser执行查询,再核对wp-config.php中的数据库名、用户、密码与主机;不要通过开放3306解决本机认证问题。
  • 首页正常、文章404:确认当前命中的虚拟主机包含try_files规则,并在后台重新保存固定链接。
  • 本机访问正常、外网超时:依次核对DNS、安全组、UFW及监听地址;证书签发失败也应先排查这条链路。
  • 上传失败:同时检查Nginx限制、FPM配置和wp-content/uploads写权限,不要直接执行777授权。

如果新配置导致已有站点异常,应恢复变更前备份的对应配置文件,执行nginx -t通过后再reload;FPM配置同样先恢复、测试,再重载。若安装或更新已经修改数据库,不能只回退程序文件,应恢复同一时间点的网站文件与数据库备份。涉及整机快照恢复时,先确认可接受的停机时间和备份后新增数据的损失范围。

上一篇 香港服务器交付后如何验收?检查三网路由、CPU、硬盘与实际带宽

LHIDC 产品中心

继续查看可购买的海外服务器产品

文章用于辅助选型,最终价格、库存与配置请以产品详情页和下单页面展示为准。

查看产品 查看方案