打造永不断线的个人服务器

  先别误会,我这里说的服务器,可不是现在炒得昏天黑地的那些个用来打游戏、共享上网、看DVD大片、控制家电的怪物“家庭服务器”,我这里说的是通过宽带架设在自己家里的服务器,功能主要还是同一般意义的互联网服务器一样,是对外提供某些网络服务,例如邮箱、FTP、WEB等等,因为架在家里所以就叫它家庭服务器了。更准确的名称或许应该是“使用动态公网IP地址架设的服务器”。

  众所周知,互联网服务器是需要绑定公网IP地址才能访问的,托管在电信机房的服务器都会绑定一个或者几个固定的公网IP地址,北京机房一般增加一个IP地址,收费300元左右。不过,除此之外,为了获得这个固定的IP地址,我们还要交每年几千元的托管费。而且服务器放在机房,诸多不便啊,半夜服务器死机了,小心翼翼打电话到机房,请管理员给重启一下,生怕打扰了人家的好梦,引得人家不耐烦,弄不好给咱可怜的服务器一拳咱也得挨着。如果连续重启还是死机,就惨了,天没亮就上路吧,去机房,到了机房,在拥挤狭窄的机柜走廊里,跪在地上拆箱子调试,那滋味可真是“往事不堪回首”啊。所以很早就有兄弟动脑子,把服务器架设在家里。在ISDN时代,就有很多这样的先行者,传说首富丁先生就是这样通过几条ISDN+N台486做起163邮局的,呵呵,当然都是传闻不足为信。

  要把服务器架设在家里,或者小公司的办公室里,就自然要说到动态主机软件了,也有人喜欢叫它动态域名解析服务,因为家里都是拨号上网(包括ADSL宽带),IP是动态变化的,所以必须借助动态主机客户端软件和相应的免费域名,才能让互联网上的人们浏览到家里的服务器,否则除非您家里有专线+固定IP,不过那样成本比托管低不了什么,不符合咱们广大穷得叮当响的DIYer们的基本利益,自然要摈弃。
提起动态主机,广大老鸟们自然一片嘘声,不就是花生壳吗?早玩腻了。呵呵,是啊,现在动态主机这玩意儿,确实不新鲜了,随随便便一个菜鸟,一条包月ADSL,一台半旧的电脑,搞定。速度还不错,独享512K啊,许多老鸟、菜鸟们都用它架网站、玩邮局,我的一个朋友甚至用它搞了一个即时通讯软件,好像QQ一样,引得好多朋友去抢注靓号,呵呵,有意思吧。

  在家里用动态IP架设服务器有不少好处,管理服务器更加自由,不需要象去机房维护那么麻烦,不用再听机房值班员冷冰冰的声音。

  不过凡事有利必然有弊,用动态IP架设服务器虽有种种好处,但是其弊端也是显而易见的,抛开带宽什么的不说,就说如何才能保持服务器不断线,一直对外提供持续不间断的稳定服务,就是一门学问。不信你问问老鸟们,估计各有心得和秘技,今天我就主要说说我是怎样用软硬件打摩我的服务器的,让它在家里也能对外提供基本上一直不间断的服务。

 

