十月 2005


vhcs (virtual hosting control system) 是德国一家公司开发的虚拟主机控制平台。vhcs的特点:
1. 支持Linux 和 Freebsd(Freebsd 是在最新的 2.4.6版本才支持的,尚未完善)。
2. 遵循GNU  GPL, 开源并且免费,在他们的论坛能得到社区的技术支持。
3. 稳定而易用,支持多国语言(我向开发团队提供简体中文语言包)。

vhcs 支持多种linux发行版本,但是Debian才是它的最佳搭档,它的开发和测试平台是基于Debian Sarge的,下面是在Debian Sarge下的安装步骤。

在开始之前, 保证你使用的版本是Debian Sarge,网络正常并且拥有一个静态IP。
1. 更新Debian Sarge。
apt-get update; apt-get upgrade

2. 安装必要的软件。
apt-get install  ssh postfix proftpd-mysql courier-authdaemon courier-base \
         courier-imap courier-maildrop courier-pop  \
         perl-modules bind9 diff gzip iptables libmcrypt4 mysql-client \
         mysql-common   mysql-server patch php4 php4-mcrypt php4-mysql  \
         libsasl2-modules libsasl2 sasl2-bin apache2 apache2-common bzip2\
         libcrypt-blowfish-perl libcrypt-cbc-perl original-awk libterm-readpassword-perl \
         libmime-perl libnet-dns-perl libnet-netmask-perl libnet-perl \
       
php4-pear procmail tar original-awk libapache2-mod-php4
3. 下载并编译vhcs
     wget http://ovh.dl.sourceforge.net/sourceforge/vhcs/vhcs2.4.6.2.tar.bz2
     tar jxf vhcs2.4.6.2.tar.bz2
     cd vhcs2.4.6.2
     make install
     cd /tmp/vhcs2/
     cp -R etc /
     cp -R usr /
     cp -R var /
     chmod  -R 777 /var/www/vhcs2/gui/tools/webmail/database/

4. 修改mysql的root密码
 mysql -u root -p
    use mysql
    update user set password=password("new_pass") where user="root";
    flush privileges;

5. 安装 vhcs 2.4.6.2
(全文…)

最近部署了一台论坛服务器,我有些个人体会将其记下来。
一. 论坛的背景
     该论坛是一个大型的综合性动漫论坛,采用vbb 2.3.x,另外有大量自己写的hack,平时在线人数800左右(15分钟内数据),峰值在线人数超过1800,论坛的数据库约10G。为了提高性能,升级vbb是很好的方法,但是因为有大量改写的hack,想平滑升级几乎不可能,只好保留现状。

二.硬件的考虑
   
经过几方面考虑,我决定采用双xeon + 4G ram + 73G scsi硬盘的服务器,网络带宽是100M共享接入,平时论坛的带宽也就2-4M,所以带宽方面是足够的。   Web服务器最重要的就是IO性能,如果服务器开始使用swap,服务器的性能会大大下降,这次为其配置了4G ram,就算论坛的并发连接超过1500也不会使用到swap,有效的保证了服务器的性能。

三.软件设置
    Linux是php+mysql程序的最佳搭档。我个人最喜欢的就是Debian 操作系统,快速、稳定、安全,这次也就采用了Debian Sarge + PHP 4.3.10 + Mysql 4.1 + Apache 2.0.54 组合。 因为以PHP程序为主,所以Apache采用了 prefork mpm,这个mpm的特点就是稳定而快速,消耗的资源会比worker多一点,但物有所值。 ServerLimit 设为5000, maxclients 设为 1500,载入deflate压缩模块,其他的大家看情况再设置一下吧。 调整Linux的内核参数,打开 syncookie, 将用户的最大文件数量改为 65532。 修改Mysql的参数,将Maxconnections 改成 5000, 调整临时表的大小。 安装exim4,允许本地发信(论坛需要发确认信),smtp不接受外部连接。安装mrtg监控服务器流量,安装phpmyadmin方便管理数据库。 基本上,软件就设置完毕了。

论坛运行了20天,反应迅速,看来这个硬件和软件设置还是比较合适的。

