mzh/blog

开站三周年

不知不觉中,距离那个蝉声不断的午后有三年了。 翻翻记录才发现,三年间口水文写了不少,算上这篇正好140篇,相当于两周一篇,也不枉当年定下的”写周记”的想法。写周记这个不敢说是习惯,但是和初中时语文老师的教导还是有一定关系的 —-当年高文老师规定每周要写周记,我也就每周写点口水话糊弄过去—- 现在翻开看当时的周记自己大牙都笑掉了,而且因为我是个平凡的中学生,每天生活也很枯燥,所以还有不少周记是臆造的。当然下面这篇是真人真事。 对于这么难看的字老师还这么认真地批改,衷心地感谢老师,如果是我早就写上”阅”了。

凡事认真,不是我的专长,和我这人喜欢嬉皮笑脸和不计后果有关。不计后果,三年间写了很多脑残文来批各种自己不喜欢的东西,学校啊,公司啊什么的,我也不打算删掉,毕竟这是年轻过的表现;我也有点担心万一哪天我成了名人,有人来这挖坟,可能有些会尴尬

尽管可能性很渺小,总归是”人怕出名猪怕壮”。不过就算发生了,”凡存在皆有理由”,估计我也不怎么会争,和佛教那万物间没有对错上下,只有羁绊的指导思想有点像。 说到关系,写博客虽然在这个微博、SNS盛行的年代很孤单,还有被现实生活窥探的感觉,就像某博友说的”吃力不讨好”;但也交到不少朋友,长了不少眼界,学了不少新东西。比起整天看别人的状态、分享、生活,在个人博客上有种”我得思考”的感觉,而不是被动地接受外界的信息。还有,我想舒淇放弃网络是因为她没有认真写博客,而是依靠微博;看看韩寒,有了博客,别人怎么骂都可以坚持下去,因为还有能做主的地盘,看你丫不爽还能删了你的留言,就算开骂,骂声还能比别人大。冲着这三点,不间断地写个人博客就已经很超值了。 再有在毕业到现在也有一年时间里,虽然我在口语考试中对帅哥考官用蹩脚英语斩钉截铁地说,光看电视是种浪费时间,可我不知道自己这样近近啃老学习的时间是不是也浪费了。看看同龄人,大多已经开始辉煌的人生,买车的买车,结婚的结婚,让我倍感光阴似箭,流时无情,一年真的可以改变很多。估计我这样的人在同龄人里也算差得peerless了。 牢骚太多妨碍心情,不如就此打住,开始努力吧。

小内存VPS之Ubuntu配置LNmP

前言

作为Ubuntu fans,连VPS都是装Ubuntu的,但是因为内存太小(256M),传说中的LAMP(Linux+Apache+Mysql+PHP),因为内存使用率很容易就100%,只好用LNmP(Linux+Nginx+sqlite +PHP-fastcgi)。而网上的教程基本针对CentOS,就连用了Ubuntu的也是用LNMP安装包—- 从源代码开始安装!!而且把程序都装到/usr/local下,这样很不符合Ubuntu的包管理精神,而网上的教程基本上是一篇(都是互相抄袭嘛)。因此我想通过本文告诉大家,小内存下的Ubuntu不用编译也可以很好地使用,以下是集合我的实际配置经历和网上文章整理 纯粹在apt-get下管理软件,并配置出适合小内存VPS运行的服务器套装。

别看广告,看疗效

去掉我管理时连接ssh和bash(多了2M左右),内存最大占用只有60M,包括sendmail这种内存大头。当然现在VPS上才跑着一个Typecho(博客程序)和一个大波(推忒API),就算按一个站点要15M左右 (独立php-cgi+nginx进程),多出来的200M,应该还能跑10个左右这样的站点哈,特别对是流量比较小的个人博客,简直是太合适了。

配置Ubuntu

首先在VPS面板安装好Ubuntu 10.04后(是有点老,不过文中命令条目可以跨LTS版本执行),删除apache2和mysql-serverapt- get remove apache2 mysql-server-core bind9接下来是安装Nginx php-cgi apt-get install php5-cgi nginx注:网上说的fastcgi其实和这个是一样的,我个人理解是Nginx把得到的参数通过CGI接口转接给PHP进行处理而已。而Spawn- FCGI就不用下载了,网上那些用了Nginx还去下载LightHttpd的文章真是不知道怎么说了。为什么?请看什么是CGI、FastCGI、PHP-CGI 、PHP-FPM、Spawn-FCGI?

配置PHP-CGI启动项

添加php-cgi作为常驻内存项目,减少服务器开支 wget /2012/04 /php-fastcgi.txt && chmod +x php-fastcgi.txt && mv php-fastcgi.txt /etc/init.d /php-cgi或者手动复制php-fastcgi到/etc/init.d/下面 可能需要编辑文件里面的两项 BIND=/tmp/php.socket #绑定UNIX通道作为CGI传递的路径 PHP_FCGI_CHILDREN=2 #控制进程数(越多程序速度越快,当然内存消耗越大) 修改好后,再运行 update-rc.d php-cgi defaults && service php-cgi start,把这个启动项作为默认启动项,并启动。

配置Nginx

具体网站程序配置,最好网上找,我这里要说的是upstream和event的设定 /etc/nginx/nginx.conf下面要添加

upstream php { server unix:/tmp/php.socket; } events { worker_connections 1024; use epoll; }