停电、死机,两大难题困扰动态IP服务器

  尽管设置动态域名的过程许多朋友都实践过,但是新鲜几天,也就扔在一边了,这样就不容易发现问题。可对于那些真的长期使用动态IP架设服务器的朋友来说,就会遭遇许多实际问题,例如,因为使用动态IP架设服务器,总是避免不了拨号上网这个步骤,有拨号就难免掉线,这是造成服务器断线(中断服务)的一个客观因素,无法绝对避免,还有其他一些因素,例如停电、死机、检修等等,有些问题在电信机房托管时也会遇到。所以,从历史学家的角度看,用动态IP架设服务器,断线是绝对的,不断线是相对的。我们所要做的工作就是如何才能尽量避免断线,断线之后如何尽快恢复连线。

  也许有的朋友会说,那还不简单,修改注册表,或者用软件设置成自动拨号,再安装好一个动态主机客户端软件不就行了?

  实际情况远不是那么简单,服务器架设在家里有两大难点需要克服:

  1、死机:服务器放在家里无法24小时有人值守(白天兄弟们还要出外上班挣口粮啊)。而电信机房是7×24服务,24小时全天候有人值守,出问题了,打电话过去随时有人帮你重启服务器。但是放在家里无法做到24小时有人值守。如果死机了,常常干着急没辙。什么时候回家再重启吧。

  2、停电:家里无法保证不停电,停电服务器就会关机。电信机房除了双路供电系统保证,还有巨大的蓄电池组做后备电源,所以停电造成关机的情况不多。可是在家里,就算你住别墅,偶尔的停电也是在所难免的,谁家没有遇到过停电呢?停电了服务器自然就关机了,什么远程管理软机对着已经关机的东西都是白搭。

  你的服务器可以用软件设置成自动拨号、断线自动重拨等等,可是你想想一旦软件死机了,还怎么重拨?一旦断电了,服务器关机了,还怎么重拨。这是很现实的问题,特别是对一般玩家用的最多的windows系统,软件没有响应、死机、极慢等问题不能不考虑。断电了,就更是一切结束,什么时候回家什么时候再开机吧。

  所以,要想把服务器架设在家里(或者公司的办公室里),就要想办法解决服务器在家的这些问题,只有解决了这些问题,我们的服务器才能像在电信托管一样,基本稳定在线(这里要说明一点,服务器托管在电信机房也不是绝对不断线啊,机房检修、病毒肆虐、交换机放炮、管理员发疯乱动线路等原因都可能导致断线,而且决不是个别现象,所以只能说是基本稳定在线,当然总体上来说还是比放在家里好多了,这要肯定)。

 

说说我的窍门,抛砖引玉。

  废话少说,我就以我架设的家用服务器为例来讲讲我是怎么费尽心机,保持服务器在线的。

  去年5月,搬家之后,我申请了包月120元的ADSL宽带,在上网同时,为了充分利用宽带,用一台旧电脑在家架设了一个服务器,配置为老赛扬433+两条SD133内存共256M+120G硬盘(2M缓存7200转/s)+杂牌250W电源,没有显示器、键盘、鼠标。通过一台家用宽带路由器接入ADSL大猫。一天到晚24小时开机,为许多朋友提供E-mail、FTP、存放网站等免费服务。我前不久写的那篇《绝对疯狂!1G容量的邮件服务器自己打造》文中提到的免费邮局,就是用的这台服务器,虽然东西旧了些,不过朋友们都用得很开心。为了让朋友们一直开心,多夸我两句,我费劲心机,维护好服务器,尽我所能保证服务器正常运转不断线。下面,我就把我维护这台无固定公网IP的家用服务器的一些小经验和窍门总结出来,供大家参考,只求抛砖引玉。

 

不断线窍门之一:使用宽带路由器。

  经过实验,我感觉,用电脑拨号上网的稳定性确实不如内置拨号功能的宽带路由器,用路由器之后,那感觉就好像使用的是一条不必拨号的专线,只要把电脑用网线插入路由器的网口,电脑就在线了,路由器可以24小时开机,就相当于一台用电脑做成的共享上网代理服务器,只不过比电脑代理服务器耗电小得多,维护也很简单,基本不用维护,开机就上网。一般在路由器最初设置的时候,在“PPP over Ethernet”选项设置上网密码的时候,可以顺手把“Auto-reconnect”之类的选项勾选上,下图就是我这台现在售价才200元左右的家用宽带路由器的设置界面。这台路由器内置四口交换机,可以直接带四台电脑上网,如果后面连上交换机,最多可以连200多台电脑上网,功能还是很超值的。

440){this.resized=true;this.style.width=440;}” resized=”true”>

  连好路由器,在服务器上安装了动态主机软件,要用那种能够捕捉路由器公网IP地址变化的软件和动态主机服务商,因为如果软件捕捉的是本机的IP,那么软件提交给动态主机服务商的就将是类似198.192.123.125之类的内部局域网IP,这样是不能让外界朋友通过这个IP访问服务器的。具体这一步的安装调试,现在许多朋友都掌握了,不明白的请看我另一篇文章《绝对疯狂!1G容量的邮件服务器自己打造》http://www.pconline.com.cn/server/apply/0408/444962.html,也可以在网上查找相关资料参考,很多,这里就不罗嗦了。

