存档

2013年3月 的存档

使用htaccess实现域名跳转

2013年3月31日 没有评论

要使用域名的统一,即使得vps12.com转向www.vps12.com,有很多办法,听说对于seo也有些好处!

1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^vps12.com [NC]
RewriteRule ^(.*)$ http://www.vps12.com/$1 [L,R=301]

还可以利用重定向功能实现url的跳转,例如:

1
2
3
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.abc.com [NC]
RewriteRule ^(.*)$ http://www.vps12.com/$1 [L,R=301]

网页跳转代码大全

2013年3月29日 没有评论
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
------------------------------------------------------------------------------
不隐藏转向之后的地址 代码一
------------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title></title>
</head>
<body>
<form name=loading>
<P align=center><FONT face=Arial color=#0066ff size=2>loading...</FONT> <INPUT
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bolder; PADDING-BOTTOM: 0px; COLOR: #0066ff; BORDER-TOP-style: none; PADDING-TOP: 0px; FONT-FAMILY: Arial; BORDER-RIGHT-style: none; BORDER-LEFT-style: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-style: none"
size=46 name=chart> <BR><INPUT
style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; COLOR: #0066ff; BORDER-BOTTOM: medium none; TEXT-ALIGN: center"
size=47 name=percent>
<SCRIPT>
var bar=0
var line="||"
var amount="||"
count()
function count(){
bar=bar+2
amount =amount + line
document.loading.chart.value=amount
document.loading.percent.value=bar+"%"
if (bar<99)
{setTimeout("count()",100);}
else
{window.location = "将这里改成要转入的网址";}
}</SCRIPT>
</P></form>
</body>
</html>
-------------------------------------------------------------------------------
 
不隐藏转向之后的地址 代码二
-------------------------------------------------------------------------------
<html>
<body>
<script language="javascript">
<!--
function goToURL() { //v2.0
for (var i=0; i< (goToURL.arguments.length - 1); i+=2) //with arg pairs
eval(goToURL.arguments+".location='"+goToURL.arguments[i+1]+"'");
document.returnvalue = false;
}
//-->
</script>
<body bgcolor="#FFFFFF" onLoad="goToURL('parent','将这里改成要转入的网址');return document.returnvalue">
</body>
</html>
-
------------------------------------------------------------------------------
 
不隐藏转向之后的地址 代码三
-------------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title></title>
</head>
<SCRIPT LANGUAGE="javascript">
<!-- Start Code
var ver = navigator.appVersion;
if (ver.indexOf("MSIE") != -1)
{
window.location.href="将这里改成要转入的网址"
}else
window.location.href="将这里改成要转入的网址"
// End Code -->
</SCRIPT>
</html>
-------------------------------------------------------------------------------
 
不隐藏转向之后的地址 代码四
-------------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title></title>
</head>
<body>
<meta http-equiv="refresh" content="0.1;url=将这里改成要转入的网址">
</body>
</html>
-------------------------------------------------------------------------------
 
可隐藏转向之后的地址
-------------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title></title>
</head>
<frameset framespacing="0" border="0" rows="0" frameborder="0">
<frame name="main" src="将这里改成要转入的网址" scrolling="auto" noresize>
</frameset>
</html>
 
透明Flash的设置
++++++++++++++++++++++++++++++++++++++++++++++++++
主要是在Flash代码段中插入这一语句:<param name=wmode value=transparent>,请看以下实例:
 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="100%" height="100%">
<param name="movie" value="../images/hudie.swf">
<param name="quality" value="high">
<param name=wmode value=transparent> <!--这个代码表示背景透明--!>
<embed src="../images/hudie.swf" width="100%" height="100%" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>
</object>
分类: 编程实践 标签: ,

什么是iis连接数

2013年3月29日 没有评论

iis连接数指并发连接数,什么意思呢?

要分几种情况:(以100m空间50人在线为例)
a 用户单点下载你的文件,结束后正常断开,这些连接是按照瞬间计算的,就是说你50人的网站瞬间可以接受同时50个点下载
b 用户打开你的页面,就算停留在页面没有对服务器发出任何请求,那么在用户打开一面以后的20分钟内也都要算一个在线,就是说你50人的网站

