VPS 修改 IP 后 myVesta 的一些适配操作

因商家批量更换 IP 这一不可抗力的变动,部署有 myVesta 环境的一台 VPS 不得不进行更换 IP 后的一些适配修改。

前因

实在是等不了商家修改 IP 的漫长排队的煎熬,虽有新 IP 以及另外一台商家替换的作为参考,但还是基于一时之间无法知道新的网关的“借口”,干脆就使用控制面板里面带的修复网络功能来配置新的 IP 。

不知道什么情况通过修复网络是新增一个 IP ,反正这样一来能通过新 IP 连接上服务器,删除掉已然失效的旧 IP 过后就觉得差不多。接着就是将对应域名的解析都给修改到更换后的新 IP ,修改后还是无法成功访问到对应的网站,进一步思考才发现 myVesta 中包含大量的 IP 信息,需要将这些 IP 地址都替换到新的地址才行。

后果

替换新 IP 地址的脚本

一开始按照原版的 VestaCP 来搜索的,其中包含大量需要手动操作修改的地方,基于部署了多个网站手动修改颇为麻烦,遂更改到具体的 myVesta 后找到较为方便的方法。于是乎参考官网论坛得到的脚本按需修改即可:

  1. 论坛里的原本脚本:
    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
    
  2. 按需将OLDIPV4NEWIPV4填写上对应的值即可。其中由于没有安装bind9 服务,因此可以注释该行。
  3. 执行该脚本即可替换成功。

题外话

由于预感到在vi下编辑键位有问题,就干脆直接在 FTP 里面用记事本直接修改而得,没想到一时之间没有注意到 Windows 与 Unix 两者之间换行符的区别,导致在执行脚本的时候出现“严重”的 Bug 。

其中导致三个mv重命名的时候将新文件名全给弄乱了,文件名的错乱导致在 FTP 中都无法下载,还在还能在命令行中手动mv改回去,改回去之后再次执行该脚本重新批量替换成新 IP 即可。

至此网站已经恢复正常的访问状态……

参考

  • Proper way to change server IPhttps://forum.myvestacp.com/viewtopic.php?t=274

ChiuYut

2026年05月04日

发布者

ChiuYut

咦?我是谁?这是什么地方? Ya ha!我是ChiuYut!这里是我的小破站!