从本地 Docker 环境迁移 WordPress 到 SiteGround 的完整流程

当我们在本地使用 Docker(WordPress + MySQL) 进行开发后,最终需要将网站迁移到线上环境,例如 SiteGround。本文记录从 SSH 登录、数据库导出、文件迁移、wp-config 修改、域名替换,到常见问题排查的一整套流程,方便下次直接查阅。


1. SiteGround 套餐是否支持 SSH 登录?

可以。SiteGround 的 WordPress 主机直接支持 SSH,只需在后台开启。

启用 SSH 的步骤:

  1. 登录 SiteGround → Site Tools
  2. 进入 Dev → SSH Keys
  3. 创建或启用 SSH Key

使用 SSH 登录时可以用:

1
ssh username@yourdomain.com

或使用 SiteGround 提供的服务器地址,例如:

1
ssh gsgpm1051.siteground.biz -l u3158-294mrye0qlsq -p 18765

如果私钥未命名为 ~/.ssh/id_rsa,请使用:

1
ssh -i ~/.ssh/your_key

若连接有问题,可用 -v 查看详细日志:

1
ssh -v ...

2. 从本地 Docker 导出 WordPress 数据

2.1 导出数据库(mysqldump)

本地 MySQL 容器的数据库导出命令:

1
2
docker exec -i <mysql-container-name> mysqldump \
-u root -p<yourpassword> <database_name> > wordpress_db.sql

你将得到一个 wordpress_db.sql 文件。


2.2 导出 WordPress 文件(wp-content、主题、插件等)

进入 WordPress 文件目录:

1
cd /path/to/wordpress

将整个 WordPress 文件夹(或至少 wp-content)打包:

1
tar -czvf wp_files.tar.gz wp-content wp-includes wp-admin

若你将数据库文件和 WordPress 文件存放在 Docker volume,也可以导出 volume。


3. 在 SiteGround 创建新的 WordPress 站点

进入 SiteGround:

  • Site Tools → WordPress 安装

  • 创建一个新的 WP

  • 记录以下数据库信息:

    • 数据库名
    • 用户名
    • 密码
    • 主机名(一般为 localhost 或 SiteGround 自动生成的 host)

SiteGround 支持两种导入数据库方式:

  • phpMyAdmin
  • Import Database Dump(推荐)

4. 上传 WordPress 文件到 SiteGround

登录 Site Tools → Site → File Manager

wp_files.tar.gz 上传到 public_html 或你的站点根目录,然后解压:

1
tar -xzvf wp_files.tar.gz

如果你本地 WordPress 文件包含 wp-content, wp-admin, wp-includes,请覆盖到 SiteGround 生成的 WordPress 文件中。


5. 修改 wp-config.php(重要)

确保数据库配置正确:

1
2
3
4
5
define('DB_NAME', 'your_siteground_db');
define('DB_USER', 'your_siteground_user');
define('DB_PASSWORD', 'your_password');
define('DB_HOST', 'your_database_host'); // SiteGround 通常不是 localhost
$table_prefix = 'wp_';

如果你的原站使用了不同的 prefix,请保证一致。


6. 替换域名(从 localhost → 正式域名)

导入数据库后,需要替换内部链接。例如本地 WordPress 使用:

1
http://localhost:2233

SiteGround 上的正式域名为:

1
https://fssowellmed.com

常用 SQL 替换指令(可通过 phpMyAdmin 执行):

1
2
3
4
5
6
UPDATE wp_users SET user_url = REPLACE(user_url, 'localhost:2233', 'fssowellmed.com');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'localhost:2233', 'fssowellmed.com');
UPDATE wp_posts SET guid = REPLACE(guid, 'localhost:2233', 'fssowellmed.com');
UPDATE wp_options SET option_value = REPLACE(option_value, 'localhost:2233', 'fssowellmed.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'localhost:2233', 'fssowellmed.com');
UPDATE wp_wc_admin_note_actions SET query = REPLACE(query, 'localhost:2233', 'fssowellmed.com');

7. 迁移后遇到的问题:全局颜色(Global Colors)未同步

这是 Elementor 或 Astra/Megamenu 类主题中 常见问题

原因:

全局颜色通常保存在:

  • wp_options(Elementor)
  • customizer_settings(主题)
  • 序列化数据

这些字段内包含序列化数组,不能简单使用 SQL REPLACE,否则会破坏序列化结构。

推荐解决方案:

✔ 方案 A:使用官方插件“Better Search Replace”

  1. 安装插件:Better Search Replace
  2. 搜索:localhost:2233
  3. 替换为:fssowellmed.com
  4. 勾选 序列化支持
  5. 执行

这样可确保序列化数组不会损坏。


8. 最终检查清单

项目 是否完成
WordPress 文件(wp-content)已上传
数据库导入成功
wp-config.php 已修改
域名替换正确
SSL 已启用(SiteGround → Security → HTTPS Enforce)
Elementor / 主题设置同步正常 部分需 修复

总结

整体迁移流程主要分三部分:

  1. 导出本地 Docker 的 WordPress + MySQL
  2. 将文件和数据库导入 SiteGround
  3. 修复域名、序列化数据与主题/Elementor 设置

迁移过程中最容易忽略的是:

  • 序列化数据替换
  • 主题自定义(Customizer)设置未迁移
  • Elementor 全局颜色未同步

只要按本文的流程操作,就能顺利将本地 Docker WordPress 环境迁移到 SiteGround 并保持功能完整。