20分钟内可以接受不同用户打开50个页面
c 上面b的情况用户继续打开同一个网站的其他页面,那么在线人数按照用户最后一次点击(发出请求)以后的20分钟计算,在这个20分钟内不管用

户怎么点击(包括新窗口打开)都还是一人在线。
d 当你的页面内存在框架(iframe),那么每多一个框架就要多一倍的在线!因为这相当于用户同一时间向服务器请求了多个页面。
e 当用户打开页面然后正常关闭浏览器,用户的在线人数也会马上清除。

然后了解什么是论坛在线人数。
论坛在线只是计算一定时间内的活动用户数。
这里的时间用户可以自己设定,动网论坛默认为40分钟的相对准确值。

根据上面的说明,显然论坛在线和iis连接数的概念不同
为什么会出现iis连接数和论坛在线不符合的情况?
现具体分析如下:

1:您使用了插件版论坛或者美化版论坛!
现在的插件很垃圾,不但占服务器资源,而且会使论坛运行变慢(没有插件可以快一倍以上),同时很占在线人数,有的插件调用很多框架,少则2、3个,多则4、5个! 甚至有在线播放音乐,这样一个人在线就相当与很多人在线!而美化版论坛因为使用大量的图片,也同样比标准版论坛占用iis数量大。

2:您的网站是主页+论坛的形式!
这样主页和论坛要争夺你的在线人数!

3:你的论坛内部有播放器!
一个人在线,然后他在线播放音乐,就占二个人在线!

4:你的论坛内部存在框架形式的网页!
每一个框架,就多一倍的在线!

5:你的论坛设置在线时间过小!
动网默认为40分钟,因为论坛在线只是计算一定时间内的活动用户数,当您设定的时间较小的时候,看起来论坛在线的人数就自然少了!

6:你的空间存在多个论坛!
有的客户在一个空间里上传多个论坛,如bbs bbs1 bbs2 等等 等等
毫无疑问,这样个论坛也是要争夺再线人数的!

7:你的论坛图片等文件被人盗链!
比如:你的论坛有张图片文件,被粘贴(注意是粘贴不是上传)到别的论坛!
别的论坛的用户在浏览该文件的时候也算一个在线人数!
尤其是logo连接的时候注意,一定要对方把您的logo上传到他的空间!

8:你的空间上放有下载文件!
如果用户用网络蚂蚁类的软件,每一个线程就表示一个在线,非常厉害!

KVM快照管理(转)

2013年3月25日 没有评论

######## 注意:对KVM快照进行管理需要在关机机状态下 ###########
说明:
kvm默认的文件格式是raw,也就是使用文件来模拟实际的硬盘(当然也可以使用一块真实的硬盘或一个分区),不过raw格式只支持内存快照(就是启动的时候加-snapshot,所有更改都写到内存),重启之后就没了。raw格式不支持磁盘快照,因此要使用qcow或qcow2文件格式。

1. 查看镜像文件格式
[root@PLASPACSHCN14 images]# qemu-img info EBS-6.img
image: EBS-6.img
file format: raw
virtual size: 300G (322122547200 bytes)
disk size: 300G
说明: 现在的文件格式是raw,需要转换成qcow2格式。

2. 转换文件格式(把raw转换成qcow2格式)
[root@PLASPACSHCN14 images]# cd /var/lib/libvirt/images
[root@PLASPACSHCN14 images]# qemu-img convert -f raw -O qcow2 EBS-6.img EBS-6_qcow2.img

3. 查看当前目录下的文件:
[root@PLASPACSHCN14 images]# ls
EBS-3.img EBS-6.img EBS-6_qcow2.img EBS-7.img
[root@PLASPACSHCN14 images]# du -sh *
301G EBS-3.img
301G EBS-6.img
2.5G EBS-6_qcow2.img
2.5G EBS-6-qcow2.img
401G EBS-7.img
说明:可见,多出来了个文件EBS-6_qcow2.img。

