Hôm nay mình hướng dẫn các bạn cách thay đổi ip chính trên vestacp.

Bước 1:

Các bạn tạo file changeip.sh bằng lệnh các lệnh sau đây:

vi changeip.sh

copy nội dung sau đây vào file changeip.sh:

#!/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 ***”;

Bước 2:

Tiến hành phân quyền thực thi cho file changeip.sh

chmod a+x changeip.sh

Bước 3:

Thực thi file changeip.sh như sau

changeip.sh OLDIP NEWIP

Sau khi chạy lệnh trên hoàn tất thì việc thay đổi ip chính cho vestacp cũng như các vhost và dns đã hoàn tất.

Leave a Reply

Your email address will not be published. Required fields are marked *