FTP存储空间无法连接的问题
备份网站选择FTP存储空间时,设置账号报“API资料校验失败”。
点击设置后,等待很长时间后出错。
于是开始解决问题。首先当然是先用浏览器访问FTP了。然后发现打不开,这就很尴尬。不过解决起来很容易,考虑端口没开放。不仅服务器要开端口,华为云服务器的安全组也要开。于是打开21和39000-40000端口。用浏览器可以顺利登上FTP。
到这里,我以为问题解决了。想不到在设置时,还是同样的问题。而且报错之前要等很长的时间,应该是超时。但是用浏览器是可以访问的,这是为什么呢?考虑之后,应该是这个FTP存储空间和浏览器在实现访问时不太一样。
于是查看资料,尤其是pure-ftpd的设置。研究FTP客户端的实现时发现,FTP默认的传输模式是被动模式,因此在通信过程中会去寻找服务器端的IP地址进行连接。但由于云服务器分内网和外网的IP,因此存在被动模式下客户端找不到有效的IP。因为拿到的是内网IP,所以无法建立连接。这也是为什么FTP存储空间校验失败(超时了)。但我们测试FTP能成功是因为浏览器处理了这种情况,你的内网IP不成功,那我直接连你的外网IP呗,反正你连接时给过了。但FTP存储空间显然没做这个错误处理(必竟只是个插件,只实现了普通的基本功能)。
问题找到了,那就改动pure-ftpd的配置文件。找到/www/server/pure-ftpd/etc/pure-ftpd.conf ,第188行:
# ForcePassiveIP 192.168.0.1
- 1
改成
ForcePassiveIP 外网IP
- 1
重启pure-ftpd的服务,问题解决。执行计划任务后,数据库和网站文件也顺利地备份到了远程服务器上。