4. 为虚拟机创建快照:
4.1 一定不要开机快照!
首先需要关闭虚拟机,然后按照下面的命令进行快照。最后恢复快照的时候先关机在恢复。
[root@PLASPACSHCN14 images]# qemu-img snapshot -c snapshot01 EBS-6_qcow2.img
说明: qemu-img snapshot -c snapshot01 EBS-6_qcow2.img
命令 快照参数 参数 快照的命令 镜像的名字,(为那个镜像创建的快照)

5. 列出镜像的所有快照
[root@PLASPACSHCN14 images]# qemu-img snapshot -l EBS-6_qcow2.img
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 snapshot01 0 2012-12-27 14:53:07 00:00:00.000

6. 恢复快照:
[root@PLASPACSHCN14 images]# qemu-img snapshot -a snapshot01 EBS-6_qcow2.img
说明:qemu-img snapshot -a snapshot01 EBS-6_qcow2.img
命令 快照命令 快照参数 快照名称 镜像名称

7. 删除快照:
[root@PLASPACSHCN14 images]# qemu-img snapshot -d snapshot01 EBS-6_qcow2.img
说明: qemu-img snapshot -d snapshot01 EBS-6_qcow2.img
命令 命令参数 命令参数 快照名称 镜像名称
8. 后记:
使用KVM时很复杂的,还是选择Vmware能方便一些,对于快照这块,需要提前创建qcow格式的镜像文件:qemu-img create -f qcow2 vdisk.img 50G,然后再进入图形化进行系统安装。(快照最好使用virsh创建快照,qemu-img快照出来的文件只是0KB,所以建议使用virsh快照。)

kvm快照应用 (转载)

kvm也具有快速恢复的方法,前提是必须处于关机状态才可以执行,否则会出现各种莫名其妙的问题

创建镜像:
qemu-img snapshot -c initial smokeping_falcon_test0917.qcow2
恢复镜像:
qemu-img snapshot -a initial smokeping_falcon_test0917.qcow2
删除镜像
qemu-img snapshot -d initial smokeping_falcon_test0917.qcow2
状态查看
qemu-img snapshot -l smokeping_falcon_test0917.qcow2

创建前的大小
[root@smokeping]# ll
total 7578488
-rw-r–r– 1 root root 171825168384 Sep 17 17:01 smokeping_falcon_test0917.xml
-rw-r–r– 1 root root 171825168384 Sep 17 16:01 smokeping_falcon_test_187.qcow2
-rw-r–r– 1 root root 171825168384 Sep 6 11:14 smokeping_falcon_test.qcow2
以下是创建后的文件
[root@smokeping]# ll
total 7603284
-rw-r–r– 1 qemu qemu 171850530816 Sep 17 17:22 smokeping_falcon_test0917.qcow2
-rw-r–r– 1 root root 171825168384 Sep 17 16:01 smokeping_falcon_test_187.qcow2
-rw-r–r– 1 root root 171825168384 Sep 6 11:14 smokeping_falcon_test.qcow2

查看镜像方法1
[root@smokeping]# qemu-img info smokeping_falcon_test0917.qcow2
image: smokeping_falcon_test0917.qcow2
file format: qcow2
virtual size: 160G (171798691840 bytes)
disk size: 2.2G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 initial 0 2012-09-17 17:08:49 00:00:00.000
查看镜像方法2
[root@smokeping]# qemu-img snapshot -l smokeping_falcon_test0917.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 initial 0 2012-09-17 17:08:49 00:00:00.000

利用这个镜像,可以迅速还原服务器状态,使用空间也不大。

实测中,若虚拟机为启动状态制作快照,恢复后会无法载入系统,关闭服务器,再次启动,服务器直接崩溃。

scp断点续传和wget自动断点续传的方法

2013年3月23日 没有评论

