VPS迁移:从OpenVZ到Xen

前阵子,在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

人太懒了,都静不下心来把个教程写完整,我知道这是缺点,得改。

Google translate新发现

一朋友让我翻译一篇文章,文体像诗,长度短篇小说那种,翻译成英文,死活推脱不掉后,只好操起了Google translate。以前用它只是拿来翻译点单词或是短句,这次为了解脱,不求质量了。

前段时间也看到文章说Google tanslate改版了,最近一直没啥需求,也就没去折腾,今天正好趁此机会,试用了一把。把要翻译的文章复制到左边文本框,选择翻译的目标语言为English,点下translate,结果很快便出来了。 继续阅读“Google translate新发现”

搭建wordpress的一些分享

话说这个博客搭了也有半年了,虽然这半年来也没写下多少日志,但在使用过程中,还是会遇到一些问题,发现一些技巧,趁着今天有空,在此分享一下。

这些分享是按照时间顺序来排列的,不过这半年工作较辛苦,人都变得有些健忘了,尽力而为之。 继续阅读“搭建wordpress的一些分享”

拥有VPS之-清除木马

离上一节整整一个月了,我这才把下节给补起来。上节写完时感觉还有好多没说,可是等过了这么一段时间后,我连当时保存的现场证据都快找不到了。不管怎样,还是把第一次写的系列篇迅速地划个句号吧。

上次讲到发现了若干个木马根据地,但如果是用简单的’rm’命令,是根本不能将其删除的(什么?你是root?即便你是foot,你也无法将其踢掉!)。是的,root也不能。为啥呢?root在u*ix系统中不都是万能的么?要啥有啥,要没啥,啥就没。是的,可root也能给自己加个限制,用来防止自己的误操作。这要用到ext2/3文件系统的一个特性”file attribute”。

以前初中时,学到一招很管用的办法,不让别人把自己的文件无意中删除。当然,那是在DOS下。用”attrib +h filename”就能让文件隐藏了”,同理”attrib -h filename”就是将隐藏的重新显示出来。这么个特性,在linux中怎么会缺席呢?下面我简单介绍下今天要用到的两个工具:lsattr和chattr。

lsattr和chattr它们俩是linux系统下用于的控制ext2/3文件系统家族特殊属性的组件,并且已经成为了e2fsprogs包中的一部分了。它们可以用来显示或修改文件的一系列属性:文件访问时间、安全删除、不可删除、只可追加、同步更新等。更详细地移步维基百科词条chattr继续阅读“拥有VPS之-清除木马”

拥有VPS之-发现入侵

上周末才买入一台VPS,由于急着把blog迁移过来,所以装完系统后,就只顾着blog的事了,VPS安全方面的事情,本来打算在本周末来收拾一番的。没想到啊,没想到,万恶的资本主义国家,黑客也这么多,哥刚把blog搭好,你又来给哥捣乱了。

上午,正在彻erlang代码,zhoux在gtalk上和我说,他的账号不能通过ssh登录。于是乎,做为VPS的首席维护官,我立马试着去登录。提示输入密码后,很快就看到了$提示符,然后手指不由自主地做了个终端爱好者的习惯性动作-’ls’,可是’ls’并没有像往常一样显示我当前目录的内容,而是提示”/bin/ls: no such directory”,哥当时就震惊了。第一反应还以为是环境变量被人改了,’env’看了下,没有发现异常。然后想用’ps aux’查看到进程列表,结果哥再次震惊了,屏幕上提示”/bin/ps: no such directory”,再试’top’,还是”/usr/bin/top: no such directory”,我靠,你都把路径给提示出来了,却还告诉我没有这个路径,存心逗哥玩么。以前刚开始用linux时,还带着windows cmd的习惯,查看目录内容会用’dir’,结果发现也有效,然后哥又试着用了下’dir’,这下还好,能够看到目录内容了。 继续阅读“拥有VPS之-发现入侵”

越过长城

