记一次magento1升级(迁移)到magento2.4.1的过程和坑

好几年没有捣鼓过magento了,正好有个朋友要将1.9.2.1升级到magento2,好像是magento 1.9x官方停止维护了,有中毒的迹象。经过五六年的发展,magento2应该也比较成熟了,搞起搞起。

首先说一下我的方案吧,分为以下几个步骤:

1.环境准备。新建一台服务器,搭建系统环境:php7.4(最好最新的,7.4.2好像有问题)、mysql8.0、nginx1.8、elasticsearch7.6.2(magento2只验证了7.6.X)、composer(推荐1.X版本)、jdk11(用于elasticsearch7.6.2,最少jdk8.X);

2.安装原生magento2.4。将1.9.2.1的数据库备份一份,导入新建的服务器中(这里只是模拟迁移),同时安装一份原生的2.4.1;

3.数据迁移。通过使用 data-migration-tool 将1.9X的数据迁移到magento2.4.1;

4.验证数据,配置计划任务等信息;

下面分步骤详细讲一下

1.环境准备

此部分略过,请注意版本的问题,安装成功后可以验证下各个软件是否正常工作;

 

2.安装原生magento2.4

官方推荐使用composer或者git、源码包安装,但是国内网速的原因,我选择了源码包,centos指令如下:

wget https://github.com/magento/magento2/archive/2.4.1.zip

下载好源码包之后,解压,进入网站目录,执行以下安装脚本:

bin/magento setup:install \
--base-url=http://xxx.com \
--db-host=localhost \
--db-name=你的数据库名称\
--db-user=你的数据库用户名\
--db-password=你的数据库密码\
--admin-firstname=后台姓\
--admin-lastname=后台名\
--admin-email=后台邮箱 \
--admin-user=后台用户名\
--admin-password=后台密码\
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1

这里要注意一下,2.4之前是可以通过浏览器访问setup安装的,2.4以后好像只能通过指令安装了。还有就是如果提示你需要composer update,网站根目录执行一下composer update就好了。

安装成功后会输出一个后台的访问地址,admin_xxxx后面的是随机数,请大家记好,访问后台需要用到。当然你也可以在安装的时候指定后台地址,但是为了安全最好不要指定。有需要的请参考magento官方的安装文档:

magento2.4安装指南 

安装成功之后,配置好nginx conf,就可以访问网站。如果出现前后端或者js、css404,一般是权限的问题,请执行以下linux指令:

find var -type f -exec chmod 0644 {} \;

find var -type d -exec chmod 0755 {} \;

chcon -t httpd_sys_content_t var -R

chcon -t httpd_sys_rw_content_t var -R

find generated -type f -exec chmod 0644 {} \;

find generated -type d -exec chmod 0755 {} \;

chcon -t httpd_sys_content_t generated -R

chcon -t httpd_sys_rw_content_t generated -R

find pub/static -type f -exec chmod 0644 {} \;

find pub/static -type d -exec chmod 0755 {} \;

chcon -t httpd_sys_content_t pub/static -R

chcon -t httpd_sys_rw_content_t pub/static -R

执行完之后在magento的根目录再清除缓存和重新索引一下:

清理缓存:
bin/magento cache:flush
重新索引
bin/magento indexer:reindex 

如果还是显示404,可能是你的目录权限的问题,请检查你的linux用户是否有操作这些目录的权限。

新建一个magento1的数据库,将你的magento1的数据库备份导入进去,为后面的迁移做准备。

 

3.数据迁移

1.安装data-migration-tool

在网站根目录下执行以下指令:

composer config repositories.magento composer https://repo.magento.com
composer require magento/data-migration-tool:2.4.1

这里要注意下,你要下载和你要迁移的版本一样的工具,比如说你要迁移到2.4.0 那你就把 data-migration-tool:2.4.1 改为 2.4.0,其他版本同理;

如果要你输入相关信息,输入就好。

 

2.同步数据

安装成功之后,找到你要升级的1.X版本的文件,我这里是:网站目录/vendor/magento/data-migration-tool/etc/opensource-to-opensource/1.9.2.1/config.xml.dist  将config.xml.dist 复制一份,cp config.xml.dist  config.xml,

然后打开config.xml,找到数据库配置内容,并替换为你自己的信息:

<source>
    <database host="localhost" name="magento1" user="root" password="123456" />
</source>
<destination>
    <database host="localhost" name="magento2" user="root" password="123456" />
</destination>
<crypt_key>xxxxxxxxxxxxxxxxxxxxx</crypt_key>

其中crypt_key是你的magento1.x的密文,在app/etc/local.xml里面可以找到,这个比较重要,要搞对才能使用之前的密码。

如果你要升级1.9.2.4 ,那你就找到1.9.2.1/config.xml 配置一下就好了。

这个文件夹还有个map.xml.dist,是用来排除掉一下不需要同步的数据的,我这里安装的时候报错了,排除了以下几个表:

如果合并没有报错,就不需要修改这个xml。

当你要使用这个map.xml的时候,要先去上面说的config.xml配置一下:

配置好之后,回到网站根目录,执行以下指令:

##同步配置
bin/magento -a migrate:settings  你的网站根目录绝对路径/vendor/magento/data-migration-tool/etc/opensource-to-opensource/1.9.2.1/config.xml

##同步数据
bin/magento -a migrate:data 你的网站根目录绝对路径/vendor/magento/data-migration-tool/etc/opensource-to-opensource/1.9.2.1/config.xml


其中参数 -a,他会忽略不能同步的信息,大家可以尝试下不加这个参数。

静待同步完成,再进行下一步操作。

这里要特别说明下,之前magento1.x的插件和主题,以及自己开发的插件都不打算再要了,所以这里不讨论同步代码和主题插件,只同步数据。

 

4.验证数据

同步成功之后,请刷新缓存和索引,参考安装的那里的刷新指令。

然后动动小手,去前台后端都点点吧,没毛病再开启计划任务,因为mgento很多东西都是计划任务在执行了,比如说你修改了产品:

开启计划任务的指令是:

bin/magento cron:install

然后再你的服务器执行: crontab -l

有以上输出就是成功了,注意下你服务器的当前用户,指定用户可以使用 crontab -l -uwww。

到这里,基本上就迁移成功了,后面的搜索啊、邮件啊,可以慢慢捣鼓下了。

再说一个遇到的问题吧,当迁移成功后,我发现前端没有任何产品展示,但是后台产品又是可用、有库存,总之是后台产品和分类完全正常,就是前台不展示。

后面发现是website_id的问题,同步的时候莫名其妙多了一个Admin的店铺,而且在后台也不展示,真是奇了怪

数据库store_website表显示有两个店铺:

后台展示只有一个店铺:

没找到问题出在哪里,后面就批量把产品的website_id设置为1,前端产品就展示出来了,奇葩。

大家有任何问题欢迎留言和交流。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值