440){this.resized=true;this.style.width=440;}”>

  我已经通过动态主机服务商,申请了一个免费域名:http://vipemail.bjs.cn/ ,然后将一个国际顶级域名http://www.usacase.com/绑定在免费域名上,现在连接好电脑好路由器,安装好动态主机软件,输入帐号密码,很快,上海一个网友就报告,通过可以访问到我的网站了,我在这台服务器上安装了一个免费邮局服务器程序。每个访客都能立刻获得100M的不限制附件大小没有任何广告的邮箱。

 

不断线窍门之二:提高服务器安全性。

  现在虽然能够访问了,但是怎么才能保证朋友们日日夜夜不间断地享用免费邮箱等服务,我煞费苦心。
服务器连接到互联网上,供大家访问、上传文件、传输邮件,自然难免接触各种病毒、木马,甚至受到黑客的直接攻击,所以服务器一定要做好安全工作,才能保证尽量不因为病毒、木马、黑客攻击而导致服务中断。

  我这台服务器装的是windows2000高级服务器版,这是现在最常用的服务器操作系统,安装调试都相对简单。Windows2000由于出来很长时间了,在全世界应用都很广泛,因而也就不可避免地出现了许多针对windows2000的病毒、木马等,也是黑客攻击的重点,一台没有经过认真安全设置的windows2000服务器在黑客眼里漏洞百出千疮百孔不堪一击,病毒和黑客攻击往往利用系统的漏洞,微软每隔一段时间就会推出一些补丁,来修补这些漏洞,所以当我安装好windows2000高级服务器版之后,第一件事就是尽快为系统打补丁,安装好微软提供的各种补丁程序,其中最关键的是先打好冲击波补丁和震荡波补丁,因为这两种病毒现在流传很广,一旦染上发作了,不断重启,再想打什么补丁也来不及了(我知道还有办法,别多嘴),很麻烦,所以要尽快打好补丁。

  谁都知道通过一些人工设置可以封堵windows2000的一些漏洞,减少安全隐患,可惜这些设置对菜鸟来说,太复杂(老鸟不要笑,想想当年你入门时的糗样),一时半会儿记不住。其实笔者也一直记不全,但是懒人有懒办法,笔者找出一款小软件,可以点击几下鼠标就可以大体把服务器常见安全选项都设置好,下面就是通过软件为服务器做安全设置的过程:

  首先启动软件,点击漏洞扫描选项——开始扫描,这个系统漏洞扫描程序,可以检测你系统当前存在的安全漏洞隐患,为你指出问题所在,并且为你提供相应的补丁下载链接。只需几秒钟,问题就一目了然了,我的系统虽然打满了补丁,可是百密难免一疏,还是漏掉了最关键的冲击波补丁,而且系统还存在共享漏洞。立即下载冲击波补丁打好。至于系统默认共享漏洞,只需点击软件的系统漏洞修复选项,勾选“修复系统默认共享漏洞”,然后点击修复就可以了。

440){this.resized=true;this.style.width=440;}” resized=”true”>

440){this.resized=true;this.style.width=440;}” resized=”true”>

然后点击分别进入“安全限制”、“系统优化”选项里,这里有许多选项,可以根据需要勾选上,如果你实在难以取舍,就干脆直接点击“自动优化”选项,在下拉菜单里,选择“windows普通用户”,点击完成。如果你不是高手,轻易不要选择“高级用户”和“游戏用户”。关闭太多的服务器功能,封堵太多的选项,有时候会造成服务器莫名其妙的故障,例如,无法访问网页。

440){this.resized=true;this.style.width=440;}” resized=”true”>

440){this.resized=true;this.style.width=440;}” resized=”true”>

440){this.resized=true;this.style.width=440;}” resized=”true”>

  漏洞补上之后,最好再安装一个比较稳定的杀毒软件,例如,McAfee virusScan简体中文企业版试用,笔者发现这个杀毒软件占用资源少,和MDaemon邮件服务器软件配合得很密切,能随时监视邮件中含有的病毒,并及时清除,不失为一套很好的服务器实时监控杀毒软件。McAfee virusScan安装之后,有一个实时监控程序,可是按照访问扫描文件是否染毒,类似瑞星、金山毒霸的实时监控病毒防火墙程序,不过千万注意,并不是有了实时监控程序就高枕无忧了,正确的使用方法是,在夜深人静服务器负载比较小的时候,运行杀毒程序,把每个硬盘分区都仔细扫描杀毒一遍,因为还有许多病毒、木马隐藏在平时不怎么访问的文件里,只有这样才能把它们挖出来,此外还要注意经常更新杀毒软件的病毒库。

  最好不要在服务器上安装个人版的杀毒软件,更不要安装个人版的软件防火墙,那些东西是针对个人PC设计的,只要能挡住病毒和攻击就可以了,有时候会连正常的对服务器的访问都挡在外面,那样服务器就又要断线了。而且,个人版的杀毒软件和防火墙稳定性不如服务器版的杀毒软件,容易造成死机和软件冲突,要注意。

 

