If we are changing the main IP of a server installed with Vesta panel, we can use the following script to make the IP changes in the Apache configuration, DNS and other required files. Please use the following steps:
touch /usr/local/vesta/bin/v-change-server-ip
chmod 0755 /usr/local/vesta/bin/v-change-server-ip
nano /usr/local/vesta/bin/v-change-server-ip
Then paste the following code:
#!/bin/sh
#script to change ips on a VestaCP server.
#usage:
# $0 <oldip> <newip>
LOG=/var/log/vesta/system.log
MYUID=`/usr/bin/id -u`
if [ "$MYUID" != 0 ]; then
echo "You require Root Access to run this script";
exit 0;
fi
if [ $# != 2 ] && [ $# != 3 ]; then
echo "Usage:";
echo "$0 <oldip> <newip> [<file>]";
echo "you gave #$#: $0 $1 $2 $3";
exit 0;
fi
OLD_IP=$1
NEW_IP=$2
HAVE_HTTPD=1
HAVE_NGINX=1
DATE=`date '+%F %X'`
BIN=`echo $0 | awk -F/ '{print $NF}'`
log()
{
echo -e "$1";
echo -e "$1" >> $LOG;
}
swapfile()
{
if [ ! -e $1 ]; then
log "Cannot Find $1 to change the IPs. Skipping...";
return;
fi
TEMP="perl -pi -e 's/${OLD_IP}/${NEW_IP}/g' $1"
eval $TEMP;
log "$DATE $BIN $1\t: $OLD_IP -> $NEW_IP";
}
if [ $# = 3 ]; then
swapfile $3;
exit 0;
fi
IPFILE_OLD=/usr/local/vesta/data/ips/$OLD_IP
IPFILE_NEW=/usr/local/vesta/data/ips/$NEW_IP
if [ ! -e $IPFILE_OLD ]; then
echo -n "$IPFILE_OLD does not exist. Do you want to continue anyway? (y/n) : ";
read YESNO;
if [ "$YESNO" != "y" ]; then
exit 0;
fi
else
mv -f $IPFILE_OLD $IPFILE_NEW
log "$DATE $0 $IPFILE_OLD\t: $OLD_IP -> $NEW_IP";
fi
if [ "${HAVE_HTTPD}" -eq 1 ]; then
if [ -e /etc/httpd/conf.d/${OLD_IP}.conf ]; then
swapfile /etc/httpd/conf.d/${OLD_IP}.conf
mv -f /etc/httpd/conf.d/$OLD_IP.conf /etc/httpd/conf.d/${NEW_IP}.conf
fi
swapfile /etc/httpd/conf.d/mod_extract_forwarded.conf
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
if [ -e /etc/nginx/conf.d/${OLD_IP}.conf ]; then
swapfile /etc/nginx/conf.d/${OLD_IP}.conf
mv -f /etc/nginx/conf.d/$OLD_IP.conf /etc/nginx/conf.d/${NEW_IP}.conf
fi
fi
swapfile /etc/hosts
ULDDU=/usr/local/vesta/data/users
for i in `ls $ULDDU`; do
{
if [ ! -d $ULDDU/$i ]; then
continue;
fi
swapfile $ULDDU/$i/web.conf
swapfile $ULDDU/$i/dns.conf
for j in `ls $ULDDU/$i/dns/*.conf`; do
{
swapfile $j
};
done;
if [ "${HAVE_HTTPD}" -eq 1 ]; then
swapfile /home/$i/conf/web/httpd.conf
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
swapfile /home/$i/conf/web/nginx.conf
fi
for j in `ls /home/$i/conf/dns/*.db`; do
{
swapfile $j
};
done;
};
done;
#this is needed to update the serial in the db files.
if [ "${HAVE_HTTPD}" -eq 1 ]; then
service httpd restart
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
service nginx restart
fi
echo "*** Done swapping $OLD_IP to $NEW_IP ***";
Then run the following command:
v-change-server-ip <OLDIP> <NEWIP>
Here replace the old IP and new IP with the actual IP's. Once the script is run from the terminal, you are done.