下面我将为您提供一个详细、分步、通用的 Magento 网站搬家指南,涵盖了从准备到收尾的整个过程,无论您是使用 cPanel、宝塔面板还是通过命令行操作,核心逻辑都是一致的。

核心流程概览
- 准备工作:在新服务器上部署环境,获取旧站点的所有文件和数据库。
- 上传文件:将旧站点的文件上传到新服务器。
- 导出/导入数据库:导出旧数据库,在新服务器上导入。
- 更新核心配置:修改数据库中的关键路径和域名信息。
- 文件权限设置:确保新服务器上的文件权限正确。
- 清理和验证:清除缓存,测试网站功能。
第一步:准备工作
在开始之前,请确保你已经准备好了新旧两台服务器。
记录当前网站信息
在旧服务器上,请务必记录以下信息,这将在后续步骤中至关重要:
- 网站根目录路径:
/home/username/public_html或/var/www/html。 - 数据库信息:
- 数据库名称
- 数据库用户名
- 数据库密码
- 数据库主机 (通常是
localhost)
- Magento 版本:是 Magento 1 还是 Magento 2?它们的操作有显著差异,本指南以更常见的 Magento 2为例,最后会补充 Magento 1 的关键区别。
- 基础 URL:
http://www.old-domain.com和https://www.old-domain.com。
在新服务器上准备环境
- 安装 Web 服务器 (Nginx/Apache)、PHP 和 MySQL/MariaDB。
- 确保 PHP 版本与 Magento 版本兼容,Magento 2.4.x 需要 PHP 7.4 或更高版本。
- 创建一个新的数据库和数据库用户,并记录下它们的名称和密码。
第二步:下载并上传文件
从旧服务器下载文件
使用 SSH 连接到旧服务器,或者通过 cPanel/宝塔面板的文件管理器,将整个 Magento 网站的根目录(包括所有文件和文件夹)打包并下载到你的本地电脑。
# 使用 SSH 和 tar 命令打包(推荐,速度快) cd /path/to/your/magento/root tar -czf magento_backup.tar.gz .
下载 magento_backup.tar.gz 文件到本地。

上传文件到新服务器
将下载到的 magento_backup.tar.gz 文件上传到新服务器的 Magento 网站根目录,同样可以通过 SSH 或文件管理器完成。
# 使用 SSH 和 scp 命令上传 scp magento_backup.tar.gz user@new_server_ip:/path/to/your/new/magento/root/
在新服务器上解压文件
连接到新服务器,进入网站根目录,解压文件。
cd /path/to/your/new/magento/root tar -xzf magento_backup.tar.gz rm magento_backup.tar.gz # 删除压缩包
第三步:数据库迁移
这是最关键的一步。
在旧服务器上导出数据库
使用 SSH 连接到旧服务器,执行以下命令:

# 格式: mysqldump -u [username] -p[password] [database_name] > [backup_file].sql mysqldump -u magento_user -p'your_old_password' magento_db > magento_db_backup.sql
注意:
-p和密码之间没有空格。
将导出的 magento_db_backup.sql 文件下载到本地。
在新服务器上导入数据库
将下载到的 magento_db_backup.sql 文件上传到新服务器。
# 使用 scp 上传 scp magento_db_backup.sql user@new_server_ip:/path/to/your/new/magento/root/
连接到新服务器,进入网站根目录,导入数据库:
# 先登录到 MySQL mysql -u root -p # 在 MySQL 命令行中创建新数据库并导入 CREATE DATABASE magento_new_db; EXIT; # 退出 MySQL,执行导入命令 mysql -u new_db_user -p'your_new_password' magento_new_db < magento_db_backup.sql
第四步:更新核心配置(Magento 2 专属)
这是让 Magento 知道自己“搬家”了的核心步骤,我们需要修改数据库中的 core_config_data 表。
使用命令行(推荐)
-
SSH 登录到新服务器,并切换到 Magento 安装目录的根目录(通常是
pub目录的上一级)。cd /path/to/your/new/magento/root
-
执行
setup:config:status命令,检查配置是否需要更新。bin/magento setup:config:status
如果输出显示配置与数据库不符,就需要执行更新。
-
执行
setup:upgrade命令,这个命令会自动检测并更新数据库配置,包括 URL 等。bin/magento setup:upgrade
注意:
bin/magento不存在,说明你的文件权限或路径有问题,请确保文件权限正确,并且你位于正确的目录下。
手动修改数据库
如果命令行方法失败,你可以手动修改数据库。
-
SSH 登录到新服务器,并连接到 MySQL。
mysql -u new_db_user -p'your_new_password' magento_new_db
-
执行 SQL 查询,更新 URL:
-- 更新 unsecure base URL UPDATE core_config_data SET value = 'http://www.new-domain.com/' WHERE path = 'web/unsecure/base_url'; -- 更新 secure base URL UPDATE core_config_data SET value = 'https://www.new-domain.com/' WHERE path = 'web/secure/base_url';
-
退出 MySQL:
EXIT;
第五步:更新 env.php 文件
app/etc/env.php 文件中也存储了数据库连接信息和一些基础 URL,需要手动更新。
-
使用文件编辑器(如
nano或vim)打开新服务器上的app/etc/env.php文件。nano app/etc/env.php
-
找到并修改以下部分:
'db'=>[ 'table_prefix' => '', 'connection' => [ 'default' => [ 'host' => 'localhost', 'dbname' => 'magento_new_db', 'username' => 'new_db_user', 'password' => 'your_new_password', ... ] ] ]- (可选)如果文件里也有
base_url相关配置,也一并更新。
-
保存并关闭文件。
第六步:设置文件权限
Magento 2 对文件权限有严格要求,在新服务器上,执行以下命令来设置正确的权限。
# 假设你的 Magento 根目录是 /var/www/html/magento
cd /var/www/html/magento
# 设置所有权(将 'www-data' 替换为你的 Web 服务器用户,如 'nginx', 'apache')
sudo chown -R www-data:www-data .
# 设置文件权限
sudo find . -type f -exec chmod 644 {} \;
sudo find . -type d -exec chmod 755 {} \;
# 设置关键目录的执行权限
sudo chmod u+x bin/magento
sudo chmod -R 755 var/ pub/ generated/ static/
第七步:清理缓存并验证
-
清理所有缓存:
# 在 Magento 根目录下执行 bin/magento cache:clean bin/magento cache:flush
你也可以通过删除
var/cache,var/page_cache,var/generation等目录来强制清理(但通常不推荐,用命令更安全)。 -
访问新域名:在浏览器中输入你的新域名
http://www.new-domain.com,检查网站是否正常显示。 -
检查关键功能:
- 前台页面是否正常加载?
- 后台登录 (
/admin) 是否正常? - 产品、分类页面是否正常?
- 购物车和结账流程是否正常?
- 图片是否能正常显示?
第八步:最终收尾
- 更新 DNS:登录你的域名注册商(如 GoDaddy, 阿
