Linux服務器的配置和數據遷移方案



問題  
將Linux功能服務器的配置和數據遷移到新服務器中  

解決方案  
遷移一臺主控+功能的Linux服務器方法 

要求1:新舊服務器安裝了同一版本的Prim@Hosting(最完善的虛擬主機管理系統) 
要求2:下面的例子都假設使用bash作爲shell 

此方法,不需要從主控執行檢測與修復,就可以恢復全部數據和配置。只有磁盤配額限制除外, 
如需要重新設置磁盤配額限制,在恢復完之後從主控執行web站點的檢測與修復,選上“同時更新正常站點”選項

[注意]請仔細閱讀全部內容,瞭解了都有哪些工作要做,才真正開始操作。

在舊服務器上: 
下面假設備份目錄爲:/backup 

1. 備份web數據 
cd /www/ 
tar zcpf /backup/users.tar.gz users 

2. 備份郵件數據 
cd /var 
tar zcpf /backup/vmail.tar.gz vmail 

3. 備份dns數據 
cd /var 
tar zcpf /backup/named.tar.gz named 

4. 備份MySQL(和PHP搭配之最佳組合)數據(包含URLForward數據庫) 
cd /var/lib 
tar zcpf /backup/MySQL(和PHP搭配之最佳組合).tar.gz MySQL(和PHP搭配之最佳組合) 

5. 備份網站生成的用戶數據 
cd /www/Prima(最完善的虛擬主機管理系統)/htdocs/apps/GenComSite 
tar zcpf /backup/GenComSite.tar.gz sitepage upload 

6. 備份計數器數據 
cd /var/Counter 
tar zcpf /backup/CounterData.tar.gz data 

7. 備份配置 
cd /usr/Prima(最完善的虛擬主機管理系統) 
tar zcpf /backup/Prima(最完善的虛擬主機管理系統)_etc.tar.gz etc 

cd /usr/Prima(最完善的虛擬主機管理系統)/postfix 
tar zcpf /backup/postfix_conf.tar.gz conf 

cd /usr/local/frontpage 
tar zcpf /backup/frontpage_cnf.tar.gz *.cnf 

cd /etc 
cp named.conf /backup/named.conf 

cd /www/Prima(最完善的虛擬主機管理系統)/htdocs/apps/phpMyAdmin 
cp config.inc.php /backup/config.inc.php 

如果用resin(一個免費的JSP運行平臺)提供jsp(SUN企業級應用的首選)服務: 
cd /usr/local/resin(一個免費的JSP運行平臺)/conf 
cp host.conf /backup/resin(一個免費的JSP運行平臺)_host.conf 

如果用tomcat(一個很好用的JSP運行平臺)提供jsp(SUN企業級應用的首選)服務: 
cd /var/tomcat(一個很好用的JSP運行平臺)4/conf 
cp server.xml(標準化越來越近了) /backup/server.xml(標準化越來越近了) 

主控配置 
(單機版/專業版) 
cd /www/Prima(最完善的虛擬主機管理系統)/htdocs/common 
cp PUB.Config.inc /backup/PUB.Config.inc 

(商務版) 
cd /www/Prima(最完善的虛擬主機管理系統)/common 
cp DMC.Config.inc /backup/DMC.Config.inc 

在新服務器上: 
請將原服務器上的備份拷貝到新服務器上 
以下假設拷貝過來的備份放在/backup 

0. 停止服務: 
/etc/init.d/httpd stop 
/etc/init.d/muddleftpd stop 
/etc/init.d/postfix stop 
/etc/init.d/courier-pop3d stop 
/etc/init.d/named stop 
/etc/init.d/MySQL(和PHP搭配之最佳組合)d stop 
/etc/init.d/acald stop 

1. 恢復web數據 
cd /www 
tar zxpf /backup/users.tar.gz 

2. 恢復郵件數據 
cd /var 
tar zxpf /backup/vmail.tar.gz 

3. 恢復dns數據 
cd /var 
tar zxpf /backup/named.tar.gz 

4. 恢復MySQL(和PHP搭配之最佳組合)數據 
cd /var/lib 
tar zxpf /backup/MySQL(和PHP搭配之最佳組合).tar.gz 

5. 恢復網站生成用戶數據 
cd /www/Prima(最完善的虛擬主機管理系統)/htdocs/apps/GenComSite 
tar zxpf /backup/GenComSite.tar.gz 

6. 恢復計數器數據 
cd /var/Counter 
tar zxpf /backup/CounterData.tar.gz 

7. 恢復配置 
cd /usr/Prima(最完善的虛擬主機管理系統) 
tar zxpf /backup/Prima(最完善的虛擬主機管理系統)_etc.tar.gz 

cd /usr/Prima(最完善的虛擬主機管理系統)/postfix 
tar zxpf /backup/postfix_conf.tar.gz 

cd /usr/local/frontpage 
tar zxpf /backup/frontpage_cnf.tar.gz 

cd /etc 
cp /backup/named.conf . 

cd /www/Prima(最完善的虛擬主機管理系統)/htdocs/apps/phpMyAdmin 
cp /backup/config.inc.php . 

如果使用resin(一個免費的JSP運行平臺)提供jsp(SUN企業級應用的首選)服務: 
cd /usr/local/resin(一個免費的JSP運行平臺)/conf 
cp /backup/resin(一個免費的JSP運行平臺)_host.conf ./host.conf 