1. scp断点续传
scp一旦出错中断就只能重新开始,不过可以利用rsync实现scp的断点续传
1、在~/.bashrc中加入一个alias:
$vim ~/.bashrc
alias rscp=’rsync -v -P -e ssh’
2、重新载入.bashrc配置
$source ~/.bashrc

2. wget自动断点续传的方法
有时候我们使用wget下载东西被迫打断, 比如网络故障, 终端意外断开, 忘了加”&”放入该台等等.
沉稳的人或许会想到重新开启wget, 并使用 -c断点续传, 可是有时候, 因为N个g的东西突然断了, 一冲动就晕了, 就纠结了, 可能就会就重新跑wget了, 甚至截止到本文还有人不知道-c.
那么为了杯具不再发生, 我们可以让wget每次运行的时候自动加上 -c参数, 那样就万事大吉了嘛. 方法如下:
在家目录下新建文件”.wgetrc”, 内容如下:
continue = on
写入wget.sh后,可以这样同时下载多个文件:
1.nohup wget http://www.vps12.com/software/db_must.tar.gz &
2.nohup wget http://www.vps12.com/software/root_must.tar.gz &
3.nohup wget http://www.vps12.com/software/webserver_must.tar.gz &
如果想不用IP,但有两个相同的域名,则需要配置/etc/hosts加和IP对应的域名,再Wget即可。
保存退出, 以后再使用wget就会自动断点续传了。

iis6的网站建设及权限设置

2013年3月22日 没有评论

1.建立网站

点击 开始 > 控制面板 > 管理工具 > Internet 信息服务(IIS)管理器,然后按照以下图片设置一步一步操作直到完成。

 

点击完成,完成建立网站的操作。

2.设置网站权限

右击网站 > 权限

点击高级

点击取消允许父项的继承权的勾,然后点击复制!

注意:选中权限项目里的都删除,只留下administrators 和system  然后再点击添加

然后点击高级

选中红色框中的IUSR_xxxx(后边部分会根据不同的主机是不一样,前面有包含IUSR_xx就可以)然后点击确定。

除了完全控制和遍历文件夹 / 运行文件之外,全部个勾上。然后点击确定。

添加的权限项目如图所示,然后勾上红色框中的用此显示的可以应用,然后确定。

点击确定就完成了网站权限的设置。

ps:如果网站是使用asp.net程序的用户需要添加以下权限或者按需求添加(network service、asp.net用户)

至此网站的建立就完成了。

利用Shell脚本来监控Linux系统的负载、CPU、内存、硬盘、用户登录数

2013年3月5日 没有评论

利用Shell脚本来监控Linux系统的负载、CPU、内存、硬盘、用户登录数。

这几天在学习研究shell脚本,写的一些系统负载、CPU、内存、硬盘、用户数监控脚本程序。在没有nagios监控的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统资源的使用情况。

一、编写linux系统告警邮件脚本

1
# vim /scripts/sys-warning.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash
#监控系统负载与CPU、内存、硬盘、登录用户数,超出警戒值则发邮件告警。
 
#提取本服务器的IP地址信息
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
 
# 1、监控系统负载的变化情况,超出时发邮件告警:
 
#抓取cpu的总核数
cpu_num=`grep -c 'model name' /proc/cpuinfo`
 
#抓取当前系统15分钟的平均负载值
load_15=`uptime | awk '{print $12}'`
 
#计算当前系统单个核心15分钟的平均负载值,结果小于1.0时前面个位数补0。
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`
 
#取上面平均负载值的个位整数
average_int=`echo $average_load | cut -f 1 -d "."`
 
#设置系统单个核心15分钟的平均负载的告警值为0.70(即使用超过70%的时候告警)。
load_warn=0.70
 
#当单个核心15分钟的平均负载值大于等于1.0(即个位整数大于0) ,直接发邮件告警;如果小于1.0则进行二次比较
if (($average_int > 0)); then
echo "$IP服务器15分钟的系统平均负载为$average_load,超过警戒值1.0,请立即处理!!!" | mutt -s "$IP 服务器系统负载严重告警!!!" test@126.com
else
 
#当前系统15分钟平均负载值与告警值进行比较(当大于告警值0.70时会返回1,小于时会返回0 )
load_now=`expr $average_load \> $load_warn`
 
#如果系统单个核心15分钟的平均负载值大于告警值0.70(返回值为1),则发邮件给管理员
if (($load_now == 1)); then
echo "$IP服务器15分钟的系统平均负载达到 $average_load,超过警戒值0.70,请及时处理。" | mutt -s "$IP 服务器系统负载告警" test@126.com
fi
 
fi
 
# 2、监控系统cpu的情况,当使用超过80%的时候发告警邮件:
 
#取当前空闲cpu百份比值(只取整数部分)
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`
 
