凌峰创科服务平台

Magento网站迁移要注意哪些关键问题?

核心原则:

  1. 备份,备份,再备份! 在进行任何操作之前,必须拥有完整、可用的备份,这是你最后的救命稻草。
  2. 在本地或 Staging 环境中测试:不要直接在生产环境上操作,先在本地电脑或临时服务器上完整演练一遍迁移过程。
  3. 保持源环境不变:在迁移完成并确认一切正常之前,不要对原网站做任何修改,以免数据不一致。

第一阶段:迁移前准备与规划

步骤 1:评估网站与目标环境

  • 源网站分析

    Magento网站迁移要注意哪些关键问题?-图1
    (图片来源网络,侵删)
    • Magento 版本:记录下当前的 Magento 版本(2.4.5-p1)。
    • PHP 版本:记录下当前使用的 PHP 版本。
    • 扩展/模块:列出所有已安装的第三方扩展,特别注意是否有商业授权的扩展,它们可能需要在新服务器上重新授权。
    • 主题:确认使用的是自定义主题还是官方主题。
    • 服务器配置:记录下原服务器的关键配置,如 PHP 内存限制 (memory_limit)、执行时间 (max_execution_time)、上传文件大小 (upload_max_filesize) 等。
  • 目标环境规划

    • 服务器要求:根据 Magento 版本的要求,选择合适的服务器硬件(CPU, 内存)和操作系统。
    • 软件栈:安装并配置好所需的软件:
      • Web 服务器:Nginx 或 Apache。
      • 数据库:MySQL 或 MariaDB(版本需兼容)。
      • PHP:安装与 Magento 版本兼容的 PHP 版本,并配置好 php.ini 中的各项参数。
      • Redis:强烈建议安装并配置 Redis 用于缓存和 Session,能极大提升网站性能。
      • Varnish:可选,用于全页面缓存,进一步提升性能。
    • 域名:如果更换域名,提前购买好新域名,并确保 DNS 解析可以随时指向新服务器。

步骤 2:创建完整备份

这是最关键的一步!你需要备份以下所有内容:

  1. 数据库备份

    • 登录你的原服务器,使用命令行或 phpMyAdmin 导出整个数据库。
    • 命令行示例
      # 格式: mysqldump -u [username] -p[password] [database_name] > backup.sql
      mysqldump -u root -p my_magento_db > /path/to/backup.sql
    • 注意:如果你的数据库很大,导出可能需要一些时间,确保有足够的磁盘空间。
  2. 文件系统备份

    Magento网站迁移要注意哪些关键问题?-图2
    (图片来源网络,侵删)
    • 这包括 Magento 的所有文件、代码、媒体图片、上传文件等。
    • 命令行示例 (使用 tar)
      # 进入 Magento 安装根目录
      cd /var/www/html
      # 打包整个项目,排除不必要的大文件(如 var/cache, var/page_cache)
      tar --exclude='var/cache/*' --exclude='var/page_cache/*' -czf magento_files_backup.tar.gz .
    • 将生成的 backup.sqlmagento_files_backup.tar.gz 下载到你的本地电脑安全保存。

第二阶段:执行迁移

步骤 3:在新服务器上部署文件

  1. 将下载的 magento_files_backup.tar.gz 上传到新服务器的 Web 根目录(/var/www/html/)。
  2. 在新服务器上解压文件:
    cd /var/www/html
    tar -xzf magento_files_backup.tar.gz
  3. 设置正确的文件权限和所有者,这是 Magento 2 最容易出问题的地方之一。
    # 假设 Web 服务器运行在 www-data 用户组下
    sudo chown -R www-data:www-data /var/www/html
    sudo find /var/www/html -type f -exec chmod 644 {} \;  # 所有文件设为 644
    sudo find /var/www/html -type d -exec chmod 755 {} \;  # 所有目录设为 755
    # 特别设置关键目录的权限
    sudo chmod -R 777 var/ pub/ generated/

步骤 4:导入数据库

  1. 在新服务器上创建一个新的数据库和数据库用户。
  2. 将之前导出的 backup.sql 文件上传到新服务器。
  3. 使用命令行导入数据库:
    # 格式: mysql -u [username] -p[password] [new_database_name] < backup.sql
    mysql -u root -p my_new_magento_db < /path/to/backup.sql

步骤 5:更新数据库配置信息

数据库中的配置信息(如数据库主机、用户名、密码)需要更新为与新服务器匹配。

  1. 使用 setup:config:set 命令(推荐)

    • 登录到新服务器,切换到 Magento 文件所属的用户(如 www-data):
      sudo -u www-data /bin/bash
    • 进入 Magento 根目录,运行以下命令:
      bin/magento setup:config:set \
      --db-host=localhost \
      --db-name=my_new_magento_db \
      --db-user=my_new_db_user \
      --db-password=my_new_db_password
    • 如果使用了 Redis,同样需要配置:
      bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=0
      bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1
  2. 直接修改 env.php 文件

    • 编辑 <你的Magento根目录>/app/etc/env.php 文件。
    • 找到 'db''cache' 等配置段,将其中的值修改为新服务器的配置信息。

步骤 6:更新 URL 和域名(如果适用)

如果新域名与旧域名不同,必须更新数据库中存储的所有 URL。

Magento网站迁移要注意哪些关键问题?-图3
(图片来源网络,侵删)
  1. 使用 setup:store-config:set 命令

    • 这个命令可以安全地更新 Base URL 和 Secure Base URL。
    • # 更新默认网站的 URL
      bin/magento setup:store-config:set \
      --base-url="http://www.yournewdomain.com/" \
      --base-url-secure="https://www.yournewdomain.com/"

    如果有其他网站或商店视图,请一一更新

    bin/magento setup:store-config:set \ --website="website_code" \ --store-view="store_view_code" \ --base-url="http://newstore.yournewdomain.com/" \ --base-url-secure="https://newstore.yournewdomain.com/"

  2. 数据库查询(备选方法,需谨慎)

    • 如果上述命令不起作用,可以直接在数据库中搜索替换。强烈建议先备份新数据库!
    • UPDATE core_config_data SET value = 'http://www.yournewdomain.com/' WHERE path LIKE 'web/%/base_url';
      UPDATE core_config_data SET value = 'https://www.yournewdomain.com/' WHERE path LIKE 'web/%/secure_base_url';
    • 运行完查询后,需要清理配置缓存:
      bin/magento cache:clean config

步骤 7:部署静态内容并升级

这是 Magento 2 迁移的“仪式感”步骤,确保所有前端文件和依赖项都正确生成。

  1. 进入维护模式:为了避免在部署过程中有用户访问,可以开启维护模式。

    bin/magento maintenance:enable
  2. 部署静态内容:根据你的主题和语言,生成所需的 CSS, JS, 图片等文件。

    # 示例:为默认主题和 en_US 语言部署
    bin/magento setup:static-content:deploy -f en_US
    # 如果使用了其他主题,需要指定
    # bin/magento setup:static-content:deploy -f en_US --area frontend --theme Vendor/theme
  3. 升级数据库和架构:即使版本不变,运行这个命令也能确保数据库结构与代码同步。

    bin
分享:
扫描分享到社交APP
上一篇
下一篇