从 dreamhost 到 linode

2005年五月份,拿着七周年的折扣码在dreamhost上安家, 转眼就四年了。中间有过一些不愉快的经历,比如说可靠性,有一个9都很勉强了,偶尔“肥手指”还会在不通知你的情况下多扣你一年的费用。我要求也不高,多数时候就忍了,但上个月一次寻求dreamhost support的经历让我最终下决心离开它。 上个月有几天我在dreamhost上的几个网站频繁500,有一个彻底连不上了。发了support ticket,倒是很快得到答复,说我的网站占用CPU和内存太高,脚本进程就被监控程序杀掉了,然后热切的向我推荐他们的Dreamhost PS。我给他们看了看所有access.log的统计,一天也就三万多条记录,可error.log里却有一万八千多条记录,你们想推销VPS也不能靠这样的手段啊。他们看我不愿意升级,又说不出问题,就开始乱找原因,建议我封google和yahoo的robot,摘抄其中非常经典的一段: I checked the logs above and found that these sites are being accessed by search engine bots. For ‘xxx.com’ I found the following: 66 66.249.67.219 40 74.125.44.136 For ‘yyy.com’: 99 66.249.70.134 88 74.6.8.107 Keep in mind the numbers you see above and the count you produced is the number Read more about 从 dreamhost 到 linode[…]

关于搭建网站服务器的一些建议

经常有朋友来问我一些关于搭建网站服务器的经验,网上其实有不少这样的文章,不过我还是说一些我自己的建议,主要是软件方面的,适用于中小网站。 操作系统的选择 很多人选择操作系统很看重性能,不过要我说,主流发行版在性能、稳定性等等的问题上,差别不会太大。另外还有些爱感时髦的人总问我为什么不用ubuntu。ubuntu优点是不少,界面好看,安装软件方便,很适合做workstation。但是实际上,服务器是不需要界面的,上线后再安装软件的机会也不多。更需要关注的,可能是驱动兼容问题。尤其是服务器相关硬件的兼容性。没什么比装机器的时候发现硬件不兼容更让人郁闷的事情了。 在选择操作系统的问题上,我的建议是尽量使用大路货,RedHat, SUSE之类的都可以,最好是服务器版,版本新一些的,驱动支持相对丰富,能省不少事。 系统的配置 关于系统配置问题,我的建议不多,就一条,能不要的就不要,能关掉的service就关掉。有不少enterprise的service,看着挺吸引人的,但对你未必有用。services列表,最好从头到尾清一遍。尤其装的不是服务器版的时候,把那些workstation才需要的东西都关掉,什么gnome文件搜索服务,赶快关掉,不然死都不知道怎么死的。 软件的安装 安装软件,首先找官方支持的安装包,如果你已经选择了最大路的发行版,这个应该很好找。别上来就自己编译,RedHat、SUSE就是吃这口饭的,有些官方包中还带有针对自己系统的补丁,你很难比他们做的更好。关于在本机上编译就能运行更快的传说更是胡扯。只有三种情况下你需要自己编译: 找不到官方包。 有需求明确的补丁或者编译选项未包含在官方包中。 有需求明确的新版本,官方包还未提供。 除此之外的在安装服务器时的编译行为都只是安慰剂。你还是留着在自己的workstation上玩吧。 如果自己编译,要注意编译选项,别的不说,就说不要乱改–prefix。类Unix系统的目录结构有自己的convention,乱改–prefix很有可能破坏这种convention,需要到处修改缺省配置,会给你添很多麻烦,甚至碰到一些bug。 安全性 这个话题能写一本书。我这只讲一个原则,就是能关掉的端口就关掉。一个网站只需要打开两个端口,一个给http,一个给ssh。上线前用nmap扫一遍,看有没有漏开的端口。 ssh也不要用缺省端口,并且禁止密码登录,只打开PubKeyAuthentication。ssh是个很万能的东西,你可以通过它访问防火墙内的端口,上传文件,运行命令,干什么都够了。

如何为SUSE Linux Enterprise Server 10.0安装RAIDcore驱动

