之前提到 FreshRSS 时,小白曾介绍过宝塔面板通过传统方式(上传 FreshRSS 程序等)安装及使用 FreshRSS 的教程。不过,使用宝塔的话,无论是安装还是升级 FreshRSS,都相对有些麻烦,且新版宝塔还需要绑定手机号才能使用。因此,有的读者可能更倾向于改用自带 FreshRSS 等诸多应用的 1Panel。

那么,如何将 FreshRSS 从宝塔迁移至 1Panel 呢?
宝塔转移 1Panel
既然是程序迁移,一个最基本也是最重要的要求,自然就是要保留原来的数据。因此,我们需要提前在宝塔对原数据进行备份,并下载导出到本地。
备份数据
同其他网站备份操作类似,我们需要备份“数据库”和“网站”文件。
数据库文件: 直接在宝塔“数据库”中备份下载即可,需要注意的是要同时记录好数据库信息(数据库名/用户名/密码)。
网站文件: 由于主要是程序文件,而我们迁移的 1Panel 自带该应用程序。因此,如果没有修改过网站程序文件,一般只需要备份插件目录和用户配置文件即可。
其中的“用户配置文件”包含我们在 FreshRSS 中的一些个性化设置,比如阅读习惯,文章归档等配置信息。其路径通常为:data/users/用户名/config.php
恢复数据
在 1Panel 应用商店中安装 FreshRSS,使用原域名一键部署创建网站(已装应用选择 freshrss),在“数据库”中创建 MySQL 数据库(宝塔时用的这个,数据库信息也用之前的)。
访问网站,根据向导进行配置,重点是使用之前的数据库信息和登录信息。需注意,配置“主机”时,应将原来的“localhost”改为当前数据库的容器名称(在“容器”菜单查看,格式类似 1Panel-mysql-fDxw)。
如果没什么问题,应该已进入阅读器。在 1Panel “数据库”中“导入备份”并恢复数据。然后依次再导入插件和用户配置文件,其导入路径分别为:
/opt/1panel/apps/freshrss/freshrss/data/www/freshrss/extensions
/opt/1panel/apps/freshrss/freshrss/data/www/freshrss/data/users/用户名
导入成功之后,应该就能恢复所有使用数据了。
不过小白后来发现,在 1Panel 中安装的另一款应用,所使用的数据库是 PostgreSQL,而 FreshRSS 官方推荐优先使用的恰好也是 PostgreSQL。而且统一改用一款数据库还能节省服务器资源,就想着将 FreshRSS 的 MySQL 数据库也转到 PostgreSQL。
MySQL 切换 PostgreSQL
小白最初想到的是利用数据库转换工具,将 MySQL 数据库文件转成 PostgreSQL 可用的格式。但了解之后感觉有些繁琐,而且也可能对数据造成破坏。还好,后来在 FreshRSS 官方文档知道其自带全量数据库备份功能(./cli/db-backup.php)。
执行数据库备份
我们先需要确认db-backup.php 脚本的真实路径,在“系统”的“终端”中运行命令:
docker exec 1Panel-freshrss-JAcA find / -name "db-backup.php"
使用终端时,若出现如下提示且不记得密码,可在“工具箱”的“快速设置”中修改新的“系统密码”。
无法自动认证,请填写本地服务器的登录信息!
运行脚本后,找到的路径是 /app/www/cli/db-backup.php,所以备份命令应为:
docker exec 1Panel-freshrss-JAcA php /app/www/cli/db-backup.php
PS. 注意将上述所有的“1Panel-freshrss-JAcA”替换成实际容器名。
备份文件backup.sqlite在/opt/1panel/apps/freshrss/freshrss/data/www/freshrss/data/users/用户名将其下载到本地。
迁移到 PostgreSQL
重装 FreshRSS: 删除 FreshRSS 网站,同时勾选“删除应用”。然后按照上述“恢复数据”部分,安装应用 - 创建网站 - 创建 PostgreSQL 数据库,之后按照向导进行配置。将下载的 backup.sqlite 上传到原备份文件路径,就可以使用命令恢复数据库了:
docker exec 1Panel-freshrss-zRnS php /app/www/cli/db-restore.php --delete-backup --force-overwrite
注意将其中“1Panel-freshrss-zRnS”替换为重装后的实际容器名。恢复数据库以后,再导入插件和用户配置文件就可以了。


评论0