不断线窍门之三:自动登入系统,自动锁定系统。

  Windows2000服务器运行久了,就算不死机,速度也会越来越慢,程序运行也会渐渐显得不稳定,为了保持服务器的速度和稳定性,通过PCanywhere之类的方法远程重启一下服务器,是管理员经常的行为,有时候偶然发生软件冲突,或者系统温度过高,也会造成服务器自动重启,这是就会发生一个问题,造成重启后的服务器无法连上互联网继续提供服务。

  说来也好笑,这个问题是windows2000自身安全性造成的,估计微软的软件工程师设计软件的时候没有想到有一天这东西会用在遥远中国的一台没有固定公网IP地址的服务器上,所以当windows2000高级服务器重启系统或者开机后,系统会在进入桌面之前,会显示一个提示窗口,要求同时按下“Ctrl+Alt+Del”才能输入用户名和密码,输入用户名和密码之后,才能进入系统桌面。

  这就出现了一个问题,就是一旦服务器出现问题,远程重启系统之后,系统启动过程会停留在这个要求按下“Ctrl+Alt+Del”的地方,此时,动态主机软件还没有启动,服务器IP没有被提交到动态主机服务商那里,现在的远程管理是需要针对IP地址才能生效的,我们这时候不知道服务器现在的IP地址,所以也就无法通过远程管理连接到服务器,更无法同时按下“Ctrl+Alt+Del”然后输入用户名和密码,进入桌面启动动态主机客户端(有点晕了吧,这简直比鸡生蛋蛋生鸡还要复杂)。那么如何解决这个问题呢,其实很简单,我们就要想办法让服务器自己输入用户名和密码。许多朋友都知道通过修改注册表或者用某些软件设置可以达到这个目的。不过现在有一款更简便有效的小软件,可以轻松解决这个问题。

  下面就是这款小软件的界面,界面很简单直观,一看就会。先在“自动登陆系统”前面打勾,然后输入系统管理员的用户名和密码,点击保存。这个软件的作者想得很周到,当系统重启之后,进入了桌面,如果不锁定桌面,这时服务器好像一个敞开门的房间,很容易让黑客乘虚而入,所以在“进入系统后自动锁定计算机”前面也打勾,延时一般就选择默认的0秒就可以,也就是进入系统后立即锁定桌面,除非管理员通过远程管理输入“Ctrl+Alt+Del”后,输入密码才能进入桌面。这时桌面虽然锁定了,但是并不影响随windows启动的动态主机客户端软件启动,客户端会自己输入动态主机用户名和密码,于是,新的动态IP立即被提交给动态主机服务商,外界又能通过免费域名访问到服务器了。

440){this.resized=true;this.style.width=440;}” resized=”true”>

  这个可以让系统自动登陆的小软件还有一项简单实用的功能,就是定时重启服务器,大家都知道,window系统运行久了,难免速度变慢,出现错误,定时重启一下服务器,好处很多,一般放在电信机房的服务器,也要根据需要经常重启一下,让服务器恢复到比较好的状态里。我在“定时重启系统”前打勾,选定“特定时间重启”,我设定每周六凌晨三点,系统重启一次,我认为这个时段,一般访问量较小。最后点击保存,然后重启服务器,刚才的设置立即生效。当然,你也可以选择每隔××分钟重启一次服务器。一切简单明了,根本不用懂什么注册表,也不用使用什么复杂的软件,你说简单不简单?

 