然后再具体的网站程序里要添加: location ~ \.php { #你的程序配置 fastcgi_pass php; } 添加好以后用service nginx reload重载即可。 附上我的Typecho的配置文件:

location ~* ^.+\.php(\/.*)*$ {
                try_files $uri =404;    
                include /etc/nginx/fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass    php;
        }
    if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php$1 last;
        }

结尾啦

这样就基本差不多了,重启或者是其他关掉server之后,内存是不是省了很多,又不需要编译这么长的时间呢。

如何从源代码自动制作Deb规则&推送至Launchpad

本文环境

OS:Ubuntu 11.10 已安装:build-essential、dh-make、dput等必要的库和软件 对象:不会却又想打Debian包的小白

本文目标

  1. 没有debian规则情况下,大部分自动化地创建debian规则
  2. 文件符合LaunchPad.net标准,上传至PPA

准备工作

  1. 去申请launchpad.net帐号
  2. 创建个人Open PGP密钥
  3. launchpad帐号加入Open PGP密钥
  4. 在LaunchPad.net上建立个人PPA

创建Debian规则

Linux的世界是源代码构成的,时时刻刻会多出很多新的,好玩的软件,但这些软件的作者并没有时间去写debian规则,而各位又想用deb包来安装的话就没办法了。跳过”又臭又长”的Debian打包指南,其实我们只需要一个软件就够了 —-dh_make。 这个软件会自动地根据makefile写出Debian规则来,执行一下就好了,够简单吧。 下面就用没有debian化的ibus- gjs来做例子: git clone [email protected]:mengzhuo/ibus-gjs.git ibus-gjs-1 && cd ibus-gjs-1 && mv debian debian.backup 你会发现这时,ibus-gjs- 1里面没有debian规则(只剩个备份文件夹啦),还有就是在路径底下直接用dh_make是不行的,因为我们的作者用的是autogen.sh,所以需要用以下命令来做出makefile ./autogen.sh --prefix=/usr && ./configure 成功后(没有任何依赖不足或错误)执行 dh_make -e "[email protected]" -n -s 当然,你可以把email换成你自己的,具体参数是什么意思请问man哦,这时屏幕上应该出现: 图片里大意是叫你去修改一下debian规则,毕竟很多地方还是要人来做的嘛~一般改debian/control和删除一些不需要的*.ex脚本文件,具体怎么改就要看Debian的文档啦,不过本例的最后成品可以参考debian.backup文件夹里的文件。

创建、测试Deb包

上面改好之后,在ibus-gjs-1底下执行dh_make --createorig -s,来创建debuild所需的orig文件,放心按回车吧,那个提示是吓唬你的,因为你已经创建了debian规则,所以它会略过的。 现在,你已经可以自己创建一个deb包了,下面的命令会创建一个deb包,并清除编译产生的缓存。 debuild -b && debuild clean 然后你会发现下面的错误: 这是因为你还没指定你的密钥,如果你不需要上传到LaunchPad的话就可以忽视它啦。现在,返回上层,你就会发现你打好的DEB包啦。

源码上传

就3步:

1. 获得Open PGP ID,例如我的ID是A0771E56,可以用下面的代码参看 `gpg --list-keys` 我的PGP 

pub 2048R/A0771E56 2011-11-21 uid Meng Zhuo (For Email and EncryptedFile) sub 2048R/DF9E11A0 2011-11-21

2. 在源代码目录执行 `debuild -S -sa -k[你的ID]` 例如: `debuild -S -sa -kA0771E56` 来构建launchpad承认的源代码格式
3. 返回上层目录,执行 `dput ppa:[你的PPA地址] source.changes结尾的文件`

例如:

dput ppa:mengzhuo1203/ibus-gjs ibus-gjs_1_source.changes

好啦,现在就坐等LaunchPad给你排队编译这个东西了,大概1-2小时不等

总结

我们学了简单地从源代码制作debian规则和上传代码到LaunchPad,很简单吧,我可是摸索了……3天(业余时间),遥想当年手动写规则,简直是弱爆了。 当然,非常欢迎指正错误,或者是说出更好的方法哈~

2011年终总结

  1. 今年你所完成的最重要的事情是什么? 顺利毕业了​
  2. 今年你所学到的最有用的是什么? 工作很辛苦,读书很幸福,人生苦短
  3. 满分10分,你在这一年对自己的满意度有几分?这么评的理由是什么? 3分 今年真是糟糕的一年,感觉像是倒霉的本命年提前来了,评分理由:
    • 考研没有成功(-6)
    • 工作没有继续(-0.3)
    • 浪费了2个月(-0.65)
    • 插件错误太多(-0.05)
    • 还活着(+0)
  4. 你明年想要实现什么?
    • 烤鸡成功
    • 气球升空

可选类问题

  1. 如果现在是明年的12月31​日,你最想在你的生活中见到什么?
    • 拿着能见人的鸡托分数申请学校,然后得到offer
    • 气球升空后传回的照片
  2. 发生什么能在明年年底​能够让你感觉10分满意?
    • 能见人的鸡托分数单(+8.549)
    • 气球成功升空(+1.24)
    • 写的插件没有大BUG(+0.2)
    • 拿到驾照(+0.009)
    • 中500W彩票(+0.001)
    • 有个女朋友(+0.001)
    • 还活着(+0)
  3. 播种怎样的习惯会帮你实现问题1中的事情?
    • 特定时间里一心一意(对我这个思维太跳的人真心难)
    • 按时休息
    • 严格按规划执行
    • 锻炼身体
  4. 为了实现这些目标,你马上要做的是什么? 把爪子从手机电脑上拿开

年终总结受这篇文章鼓动而写

Hello World

Hello world!