如果使用tomcat(一個很好用的JSP運行平臺)提供jsp(SUN企業級應用的首選)服務: 
cd /var/tomcat(一個很好用的JSP運行平臺)4/conf 
cp /backup/server.xml(標準化越來越近了) ./server.xml(標準化越來越近了) 

主控配置 
(單機版/專業版) 
cd /www/Prima(最完善的虛擬主機管理系統)/htdocs/common 
cp /backup/PUB.Config.inc . 

(商務版) 
cd /www/Prima(最完善的虛擬主機管理系統)/common 
cp /backup/DMC.Config.inc . 

7. 同步系統用戶信息 
7.1 統一系統用戶名爲小寫 
cat /usr/Prima(最完善的虛擬主機管理系統)/etc/usermap|awk ’{printf("%s %s\n",$1,tolower($2))}’ > /usr/Prima(最完善的虛擬主機管理系統)/etc/usermap.new 
cp /usr/Prima(最完善的虛擬主機管理系統)/etc/usermap /usr/Prima(最完善的虛擬主機管理系統)/etc/usermap.old 
cp /usr/Prima(最完善的虛擬主機管理系統)/etc/usermap.new /usr/Prima(最完善的虛擬主機管理系統)/etc/usermap 

cat /usr/Prima(最完善的虛擬主機管理系統)/etc/httpd/virtual.conf|awk ’{if(/user_.*[A-Z]/) printf("%s %s %s\n",$1,$2,tolower($3)); else print $0;}’ >/usr/Prima(最完善的虛擬主機管理系統)/etc/httpd/virtual.conf.new 
cp /usr/Prima(最完善的虛擬主機管理系統)/etc/httpd/virtual.conf /usr/Prima(最完善的虛擬主機管理系統)/etc/httpd/virtual.conf.old 
cp /usr/Prima(最完善的虛擬主機管理系統)/etc/httpd/virtual.conf.new /usr/Prima(最完善的虛擬主機管理系統)/etc/httpd/virtual.conf 

7.2 重新創建用戶和設置權限 
cd /root 
cat /usr/Prima(最完善的虛擬主機管理系統)/etc/usermap | awk ’{printf("/usr/sbin/useradd -g ftpd -d /www/users/%s -s /no/shell -M %s\nchown -R %s:ftpd /www/users/%s\n",$1,$2,$2,$1)}’ > sync_sys_users.sh 
sh sync_sys_users.sh 

8. 同步郵件用戶信息 
(convert_vmail_id.sh附後) 
sh convert_vmail_id.sh 

9. 啓動服務: 
/etc/init.d/httpd start 
/etc/init.d/muddleftpd start 
/etc/init.d/postfix start 
/etc/init.d/courier-pop3d start 
/etc/init.d/named start 
/etc/init.d/MySQL(和PHP搭配之最佳組合)d start 
/etc/init.d/acald start 
if used Java Support, and use resin(一個免費的JSP運行平臺) 
/etc/init.d/resin(一個免費的JSP運行平臺) start 
if used Java Support, and use tomcat(一個很好用的JSP運行平臺) 
/etc/init.d/tomcat(一個很好用的JSP運行平臺)4 start 

完成。 

附錄1 convert_vmail_id.sh 

#!/bin/sh 
userdb_dir="/usr/Prima(最完善的虛擬主機管理系統)/etc/mail/userdb" 
default_userdb="$userdb_dir/default" 
makeuserdb_prog="/usr/Prima(最完善的虛擬主機管理系統)/maildrop/bin/makeuserdb" 

update_ugid_infile() 

if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] ; then 
return 1 
fi 
if [ ! -f $3 ] ; then 
return 1 
fi 

sed -e "s/uid=[0-9]*/uid=$1/g" $3 > $3.tmp 
if [ $? != 0 ] ; then 
rm -f $3.tmp 
return 1 
fi 
cp $3.tmp $3 
rm -f $3.tmp 

sed -e "s/gid=[0-9]*/gid=$1/g" $3 > $3.tmp 
if [ $? != 0 ] ; then 
rm -f $3.tmp 
return 1 
fi 
cp $3.tmp $3 
rm -f $3.tmp 

return 0 


vuid=`id -u vmail` 
if [ $? != 0 ] ; then 
echo "can not get vmail user id" 
exit 1 
fi 
vgid=`id -g vmail` 
if [ $? != 0 ] ; then 
echo "can not get vmail group id" 
exit 1 
fi 

if [ ! -d $userdb_dir ] ; then 
echo "$userdb_dir does not exist or is not a dir" 
exit 1 
fi 

for name in `ls $userdb_dir` 
do 
file="$userdb_dir/$name" 
if [ -f $file ] ; then 
echo -n "Updating $name..." 
if [ $name != "default" ] ; then 
update_ugid_infile $vuid $vgid $file 
else 
echo -e "vmail\tuid=$vuid|gid=$vgid|home=/var/vmail|shell=/bin/bash|systempw=!!\n$vuid=\tvmail\nroot@$HOSTNAME\tuid=$vuid|gid=$vgid|home=/var/vmail|mail=/var/vmail/root|systempw=!!" > $default_userdb 
fi 
if [ $? = 0 ] ; then 
echo "success." 
else 
echo "fail." 
fi 
fi 
done 

echo 
echo "Rebuild db..." 
$makeuserdb_prog 
echo "done." 
echo 
echo "bye." 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章