这两天碰到一个问题,就是在一台使用了TYAN S3970主板的服务器上安装SUSE Linux Enterprise Server 10.0,并支持RAID。TYAN好几款AMD方案的主板都选用了Broadcom的芯片组,如果希望支持RAID,都会碰到这个问题。 CIPRICO提供了一些Linux Distribution的驱动,有SuSE 10.0(kernel version 2.6.13-15.7)但没有SuSE Enterprise Server 10.0(kernel version 2.6.16.21-0.8)。经过几个小时的尝试并刻废了数张CDR后,终于安装成功。基本步骤如下: 编译驱动 1. 找一台机器,安装同一版本的SuSE ES 10.0,我需要安装的是i386版本,我用vmware把它装在了我的iMac上。 2. 安装必要的package,包括通用编译工具和kernel-source。 3. 准备好编译环境。你可能需要编辑至少两个版本的驱动,一个是针对2.6.16.21-0.8-default内核,为了安装程序能够发现你的raid;另一个针对2.6.16.21-0.8-smp或者2.6.16.21-0.8-bigsmp内核,是你的服务器最终安装的驱动。因此,在/lib/modules目录下,除了和你目前系统内核对应的目录外,还需要创建另一个。对我来说,我在iMac上安装的是2.6.16.21-0.8-default,我在/lib/modules目录下又创建了一个2.6.16.21-0.8-bigsmp,在这个目录下面建一个到相应目标文件的链接: cd /lib/modules sudo mkdir 2.6.16.21-0.8-bigsmp cd ./2.6.16.21-0.8-bigsmp sudo ln -s /usr/src/linux-2.6.16.21-0.8-obj/i386/bigsmp build 4. 下载bcraid driveer SDK。 curl http://kb.ciprico.com/raidcore/Downloads/V2.1/LIN-DRV-SDK_RC-210-2006044_3.tar tar xvf LIN-DRV-SDK_RC-210-2006044_3.tar 5. 首先,编译default kernel版本的驱动。因为我目前安装的就是default kernel,所以make的时候不需要加任何选项。否则需要加KVERS=2.6.16.21-0.8-default。 cd ./LIN-DRV-SDK/bcraid cp Makefile_2.6 Makefile Read more about 如何为SUSE Linux Enterprise Server 10.0安装RAIDcore驱动[…]

国产Linux企业的问题到底出在哪里

最近国产Linux/操作系统又变成热点,“至今国际正式发布的Linux内核文件中,尚没有中国人开发的一行代码。”这句话刺激了不少对国产Linux曾经报过希望的人。 可国产Linux的问题就在于没有为中国人民在Linux内核里加入一行代码么?如果国内Linux企业真的往Linux核心里check in了几千行代码,就可以心安理得了么? 开源/自由软件的特点使得软件的开发和商品化可以由不同的组织来完成,不贡献代码也可以制作发行版。但另一方面,所有商业公司对开源/自由软件的参与支持都是和自己利益挂钩的。Intel公司为Linux开发驱动程序或者参与gcc的开发一定不会去为AMD芯片做优化。RedHat供养Linux开发核心人员是为了加强自己对Linux的控制。Google供养Firefox核心开发人员是为了它的互联网蓝图。一旦这些利益不存在了,这种关系就会解除。AOL当年为什么解散Netscape,HP为什么解雇Keith Packard,Sun为什么在德国的OpenOffice裁员(Update:Sun对OpenOffice部门的裁员主要在爱尔兰,谢谢Hercule的提醒),就是这个道理。当RedHat宣布不再把重点放在Linux桌面系统后,其下的Gtk/Gnome部门的工程师心里一定在打鼓。 那么对于我们的Linux企业,他们需要做些什么?当然,如果能往Linux核心或者重要模块中check in代码甚至成为module owner是再好不过的事情。但作为一个企业,在你还没有能力或者没有足够的reputation来check in代码的时候,最起码你应该能够做好Linux商业化的工作,你们找到了除了靠政府支持以外的商业模式了么?你们能够满足哪种客户的商业需求?针对这些需求,你们需要对你们的Linux发行版做怎样的修改?如果现在又一味地开始追求往Linux核心提交代码,我相信,对于这样一个单纯目标,我们中国人民一定很快就能完成(人家还没毕业的学生都能做到的事情我们有什么不能做到的?),但是这样就国内Linux企业的问题就得到解决了么?