因商家批量更换 IP 这一不可抗力的变动,部署有 myVesta 环境的一台 VPS 不得不进行更换 IP 后的一些适配修改。
前因
实在是等不了商家修改 IP 的漫长排队的煎熬,虽有新 IP 以及另外一台商家替换的作为参考,但还是基于一时之间无法知道新的网关的“借口”,干脆就使用控制面板里面带的修复网络功能来配置新的 IP 。
不知道什么情况通过修复网络是新增一个 IP ,反正这样一来能通过新 IP 连接上服务器,删除掉已然失效的旧 IP 过后就觉得差不多。接着就是将对应域名的解析都给修改到更换后的新 IP ,修改后还是无法成功访问到对应的网站,进一步思考才发现 myVesta 中包含大量的 IP 信息,需要将这些 IP 地址都替换到新的地址才行。
后果
替换新 IP 地址的脚本
一开始按照原版的 VestaCP 来搜索的,其中包含大量需要手动操作修改的地方,基于部署了多个网站手动修改颇为麻烦,遂更改到具体的 myVesta 后找到较为方便的方法。于是乎参考官网论坛得到的脚本按需修改即可:
- 论坛里的原本脚本:
OLDIPV4='' # enter here your old IP NEWIPV4='' # enter here your new IP grep -rl "$OLDIPV4" /etc | xargs sed -i "s#$OLDIPV4#$NEWIPV4#g" find /home/*/conf/ -type f -exec sed -i "s#$OLDIPV4#$NEWIPV4#g" {} \; mv /usr/local/vesta/data/ips/$OLDIPV4 /usr/local/vesta/data/ips/$NEWIPV4 mv /etc/apache2/conf.d/$OLDIPV4.conf /etc/apache2/conf.d/$NEWIPV4.conf mv /etc/nginx/conf.d/$OLDIPV4.conf /etc/nginx/conf.d/$NEWIPV4.conf grep -rl "$OLDIPV4" /usr/local/vesta/data | xargs sed -i "s#$OLDIPV4#$NEWIPV4#g" service bind9 restart service apache2 restart service nginx restart service vesta restart v-stop-firewall v-update-firewall - 按需将
OLDIPV4、NEWIPV4填写上对应的值即可。其中由于没有安装bind9服务,因此可以注释该行。 - 执行该脚本即可替换成功。
题外话
由于预感到在vi下编辑键位有问题,就干脆直接在 FTP 里面用记事本直接修改而得,没想到一时之间没有注意到 Windows 与 Unix 两者之间换行符的区别,导致在执行脚本的时候出现“严重”的 Bug 。
其中导致三个mv重命名的时候将新文件名全给弄乱了,文件名的错乱导致在 FTP 中都无法下载,还在还能在命令行中手动mv改回去,改回去之后再次执行该脚本重新批量替换成新 IP 即可。
至此网站已经恢复正常的访问状态……
参考
- Proper way to change server IP
https://forum.myvestacp.com/viewtopic.php?t=274
ChiuYut
2026年05月04日