Prestashop运维手册: 系统的迁移
背景说明:
需要将系统从一台服务器迁移到另外一台服务器,或将域名从A域名迁移到B域名。
适用场景 : prestashop迁移;prestashop服务器变更;prestashop域名变更;prestashop转移服务器
迁移的操作步骤
暂停店铺
配置IP访问
备份数据库
备份系统文件
扩展: IP无法访问时,修改SQL备份中域名
新服务器配置创建数据库
新服务器数据库配置专用SQL授权账号
恢复数据库
恢复系统文件
扩展: 修改prestashop的数据库连接信息
启用系统并进后台清除缓存
详细操作步骤
1,暂停店铺
进入系统后台,菜单 -> 配置 -> 一般 -> 维护
将 启用商店,改为 否
修改此项配置是放置前端用户下单丢失以及数据不同步问题。点击保存
2,配置IP访问
菜单路径为 : 菜单 -> 配置 -> 一般 -> 维护
商店选项关闭后,在IP维护中,输入你的公网IP地址。如果你的系统具备图形界面,可以点击 添加我的IP
,点击保存。
3,备份数据库
mysqlmudp -u user -p prestashop > prestashop.bak.sql
mysql命令说明:
mysqldump
是备份命令-u
选项,指定用户,这里输入你的实际用户,如 root (一般不建议直接使用root用户作为系统方访问)-p
选项,密码认证prestashop,为你备份的数据库名称
prestashop.bak.sql 为备份的数据库名称
4,备份系统文件
进入到文件的根目录,使用tar命令进行打包,并忽略缓存文件
tar -zcvf prestashop.bak.tar htdocs/ --exclude='htdocs/var/cache' --exclude='htdocs/cache'
文件说明:
tar -zcvf
是创建tar压缩包命令(-z用gzip压缩,-c是创建新的归档文件,-v是显示过程,-f后面跟着的是目标文件名)prestashop.bak.tar 为备份文件的名字,这里可以自行命令
htdocs/ 为你的prestashop的文件目录
--exclude=
是排除缓存目录
扩展: 如果你想全部打包,可以不使用排除选项
tar -zcvf prestashop.bak.tar htdocs/
5,扩展: IP无法访问时,修改SQL备份中域名
一般情况下进行迁移,需要在prestashop的后台配置域名访问。但是这样子保存以后,原本的商城就直接无法打开了。
但是我们不必这样子做,有更好的方法,既可以兼容原来的商城可以打开,迁移的商城也可以使用新域名。
同时在你迁移完成确定没有问题后再去停止旧商城,比较稳妥。
按以上步骤操作完成后,我们使用notepad++(或者直接使用SQL编辑软件),使用全局替换功能,将原来的域名替换为新域名。
使用其他工具的替换功能一样可以实现。
6,新服务器配置创建数据库
使用具备创建数据库权限的用户登录MySQL,这里默认使用root
mysql -u root -p
登录以后,创建数据库
create database prestashop CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
prestashop 为你实际的数据库名称
CHARACTER SET
设置字符集,这里字符集设置为utf8mb4
比较和排序的校对规则集为 utf8mb4_bin (区分大小写),如果不区分大小写,则可配置
utf8_general_ci
(不区分大小写)
7,新服务器数据库配置专用SQL授权账号
使用具备创建用户权限的账号为prestashop创建一个新的MySQL用户
CREATE USER 'shop'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
这里有一个坑,注意在这里细看,稍后会讲到。
命令说明:
CREATE USER
创建用户命令'shop'@'localhost' 为你的用户和用户域,填写你实际的登录名和域
IDENTIFIED WITH mysql_native_password BY
配置加密方式为 mysql_native_password'password',里面的password替换为你的实际密码
如果用户使用的数据库为MySQL5.7,只需要直接创建用户即可,如下
CREATE USER 'shoplhost' IDENTIFIED BY 'password';
如果你的数据库版本为8以及以上,尤其是24年更新版本的MySQL8.4版本,需要按照以上的命令进行创建。
而且需要开启相关的my.conf配置,否则提示: 数据库无法连接,或者 在日志中会见到以下提醒
[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
解决方法参考该篇文章即可,这里不再讲述。只有MySQL8以及以上用户会遇到。
8,恢复数据库
mysql -u root -p prestashop < prestashop.bak.sql
命令说明
mysql -u root -p
为登录命令prestashop 替换为你的实际数据库名字
prestashop.bak.sql 替换为你数据库实际的备份文件名
9,恢复系统文件
tar -zxvf prestashop.bak.tar -C htdocs/
命令说明:
tar -zxvf
解压命令(-z用gzip压缩,-x是解压归档文件,-v是显示过程,-f后面跟着的是目标文件名)prestashop.bak.tar 替换为你实际的备份文件名
-C
htdocs/ , -C是解压到指定的目录,htdocs/ 替换为你的实际目录即可
10,扩展: 修改prestashop的数据库连接信息
如果你新服务器的数据库连接信息与原服务器信息有所修改,比如不是同一账号或者同一密码,为防止传输过程中密码泄露,你创建了新的账号密码。
可以继续查看本节,否则可以跳过看下一节内容。
进入到你的prestashop根目录后,到相关目录下修改配置文件,目录为
app/config
配置文件为 parameters.php
,关键参数如下
'database_host' => 'localhost',
'database_port' => '',
'database_name' => 'prestashop',
'database_user' => 'shop',
'database_password' => 'password',
'database_prefix' => 'ps_',
参数说明
database_host
为你的数据地址database_port
为你的数据库端口,不配置使用默认端口 3306database_name
为你创建的数据库名称,这里使用默认数据库名称 prestashop 。如果你不是这个数据库名称,可以替换为你的实际数据库名称database_user
数据库用户名,shop 替换为你的实际用户名database_password
为数据库连接密码,password 替换为你的实际密码database_prefix
一般默认不用修改。
11,启用系统并进后台清除缓存
前面事项进行完成以后,我们需要进入到系统的后台,开始相关的配置。
清理一次缓存,并查看系统是否有异常
菜单路径: 后台 -> 配置 -> 高级参数 -> 性能 -> 清除缓存
该选项不是必须要操作的。
但为了使系统缓存正确工作,建议迁移以后,进行一次缓存清理工作。
启用商店,删除IP访问选项。
菜单路径为: 后台 -> 配置 -> 商店的参数 -> 一般 -> 维护
启用商店: 是
IP维护: 全部清空
至此商城迁移完成。
Comment