宝塔搬家问题记录
最近给一个服务器上的宝塔进行了搬家,以前都是一个个手动去备份然后搬家,最近实在是懒了,索性尝试一下宝塔自带的一键迁移功能,按照宝塔官方的教程,先给老的宝塔机器安装一键迁移插件,然后再新的机器上安装好宝塔和nginx,php,mysql等环境,并在新的宝塔的面板设置菜单里打开API接口,在配置中将老的服务器的ip地址设置到白名单中,就完成了的新的宝塔的设置。
以上准备工作做完以后就可以到老的宝塔面板的一键迁移插件里将新面板的地址连同端口号一同复制到面板路径里,token就是新宝塔面板API接口的token复制进来即可,然后就可以点击下一步然后选择迁移的网站了。
我在操作时出现了一点小插曲,就是一键迁移插件一直报错提示获取不到对方机器的环境信息。请修复面板再尝试一下
,去宝塔官网看了一下有不少人也遇到过这个问题,但是没有实际的解决方案,我尝试性的在新的宝塔面板的安全里添加了老的服务器的ip到白名单,随后并重启了一下新的宝塔面板,然后就意外的解决了这个获取不到对方机器环境信息的问题,这里记录一下防止下回忘记,虽然我不是100%确定是不是这个问题导致的报错,但是终归是解决了!
如果你也遇到和我一样的迁移问题,可以尝试一下我这方法!
今天处理另外一个服务器时又出现了类似的问题,然后通过浏览器的F12控制面板的Network定位到加载的宝塔接口问题,迁移插件的目录是:/www/server/panel/plugin/psync_api
,接口的实现都是在psync_api_main.py
这个文件里,这个文件里面会对比老旧宝塔面板的环境数据,因为前面的白名单都问题,所以定位到问题出在:chekc_surroundings
这个方法。
#检查服务器环境
def chekc_surroundings(self,get):
ret={}
ret['local']=self.get_src_config(None)
api_panel=self.get_dst_config(None)
if not api_panel:
return public.returnMsg(False, "获取不到对方机器的环境信息。请修复面板再尝试一下")
ret['api_panel']=api_panel
return ret
我测试了一下get_dst_config
函数里的ret返回大部分都没问题,唯一就是ret里的status参数是0,所以既然权限没问题,我就把原来的if ret['status']:
判断给去掉了,直接改成了下面的代码:
#获取目标服务器和环境配置
def get_dst_config(self,args):
ret = self._API.send_panel('/system?action=GetConcifInfo',{})
disk = self._API.send_panel('/system?action=GetDiskInfo',{})
result={}
result['php'] = []
if 'webserver' in ret:
result['webserver'] = ret['webserver']
if 'mysql' in ret:
result['mysql'] = ret['mysql']['status']
if 'pure-ftpd' in ret:
result['ftp'] = ret['pure-ftpd']['status']
if 'php' in ret:
for i in ret['php']:
result['php'].append(i['version'])
result['status'] = True
result['version'] = 6
result['disk'] = disk
return result
如果你在进行宝塔搬家时出现的问题和我一样,自己有看不懂我上面的操作,我可以有偿帮你搬家,费用为100元,需要的话可以直接在本文评论区留下你的QQ或者微信号,我看到后会联系你!