不断线窍门之四:随时监测IIS状况,自动重启IIS。

  使用windows的用户,还经常遇到一个问题,就是为服务器提供web服务的IIS程序无响应,或者出错,导致服务中断,这时服务器还没有死机,只是IIS“死掉”了,怎么办?当然可以通过远程管理,人为重启IIS。不过,如果你恰好不在电脑旁边,或者无法上网,怎么办?我想到一个办法,可以让服务器自己经常检测IIS的运行状况,发现IIS“死掉”、“出错”的时候自动重启IIS,如果连续重启IIS几次,还是无法解决问题,就干脆自动重启服务器。方法很简单,也要用到一个小软件,请看下图:

  这是个和小的监控程序,国产软件,只能用于Win2000/XP,不能用于NT4。

  先将 HttpMon.exe 复制到硬盘上,并将其添加到Windows的任务计划中,设置为”计算机启动时运行”,以administrator 的权限运行。这样监控程序就会随windows系统一起启动。

  这个软件同刚才介绍的那个小软件一样,具有定时重启功能,可指定每隔几天重启一次计算机或是重启IIS。若是指定为0天时表示每天重启一次。不过我们主要用到的不是这个功能。我们主要用的是这个软件提供的“http监控”功能。

  1、首先用记事本,建立一个新文件,写上一个简单的代码,如<%response.write “OK”%>,保存为  state.asp,将来软件通过访问这个文件,可以检查IIS是否死掉。若要检查链接数据库是否正常还可以把代码写为:
<%
set db=CreateObject(“ADODB.Connection”)
db.open 数据库链接
db.close
%>
运行HttpMon.exe 点击”添加”按钮添加监控条件。
a)在”检查链接”里加上用来监控的页面 如 http://vipemail.bjs.cn/state.asp
b)在”检查频率”中可以指定多长时间检查一次,默认是20分钟
c)在返回信息中选择要检查的条件,有几种情况:
返回状态等于,返回状态值不等于,文件大小等于,小于,大于。
“返回状态值” 指IIS返回的客户端时的状态。
200 是正常
302 文件重定向
404 文件找不到
500 服务器内部错误
默认是:当返回状态不等于200时(表示IIS出错时)重起IIS
当上面情况出现时可做几个对应处理:

a)重启计算机 b)重启IIS c)关闭计算机 d)请求页面 “请求页面”可用于扩展程序功能,如通过请求一个程序页面 (http://vipemail.bjs.cn/sendmail.asp)发信给管理员。

440){this.resized=true;this.style.width=440;}”>

440){this.resized=true;this.style.width=440;}”>

  2、因为有时重启IIS不一定成功,所以当上面错误情况出现时,程序会自动缩短检查的隔时间,默认为5分钟。也可以自定义。当上面操作多次重试都不成功时,还可以设置对应的操作。例如:当重启了3次IIS后还是有错误,这时可以在后面设置为重启计算机。

  3、日志功能可以记录Http监控程序的工作情况,他可以记录什么时候检查过什么页面,什么时候出现了错误,对应操作是什么。

  怎么样,麻雀虽小五脏俱全,想得够周到吧?其实这个程序不仅可以用在家里的服务器上,对于托管在电信机房的固定IP地址的服务器,同样可以使用这个软件,可以减轻不少管理员的工作负担。
  设置好之后,今后如果想调整一些设置,还可以通过软件的“编辑”功能来修改,很方便。

 