——当一个政权极力掩盖消息传递时,那它离灭亡已经不远了。

记得刚学会上网那会,是在高一,5块钱一小时,上得我割肉般疼。学着别人聊OICQ,号码完全是一次性的,即用即申,用完即扔。看网页也就去新浪,记得当时有个游侠部落,里面有“大话三国”的flash,除了聊天,就是看这种动画了。那时候,除了网络断线,服务器宕机,基本不会出现网页打不开的情况。

时过境迁,现在的机器性能好了,网速也快了,可是打不开的网站也一天比一天多了。古有焚书坑儒,今有防火长城。执政者,你们究竟在害怕什么?当焚书坑儒都未能让你们感到一点安宁时,你们就开始大兴网络文字狱了。Google搜索“胡萝卜,温度,习惯”等,HTTP连接都会被重置。如果说文字狱尚需要那些捕风捉影的人去费尽心思编造罪名,那你们完全是宁可错杀一千,不可放过一个了。 继续阅读“越过长城”

使用Google Talk Chatback

云风的blog时发现这么个玩意,挺新颖的,不仅可以显示GTalk的状态,还能直接发起对话。

想我也是个GTalk控,尽管一直都是用的皮筋儿(pidgin),从没用过官方的客户端,这还是得益于开放的协议啊,说到这里,又忍不住BS腾讯了。

Google一番,找到了这个网页,很简洁的说明,要么使用默认的样式,要么自己修改一下,点击”update badge”来生成html代码以嵌入到自己的网页上。 继续阅读“使用Google Talk Chatback”

没有Twitter,我还有Google Reader

在7月分的时候,我突然发现Google Reader在Shared Items里面可以发布个人状态信息,这个界面类似于twitter的信息发布界面了,如下图:

Google Reader Shared Items
Google Reader Shared Items

由于当时对twitter本身也没什么想法,所以于这种仿制品也就更加没兴趣了。

最近折腾blog时发现有个插件(该插件:我叫Google Reader Widget)可以在侧边栏显示Google Reader Shared Items。

今天突然心血来潮,在shared items里面发布了一则状态,后来发现居然在blog的侧边栏也有显示了。

这样一来,这玩意不就跟我之前用的Thread Twitter功能一样了么,并且还可以与访客一起来分享我的订阅,真的是太棒了!

err, 还有个小问题就是好像这个标题的字数限制比twitter还要少,注意,我说的是标题。

用Google Reader的可以直接follow我,我的ID是”i.m.tiger.lee”,用其它rss阅读器的可以订阅http://www.google.com/reader/shared/i.m.tiger.lee来阅读我分享的文章。

杭州GTUG成立了

好像是从TualatriX的blog得知杭州有GTUG这么个社区,正好碰上成立大会,想来在杭州除同事外,也不认识几个圈子里的人,于是就琢磨着去看看了。

会场在浙工大屏峰校区,留下还要过去几站,算是我到过杭州的最西边的地方了,以前是经常去留下(lisa同学家)蹭饭。

中午起晚了,就直接193到水口站下车,在校门口找个了沙县小吃随便对付了下,然后就赶去会场了。不过我细心地发现,会场名字实在是太囧了。 继续阅读“杭州GTUG成立了”

Google Reader快捷键

做为Greader的fans, 以前基于vim的习惯, 只知道jk可以上下移动, 空格也能往下翻, 却一直没想去更方便的看feeds, 用鼠标点来点去还真不方便.

看feeds时突然想到, 怎么会没有快捷键移动到feeds列表呢? 于是看了下help->Keyboard shortcuts. 果然, 一片快捷键列表, 哈哈, 那个开心啊.

当处在feeds中时, 按下gu, 出现一个像google desktop那样的半透搜索框, 太帅了. 我想Google Reader的开发人员也是有vim情结的, 不然为什么上下移动刚好也是jk呢?

为了方便查看, 这里也贴一份, 但不保证是最新的, 最新的请点这里

继续阅读“Google Reader快捷键”