1. 备份web数据
cd /www/
tar zcpf /backup/users.tar.gz users
(这步包含了对商务系统的/www/primaBiz/目录备份)
2. 备份邮件
cd /var
tar zcpf /backup/vmail.tar.gz vmail
3. 备份DNS
cd /var
tar zcpf /backup/named.tar.gz named
cd /etc
cp named.conf /backup/named.conf
4. 备份mysql数据库
cd /var/lib
tar zcpf /backup/mysql.tar.gz mysql
(这步包含对商务系统的primabizdb 备份)
5. primadb库,我们已经安装好了自动备份程序,在每天1点40备份数据库,
备份的文件将被压缩成以下形式:/backup/dbbk/primadb.yyyymmdd-hhiiss.sql.gz
============
win2k服务器:
1. 备份web数据:
将 hosting/wwwroot/ 复制或者用 rar分卷压缩到备份盘
将 hosting/acasd/vohst.conf 备份 ,这个文件是jsp站点的配置文件
2. 备份MSSQL数据库
参照附件(仅供参考),注意:附件的文档是把本地数据库导入到远程的操作,
备份服务器,操作顺序:打开本地数据库导入导出工具,先连接远程复制数据,再连接本地;
bakup linux server
Migrate a Control+Appliance Linux Server
Requirement1: old and new server have the same version of Prim@Hosting
Requirement2: use bash as your shell
!!! Read all before continue !!!
If you are not sure about any step, ask us.
on Old server:
assume backup files put in /backup
1. backup web
cd /www/
tar zcpf /backup/users.tar.gz users
2. backup mail
cd /var
tar zcpf /backup/vmail.tar.gz vmail
3. backup dns
cd /var
tar zcpf /backup/named.tar.gz named
4. backup mysql
cd /var/lib
tar zcpf /backup/mysql.tar.gz mysql
5. backup GenComSite user data
cd /www/prima/htdocs/apps/GenComSite
tar zcpf /backup/GenComSite.tar.gz sitepage upload
6. backup configs
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
if used Java Support, and use resin
cd /usr/local/resin/conf
cp host.conf /backup/resin_host.conf
if used Java Support, and use tomcat
cd /var/tomcat4/conf
cp server.xml /backup/server.xml
cd /www/prima/htdocs/common
cp PUB.Config.inc /backup/PUB.Config.inc
cd /www/prima/htdocs/apps/phpMyAdmin
cp config.inc.php /backup/config.inc.php
=============================================================================================================
on New server:
ensure all backups are copied from Old server to New server
assume backup files put in /backup
0. stop services:
/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/mysqld stop
/etc/init.d/acald stop
1. restore web
cd /www
tar zxpf /backup/users.tar.gz
2. restore mail
cd /var
tar zxpf /backup/vmail.tar.gz
3. restore dns
cd /var
tar zxpf /backup/named.tar.gz
4. restore mysql
cd /var/lib
tar zxpf /backup/mysql.tar.gz
5. restore GenComSite
cd /www/prima/htdocs/apps/GenComSite
tar zxpf /backup/GenComSite.tar.gz
6. restore configs
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 .
if used Java Support, and use resin
cd /usr/local/resin/conf
cp /backup/resin_host.conf ./host.conf
if used Java Support, and use tomcat
cd /var/tomcat4/conf
cp /backup/server.xml ./server.xml
cd /www/prima/htdocs/common
cp /backup/PUB.Config.inc .
cd /www/prima/htdocs/apps/phpMyAdmin
cp /backup/config.inc.php .
7. sync sys user info
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. sync vmail user info
sh convert_vmail_id.sh
9. start services:
/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/mysqld start
/etc/init.d/acald start
if used Java Support, and use resin
/etc/init.d/resin start
if used Java Support, and use tomcat
/etc/init.d/tomcat4 start
Over.
Appendix 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."
vi全屏幕编辑器
vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode):
command方式:
任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入都引起立即反映
insert方式:
任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,insert方式下按ESC,可跳回command方式。
escape方式:
以“:”或者“/”为前导的指令,出现在屏幕的最下一行,任何输入都被当
成特别指令。
进入vi(在系统提示符下面输入以下指令):
vi 进入vi而不读入任何文件
vi filename 进入vi并读入指定名称的文件(新、旧文件均可)。
vi +n filename 进入vi并且由文件的第几行开始。
vi +filename 进入vi并且由文件的最后一行开始。
vi + /word filename 进入vi并且由文件的word这个字开始。
vi filename(s) 进入vi并且将各指定文件列入名单内,第一个文件先读入。
vedit 进入vi并且在输入方式时会在状态行显示“INSERT MODE"。
编辑数个文件(利用vi filename(s))进入vi后)
:args 显示编辑名单中的各个文件名
:n 读入编辑名单中的下一个文件
:rew 读入编辑名单中的第一个文件
:e# 读入编辑名单内的前一个文件
:e file 读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以: w 存档。
:e! file 强迫读入另一个文件进入vi,原文件不作存档动作。
存储及退出vi
:w filename 存入指定文件,但未退出vi(若未指定文件名则为当前工作的文件名)。
:wq 或者 或者zz 存文件,并且退出vi.
:q 不作任何修改并退出vi。
:q! 放弃任何修改并退出vi。
:!command 暂时退出vi并执行shell指令,执行完毕后再回到vi。
:sh 暂时退出vi到系统下,结束时按Ctrl + d则回到vi。
加数据指令
i 在关标位置开始插入字符,结束时候按ESC键。
I 在光标所在行的最前面开始加字,结束时按ESC键。
a 在光标位置后开始加字,结束时按ESC键。
A 在光标所在行的最后面开始加字,结束时按ESC键。
o 在光标下加一空白行并开始加字,结束时按ESC键。
O 在光标上加一空白行并开始加字,结束时按ESC键。
!command 执行shell指令,并把结果加在光标所在行的下一行。
删除指令
nx 删除由光标位置起始的n个字符(含光标位置,按一个x表示删除光标所在的字符)
nX 删除由光标位置起始的n个字符(不含光标位置)。
ndw 删除光标位置其实的n个字符组(word)。
d0 将行的开始到光标位置的字符全部删除。
d$ 或D 将光标位置起始到行尾的字符全部删除。
ndd 将光标位置起始的n行(整行)删除(dd表示删除光标所在行)。
:start,endd 删除文件的第start到end行。
关标移动
0 移到一行的开始
$ 移到一行的最后
[ 移到文件开始位置
] 移到文件结束位置
nh 往左移n位
nl或者spacebar 往右移n位
nk 向上移n行
n+ 向上移n行,光标在该行的起始
ni 向下移n行
n- 向下移n行,光标在该行的起始
H 移到屏幕的左上角
M 移到屏幕的中间行开头
L 移到屏幕的最后一行
G 移到文件的最后一行
nG或者:n 移到文件的第n行
nw 右移n个字组,标点符号属于字组
nW 右移n个字组,标点符号不属于字组
nb 左移n个字组,标点符号属于字组
nB 左移n个字组,标点符号不属于字组
Ctrl + u 屏幕上卷半个菜单
Ctrl + d 屏幕下卷半个菜单
Ctrl + b 屏幕上卷一个菜单
Ctrl + F 屏幕下卷一个菜单
修改指令
r 修改光标文件的字符
R 从光标位置开始修改,结束时按ESC键
new 更改n组字符,结束时按ESC键
ncc 从光标所在位置开始更改n行,结束时按ESC键
重排各行长度
i 并按Enter将该行由光标所在处断开,并进入insert方式
J 把下一行的数据连接到本行之后
寻找指令
/text 从光标位置往下找字串text
?text 从光标位置往上找字串text
n 继续找下一个字串(在输入上面的寻找指令之后使用)
寻找并且取代指令
:getxt1/s/ /text2/options 将各行的text1替换为text2
option=g表示文件中所有的text1均被取代,若未输入任何option,则只有 各行中的第一个出现的text1被取代
option=go 在屏幕显示各取代的行
option=gc 在每个字串取代之前要求确认
Start,endgtext1/s/ / text2/options 同上,只寻找并取代第start~end行。
或:Start,ends/text1/text2/options
复制及移动文件
:first,last co dest 将first 到last行的数据复制到目标行(dest)下面
:Start,end m dest 将start 到 end行的数据移动到目标行(dest)下。
:r filename 将指定文件的内容读入光标所在行下。
nY 将光标所在位置开始的n行数据暂存
p 复制暂存数据在光标的下一行
P 复制暂存数据在光标的上一行
其他命令
. 重复前一指令
u 取消前一指令
Ctrl + l 刷新屏幕显示
:set number 显示文件的行号,但不会存文件
:set nonumber 解除行号显示
:set ai 设置每行起始位置(以光标当前位置为起始)
:set noai 取消行起始位置设定
:f 或<Ctrl> + g 告诉用户有关现行编辑文件的数据。
要发现系统down机的原因可以首先检查系统日志/var/log/messages,看里面有没有什
么特殊纪录,尤其是有关kernel的。
另外可以用sar命令看系统前一段时间的运行记录。
sar
显示cpu使用情况统计
sar -b
显示文件系统IO统计
sar -c
显示进�
��创建统计
sar -n FULL
显示网络设备通信统计
sar -r
显示内存使用统计
sar -A
显示所有记录的统计信息。
从sar记录中可以看到down机前系统活动的情况,继而可以判断是那里引起的问题。
MyCgiwrap-prima说明
1. 概述
原来版本中,对CGI资源的限制是固化在程序里的,而且是全局的,不同站点无法设置不同的资源限制值。
从1.0.14开始,通过检测环境变量的方式,可以打开/关闭CGI资源限制,以及详细设定各项资源限制的数值。
并且,可以通过另一个环境变量,限制一个最高系统负载,当负载达到这一数值时,拒绝任何CGI程序的运行,
这样可以防止CGI程序拖垮服务器。
另外,添加了CGI程序运行和资源使用的Log功能。
2. 如何设置环境变量
如果Apache配置中打开了mod_setenv,可以用SetEnv Var Value语句设置环境变量。
VirtualHost中设置的
环境变量覆盖全局环境变量,如:
SetEnv CGI_RLIMIT_CPU 30 # 全局设为限制CPU使用为30秒
<VirtualHost xxx>
…
SetEnv CGI_RLIMIT_CPU 60 # 该站点设为限制CPU使用为60秒
…
</VirtualHost>
<VirtualHost xxx>
…
SetEnv CGI_RLIMIT_CPU -1 # 该站点不限制CPU使用
…
</VirtualHost>
默认情况下,mod_setenv是加载的。
Apache的配置文件在/usr/prima/apache_ssl/conf/httpd.conf
httpd.conf是系统全局的配置,一般情况下不用更改。
httpd.conf包含了/usr/prima/etc/httpd/site.conf,site.conf放的主要是跟虚拟主机有关的全局设置,特殊站点等,
是在系统初始化时生成的;
site.conf包含了/usr/prima/etc/httpd/virtual.conf,virtual.conf放的是用户站点配置。
httpd.conf
site.conf
virtual.conf
如果“对某个站点进行单独设置”,直接修改/usr/prima/etc/httpd/virtual.conf 里相关的站点配置即可
完成设置后要重起apache。
3. CGI资源限制环境变量
CGI_RLIMIT_INFINITY 关闭资源限制, 缺省为打开。 ( eg.: SetEnv CGI_RLIMIT_INFINITY 1 )
资源限制详细项目:
CGI_RLIMIT_CPU CPU time in seconds, 15, set to -1 means no limit
CGI_RLIMIT_VMEM total virtual memory in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_FSIZE Maximum filesize in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_DATA max data size in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_STACK max stack size in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_AS address space (virtual memory) limit in bytes, 10000000, set to -1 means no limit
CGI_RLIMIT_CORE max core file size in bytes, 0, set to -1 means no limit
CGI_RLIMIT_RSS max resident set size in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_NPROC max number of processes in bytes, 16, set to -1 means no limit
CGI_RLIMIT_NOFILE max number of open files in bytes, 32, set to -1 means no limit
CGI_RLIMIT_MEMLOCK max locked-in-memory address space in bytes, 1000000, set to -1 means no limit
一般而言,比较重要的是CPU时间、进程数和打开文件数,CGI_RLIMIT_DATA和CGI_RLIMIT_STACK影响的是程序占用的内存数据区和栈区,
如果使用内存比较大,可以考虑增加这2个限制,不过,一般情况下,一项一项的调整比较麻烦,因为程序在动态运行中,占用的资源
也不固定,如果站点有特殊需要,可以简单地设置CGI_RLIMIT_INFINITY。
4. 检查最高负载
CGI_CHECK_MAX_LOAD 检查最高允许的服务器负载,如果当前负载超过最高负载,打印出“服务器负载过高”
例子:
SetEnv CGI_CHECK_MAX_LOAD 10
5. 记录CGI执行和资源使用情况
可以记录CGI执行和资源使用情况。日志文件位置:/var/log/httpd/cgiwrap.log
此功能缺省为关闭状态,使用以下环境变量打开此功能
CGI_USE_LOG cgi execution and usage log, default off, /var/log/httpd/cgiwrap.log
例子:
SetEnv CGI_USE_LOG 1
日志项目:
user_jSe04TQl phpinfo.php <NULL> 192.168.0.60 <NULL> status=0 wtime=’0s’ utime=’0s 40000us’ stime=’0s 0us’ Wed Oct 23 12:36:08 2002
wtime: 程序运行总时间
utime: CPU时间(用户模式)
stime: CPU时间(系统模式)
6. Web界面
目前还无法通过Web管理界面进行资源限制的调整,只能手动编辑Apache配置文件,当通过主控界面对进行过手动修改的站点进行Web站点功能修改等操作时,
系统会删除手动设置;
只有在对站点进行WebSite功能修改时,才可能删除手动配置,这包括:Web站点管理(打开关闭CGI、Frontpage、修改带宽限制…)、站点方案升级。
修改FTP密码和WebSite管理没关系,不会影响。需要注意的是,用户通过Web站点管理打开关闭Frontpage、添加别名时有可能会删除手动配置。
Appendix mycgiwrap-prima 1.0.14新增环境变量:
CGI_RLIMIT_INFINITY 关闭资源限制, 缺省为打开。 ( eg.: SetEnv CGI_RLIMIT_INFINITY 1 )
CGI_RLIMIT_CPU CPU time in seconds, 15, set to -1 means no limit
CGI_RLIMIT_VMEM total virtual memory in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_FSIZE Maximum filesize in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_DATA max data size in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_STACK max stack size in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_AS &n
bsp; address space (virtual memory) limit in bytes, 10000000, set to -1 means no limit
CGI_RLIMIT_CORE max core file size in bytes, 0, set to -1 means no limit
CGI_RLIMIT_RSS max resident set size in bytes, 3000000, set to -1 means no limit
CGI_RLIMIT_NPROC max number of processes in bytes, 16, set to -1 means no limit
CGI_RLIMIT_NOFILE max number of open files in bytes, 32, set to -1 means no limit
CGI_RLIMIT_MEMLOCK max locked-in-memory address space in bytes, 1000000, set to -1 means no limit
CGI_CHECK_MAX_LOAD 检查最高允许的服务器负载,如果当前负载超过最高负载,打印出“服务器负载过高”
CGI_USE_LOG cgi execution and usage log, default off, /var/log/httpd/cgiwrap.log