不断线窍门之五:停电恢复之后自动开机,电话遥控RESET。

  现在我们要解决家庭服务器的最后两道难关——停电和死机!

  从我们第一天用电脑起,前辈们就反复提醒我们要提防——停电。一旦停电,写了一半的文章,编了一半的软件,立刻化为乌有,用电脑怕停电,用服务器同样怕停电,而且特别怕,尤其是我们这样把服务器架设在家里,出门之后,一旦停电,服务器立刻关机,随之一切服务立刻终止,远程管理软件也没用了,因为已经关机了,即使安装了带有远程唤醒功能的网卡,也没用,因为动态主机软件根本没启动,你根本不知道现在服务器网卡的IP地址,所以你无法通过网卡唤醒。你也不要奢望有人会帮你按一下power键开机,因为这不是在机房有人24小时值守啊。如果你是“单身大虾(光棍的别称)”恰好又出差在外,那么你就惨透了,什么时候回家,什么时候你的网站才能恢复访问,没辙。

  除了停电,死机也是个很麻烦的问题,如果服务器真的死机了,也和停电一样,什么远程管理软件也不起作用,前面那些安装在服务器上的自动重启的小软件也都随着服务器“死”了,不会发生作用了,这时如果旁边有人,只要轻轻按一下服务器的RESET键就一切OK,可惜,这时家里没人,干着急,干瞪眼。

  难道真的没有办法了吗?为停电和死机的问题,我也伤透了脑筋,目前总算找到一个不错的解决办法——电话唤醒伺服器。

  也许不少朋友在56Kmodem时代都听说过、试验过电话唤醒电脑,那时候这是modem的一项时髦的功能,不过实际上也不怎么好用,要配合主板设置等,常常出现一些莫名其妙的故障,所以周围真正使用的人并不多。不过这倒是给我一些启发,就是利用电话是不是可以控制服务器的开机、重启呢?

  用56K猫的唤醒方案当然不行,即便可以将因停电而关机的服务器唤醒(开机),但是对于死机就无效了,因为这时电脑并未关机,还在开机状态,怎么办呢?此时最好是按一下reset键,可惜56K“老猫”做不到。

  我知道也许通过制作某些控制电路可以解决这个问题,但我是个懒人,虽说喜欢DIY,可如果叫我设计电路,焊接元件,我可没有耐心,我喜欢简单实用的DIY方案,充分利用已有的软件和硬件资源,用最简单的办法达到目的,是我的一贯方针。这次我同样找到了一个简单的办法。

  我在市场上买到一个“小砖头”——千际牌电话控制伺服器(服务器专用),这是一款针对性很强的产品,专门针对使用动态主机软件架设服务器的用户而设计,从多方面考虑到用户的实际需求,可以远程通过电话对服务器发出命令,使服务器实现开机或者重启。该伺服器使用了现在流行的单片机技术。

  千际牌电话控制伺服器(服务器专用)在实际使用中,安装和操作都很简便,按照说明书将伺服器连接在服务器和电话之间,伺服器使用一台小功率12V直流电源供电,耗电量极小,伺服器的电源和服务器的电源线都接入同一个电源插座。连接好之后,认真检查无误。现在实验一下效果。

  1、停电自动恢复

  服务器运行时按下电源插座的开关,模拟突然停电状态。
  服务器立即关机,伺服器也断电停止工作。
  再次按下电源开关,恢复供电,伺服器立即工作,并自动启动服务器,不久服务器启动成功,动态主机客户端软件自动登陆成功,外界对服务器的访问随即恢复。

  2、死机电话Reset

  在服务器死机时,通过远程管理软件已经无法连接到服务器进行重启,这时候拨入电话,电话振铃6声之后,电话听筒里传来三声提示音,这是按下电话“0”键,伺服器开始动作,服务器立即被reset,不久以后,外界对服务器的访问再次恢复正常。

  3、电话开机

  在伺服器上有一个转换开关,可以自由选择是否“恢复供电时自动启动服务器”,如果选择否,则当停电后恢复供电时,伺服器不会自动启动服务器开机,而是要等待管理员拨入电话,振铃6次之后,听到3声提示音,这时按下电话“1”键,伺服器开始动作,服务器会被开机。这个功能适合那些不需要不间断开机的用户和需要远程开启服务器的用户。

  神奇吧,就这么一个小东西,使我们不再害怕动态主机的死敌——停电和死机。自从有了它,及时我在外地出差发现服务器没有反应了,一个电话过去,一切立即OK。爽啊。

  以上我说的这些只是我的一些小小经验,让广大老鸟们再次见笑了,我的目的是尽全力来避免架在家里的服务器断线,这里说的断线,是泛指服务器对外提供服务的中断,并不是通常我们所说的上网掉线。用了上面这些法子,我的服务器的断线率已经很低,接近电信托管水平(小编:删去自吹自擂的废话2K字),即使外出时发生服务器断线,也能通过打电话很快恢复。不过,如果你特别倒霉,你的服务器遇到的不是停电,也不是死机,而是跳闸、雷劈、水淹、火灾、台风、海啸、老婆摔服务器,那解决的办法也就只剩下一个了,就是自认倒霉,毕竟谋事在人,成事在天啊。是不是?谁让你不去电信机房托管的?害怕了?害怕了,明天就给机房打电话吧.

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

19 − 14 =