前阵子,在PhotonVPS上租的VPS到期了,当时图便宜,选用了基于OpenVZ的,结果这一年来,用得不甚舒坦。ssh连接上去,断断续续的的;OpenVPN装上去,为了nat之类的发了好久的ticket;博客打开的速度,也是老慢老慢的。趁着到期了,就琢磨着换成基于Xen的了。
在原来的机器上,大大小小的网站有10来个,每次需要增加新网站时,都是本着知根知底的态度,也没装个WebPanel,全是手工操作来增加Virtual Host,创建数据库,设置目录权限等。弄了几次终于累了。
Apache2的速度果然不是吹的,死慢,还巨吃内存。Word Press没搭几个,1G的峰值内存就全吃光了。就算照着网上的LAMP教程优化了一遍,也是没见起效。
Open VPN这玩意,既要有nat设备,还有设置iptables,更加有一堆证书。在我已知的任一平台上使用,都得额外安装软件,烦不胜烦。想想还是PPTP VPN好使,每个平台都默认支持,不用装其它软件,也没有证书之类的,很好操作。
基于以上几点,在迁移到Xen的过程中,做了如下改变:
Web服务器:Apache -> Nginx
网站部署:手动->使用自写脚本
VPN: OpenVPN -> PPTP
没变化 的也就php和mysql了。
在Apache下使用php基本上都是安装mod来达到支持php的,但使用nginx的时候,却没有这样的mod可以用,所以为了支持php,还需要安装一个php-fpm,在Ubuntu 10.04中,这个软件包名字叫php5-fpm。php5-fpm是一个服务,默认会监听在9000端口。在nginx的默认Virtual Host配置中,也有一段被注释掉的代码,包含有”location ~ \.php$”字样的。取消掉后重启就可以支持php了。
至于 PPTP,那就更简单了,aptitude安装好后,就直接可用了。只是默认是没有用户的,需要在/etc/ppp/chap-secrets里增加用户,并且密码是明文保存的。[2011-07-21更新] 漏了一步骤
iptables -t nat -A POSTROUTING -s 192.168.255.0/24 -o eth0 -j MASQUERADE
因为我在/etc/pptpd.conf里设置了remoteip值为192.168.255.100-238,所以iptables中192.168.255.0/24表示我这个remoteip的网段了。[2011-07-21更新完毕]
至于自写脚本,贴上来仅供参考:使用之前请先过目,知道每条命令在做什么。
#!/bin/sh USER=$1 SITENAME=$2 sample_conf() { echo "server { root /var/www/$SITENAME; index index.html index.htm index.php; access_log /access.log; error_log /error.log; server_name $SITENAME; location / { try_files \$uri \$uri/ /index.php?q=\$uri&\$args; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } }" } sample_conf $SITENAME > /etc/nginx/sites-available/$SITENAME ln -s /etc/nginx/sites-available/$SITENAME /etc/nginx/sites-enabled/$SITENAME mkdir /var/www/$SITENAME chmod o+t /var/www/$SITENAME ## create database DB_NAME=`echo $SITENAME | sed -e 's/\./_/g'` mysql -uroot -p --password=MYSQL_ROOT_PASSWD -e "create database $DB_NAME" mysql -uroot -p --password=MYSQL_ROOT_PASSWD -e "grant all privileges on $DB_NAME.* to '$USER'@'localhost' identified by ''" exit 0
使用该脚本前,需要先创建一个用户。这个脚本会使用自动为指定的域名创建一个Virtual Host配置,并且创建一个数据库,让该用户对其有所有操作权限。脚本使用格式:./script USER SITE_NAME,如:./new_site.sh tiger blog.tigerlee.me
人太懒了,都静不下心来把个教程写完整,我知道这是缺点,得改。