#设置空闲cpu的告警值为20%,如果当前cpu使用超过80%(即剩余小于20%),立即发邮件告警
if (($cpu_idle < 20)); then
echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器CPU告警" test@126.com
fi
 
# 3、监控系统交换分区swap的情况,当使用超过80%的时候发告警邮件:
 
#系统分配的交换分区总量
swap_total=`free -m | grep Swap | awk '{print $2}'`
 
#当前剩余的交换分区free大小
swap_free=`free -m | grep Swap | awk '{print $4}'`
 
#当前已使用的交换分区used大小
swap_used=`free -m | grep Swap | awk '{print $3}'`
 
if (($swap_used != 0)); then
#如果交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0
swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`
 
#设置交换分区的告警值为20%(即使用超过80%的时候告警)。
swap_warn=0.20
 
#当前剩余交换分区百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 )
swap_now=`expr $swap_per \> $swap_warn`
 
#如果当前交换分区使用超过80%(即剩余小于20%,上面的返回值等于0),立即发邮件告警
if (($swap_now == 0)); then
echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器内存告警" test@126.com
fi
 
fi
 
# 4、监控系统硬盘根分区使用的情况,当使用超过80%的时候发告警邮件:
 
#取当前根分区(/dev/sda3)已用的百份比值(只取整数部分)
disk_sda3=`df -h | grep /dev/sda3 | awk '{print $5}' | cut -f 1 -d "%"`
 
#设置空闲硬盘容量的告警值为80%,如果当前硬盘使用超过80%,立即发邮件告警
if (($disk_sda3 > 80)); then
echo "$IP 服务器 /根分区 使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器硬盘告警" test@126.com
fi
 
#5、监控系统用户登录的情况,当用户数超过3个的时候发告警邮件:
 
#取当前用户登录数(只取数值部分)
users=`uptime | awk '{print $6}'`
 
#设置登录用户数的告警值为3个,如果当前用户数超过3个,立即发邮件告警
if (($users >= 3)); then
echo "$IP 服务器用户数已经达到$users个,请及时处理。" | mutt -s "$IP 服务器用户数告警" test@126.com
fi
1
# chmod a+x /scripts/sys-warning.sh

二、加入任务计划:每十分钟检测一次,有告警则立即发邮件(十分钟发一次)。

1
2
3
# crontab -e
*/10 * * * *  /scripts/sys-warning.sh 
# service crond restart

三、要实现服务器能够发邮件,须开启Sendmail服务或是安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具)

1、下载安装:http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0

1
2
3
4
5
# tar jxvf msmtp-1.4.16.tar.bz2
# cd msmtp-1.4.16
# ./configure --prefix=/usr/local/msmtp
# make
# make install

2、创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名test,密码123456)

1
2
3
4
5
6
7
8
9
10
# vim ~/.msmtprc
account default  
host 126.com
from test@126.com
auth login
user test
password 123456
logfile ~/.msmtp.log
# chmod 600  ~/.msmtprc
# touch ~/.msmtp.log

3、mutt安装配置:(一般linux下有默认安装mutt)

1
2
3
4
5
6
7
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="memory"
set from=test@126.com
set envelope_from=yes
set rfc2047_parameters=yes
set charset="utf-8"

4、邮件发送测试(-s邮件标题)   # echo “邮件内容123456″ | mutt -s “邮件标题测试邮件”   test@126.com