前些日子已经听说过了google提供了免费的无线(wi-fi)安全连接(vpn)。大家可以在 http://wifi.google.com/download.html下载google的vpn软件。今天测试了一把,发现很有意思。
1. 软件的下载和安装很简单。软件的大小为750K,只支持win2k/xp,安装后双击就建立了一个 vpn连接。
2. vpn使用标准的pptp连接,验证方式 ms chap V2,mppe 128位加密,分配的是192.168开头的地址,实际的公网地址是 66.28 开头。
        IP Address. . . . . . . . . . . . : 192.168.211.16
        Subnet Mask . . . . . . . . . . . : 255.255.255.255
        Default Gateway . . . . . . . . . : 192.168.211.16
        DNS Servers . . . . . . . . . . . : 66.51.205.100
                                                        66.51.206.100
3. 因为数据是加密传输,并且出口是美国的ISP,这也意味着可以访问很多被国内block掉的网站,不过希望大家还是把握好自己,不要去访问xxx网站哦。
4. 访问速度一般,google当然要做带宽限制的,我觉得应该有128Kbit的带宽吧,实际带宽未曾进行测试。 访问Web基本足够,如果是图片很多的站点就比较慢了。

5. Google VPN 客户端其实只是帮你设置连接的,不用他们这个客户端也可以使用到Google VPN。 首先设置好一个vpn拨号连接,vpn服务器的地址是 vpn.google.com ,其他随意写。 访问 https://vpn.google.com/getpass/,会传回一个xml文件,里面包括了一个一次性的账号密码。拨号,将这个账号密码填进去就可以了。下次要用google vpn就得再次访问这个地址得到新的账号密码。这样其他操作系统的用户也可以用Google VPN了。
个人以为Google Secure Access (Beta) 可以为在公共场所上网的无线用户提供了更大的安全性。所有数据加密传输,别人也就无法监听到你的web密码了。

PS: 这篇文章就是我用Google VPN 拨号后撰写的.

    今晚回到家后,看到电信的缴费单,拆开一看,不由大乐:8.21-9.20  电话的费用是共29.x元,优惠5元,实交24.x元;ADSL的费用是月租200元(2M包月),优惠180元,实交20元。不知道广州电信的计费系统是不是出故障了呢,居然只收20大洋的ADSL上网费,值得庆贺啊~ 看看下个月还有没有这样的好运。
   我很愉快的回房间上网去了,刚打开QQ,就看到群里有人说我维护的一个网站上不去了,我打开这个网站的网址,确实很慢,再刷新一下,又拒绝连接了。 影魂在QQ上问我服务器出了啥问题,我还没答,就看到小开在群里发了张截图:
ddos

原来如此啊….  现在的小P孩真麻烦呢。
    我ssh到主机,发现主机反应速度很快,看一下cpu、内存和带宽资源,都很正常。 运行 netstat -an ,发现有很多syn连接,将连接结果 sort 一下,好多奇怪的IP呢,以 3,4,5之类打头的IP都有。考虑到服务器的资源很充足,连接不上很可能是对方用 syn flood将apache的连接数堵塞了。 知道了原因就好办, linux 下对付 syn flood 最好用的方法就是 syn cookie。切换到root后,执行echo 1 > /proc/sys/net/ipv4/tcp_syncookies
过了几分钟,服务器反应基本正常了。将 net/ipv4/tcp_syncookies=1 加入到 /etc/sysctl.conf ,重启后服务器也会打开syncookies。等了半个小时,服务器还是没有收到进一步的攻击,看来攻击者的能力和资源都有限,我也无需采取额外的防护方法。毕竟大部分的防范措施都有可能影响到正常的用户。
 

终于为WordPress换了一个编辑器,现在用的是 ChenPress ,一个基于FCKEditor的编辑器,不用再去写html语法,真是开心哪。

重装vhcs并将数据导过来真是一个苦力活。有几点需要记下来的。
1. 一不小心将 mysql 4.0 升级到 4.1,结果几乎所有的php 虚拟主机都出现下面的错误提示 Client does not support authentication protocol requested by server; consider upgrading MySQL client。 经过搜索,发现是mysql 4.0 和 4.1 的密码加密算法改变了。网上介绍的方法大都是一样的:

mysql> SET PASSWORD FOR
-> ’some_user’@’some_host’ = OLD_PASSWORD(‘newpwd’);



mysql> UPDATE mysql.user SET Password = OLD_PASSWORD(‘newpwd’)
-> WHERE Host = ’some_host’ AND User = ’some_user’;
mysql> FLUSH PRIVILEGES;
(全文…)