我开发了一个基于 Beancount 的账本托管服务 HostedBeans,欢迎大家来了解纯文本复式记账并试用我的服务。
归档 2013 年 2 月

近期计划(2013.2)

目前正在更新RootPanel 2.0, 功能上有不少更新: http://rp-bbs.jybox.net/46, 架构上目标是把需要配置的部分独立出来,方便卖授权.

不过估计时间不够完整重构了,因为我还打算加国际化,所有3月份先把功能更新测试并上线,然后再慢慢重构,慢慢研究卖授权的事.

其实三月份功能能不能写完都另说,今天都已经21日了…写完了还得测试,测试完了还得研究更新的问题(新版的结构变动挺大的).

LightPHP v4基本上已经差不多了, 通过RP2.0的测试, 也应该可以投入使用了,但是我没有像之前发誓的那样写完整的单元测试和文档,我想最好还是找时间补上吧.

最近又找到几个对零毫秒感兴趣的人,零毫秒的进度还需提一提….零毫秒的未来很迷茫啊.

等LightPHP v4完善,我要自己写个一组网页 works.jyprince.me 来展示我的作品…更新以下博客的关于我…

正在着手把之前的C++讲稿写成书: https://github.com/jybox/books.

打算借着RP主机改版,写 works.jyprince.me 的机会,尽可能把我手里所有的站都改成SSL.

在一年多以前,我调研过StarSSL, 当时它的浏览器支持还非常糟糕,不过现在看上去没有什么问题了,StarSSL也算是目前为数不多,甚至也许只有一个的,被各大浏览器/操作系统厂商承认的免费SSL证书.

其实GoDaddy的证书也不贵,有1折的优惠码,优惠后是5刀每年,但是靠优惠码总觉得不靠谱,还不如用免费的呢…

然后我打算继续利用RP主机的资源搞点公益服务,包括免费的临时梯子,免费博客托管(这次我是真打算支持catsup了), 低价Linode代购等等的.

我还打算学习学习SC2的地图编辑器,我有个不错的地图构思,我要实现它.

再学习一下Go语言.

Ubuntu 12.04 部署 Nginx + PHP-FPM 5.4 + APC

为什么选择这几个软件,和这几个版本?

  • Ubuntu的新版本一向很坑, bug成堆, 而12.04是一个LTS版本, 稳定性有保证. 而相比于其他发行版, Ubuntu是最易用的.
  • Nginx是一个轻量级的, 擅长并发的Web服务器, 相比于Apache, 它并发性能更好, 占用资源更少.
  • 和Nginx配合的话, 毫无疑问要选择PHP-FPM, 它是一个专用于PHP的FastCGI管理器.
  • PHP5.4 版本丢掉了很多历史包袱, 可以获得更高的安全性, 同时还有新的功能, 比如数组的方括号简写形式.
  • APC是一个开源的PHP字节码缓存器, 目前非常活跃, 且非常贴近PHP开发小组, 有望被内置到PHP6中.

安装软件包

12.04的默认源里面只有5.3版本的PHP, 而且nginx也比较旧, 所以我们需要自己添加源:

add-apt-repository ppa:ondrej/php5
add-apt-repository ppa:nginx/development
apt-get update

如果没有add-apt-repository这个脚本则需要:

apt-get install python-software-properties

ppa:ondrej/php5 这个是来自Debain的最新PHP构建. ppa:nginx/development 是来自官方的Nginx构建.

apt-get install nginx php5-cli php5-fpm php-pear build-essential libpcre3-dev
  • nginx - Nginx主程序
  • php5-cli - 命令行模式
  • php5-fpm - FPM模式
  • php-pear - PHP包管理器和扩展管理器(包括pecl)
  • build-essential - 编译环境(需要编译APC)
  • libpcre3-dev - 经测试APC依赖的一个库

配置APC

pecl install apc

然后pecl会自动下载并编译APC, 但APC没有默认被加入php.ini, 所以我们要:

echo "extension=apc.so;" >> /etc/php5/fpm/php.ini
cp /etc/php5/fpm/php.ini /etc/php5/cli/php.ini

APC 有个自带的监视器, 可以查看缓存的详细信息, 如内存占用, 命中率, 已缓存的文件等等, 有需要的话可以自行复制到Web目录.

cp /usr/share/php/apc.php /root/web/

配置Nginx

创建一个新站点:

cat > /etc/nginx/sites-enabled/web.conf

server {
    listen 80 default_server;
    server_name xxoo.xo;

    root /root/web;
    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

重启Nginx和PHP-FPM:

service nginx restart
service php5-fpm restart

把测试网页放到 /root/web/ 就可以了, 在此我们选用一个PHP探针做测试(来自http://www.yahei.net/tz/).

性能测试

应该说两台测试机差异很大, 不是很公平(我也说不好是偏向哪一方) … 大家凑合看

测试用例(5个线程, 请求1000次): ab -n1000 -c5 http://xxoo.xo/probe.php

Nginx + PHP-FPM + APC

QPS:1022 (每秒完成请求)

Nginx + Apache + mod_php

QPS:51

如何成为一名 Geek

这里指的Geek主要是是指计算机领域,之所以不用hacker, 是为了减少不必要的纷争.

其实下面是一环扣一环的…

接入世界性互联网

这是很重要的一步,你可以找人要一个Secure Shell或者Point to Point Tunneling Protocol Virtual Private Network, 或者尝试使用GoAgent.
为什么这东西名字这么长?呵呵,这恰好说明了接入世界性互联网的必要性…

在这一步中,你可能会遇到很多困难,请尝试求助你身边的朋友.

版权意识

你要认识到,如果你打算在计算机领域进行一些创造,那么维护版权,就是在维护你自己将来的利益,请试着去影响身边的更多人.

可能你因为种种原因无法购买正版软件,但至少请认识到这是对作者利益的一种损害.

从官方渠道下载文件,获取信息

也许是因为一直用盗版,很多人没有养成从官网下载软件的习惯,出了问题也想不到去求助官方客服.

不管你信不信,这是避免出现问题,解决问题的最方便,有效的手段.

毫无疑问从官网得到的信息是最权威的,这在解决问题和与别人辩论的时候都很有用.

扔掉旧东西

扔掉那些旧的,官方已经不再推荐或提供支持的东西,比如IE6, WinXP, VC++6.0, VB6(好像都是微软的东西啊)..

一定会有新的更好用的替代品的,如果没有的话可以考虑自己创造一个.

使用Google

Google会让官网出现在第一个,这很方便.

Google会包含英文的搜索结果,即使你不懂英文,但很多问题只需一句话,一个词就能解决.

学会搜索和提问

当发现一个陌生的词,请尝试搜索它,或者在百科(如维基百科)中搜索它.

搜索问题时选择合适的搜索词等等,参见Google的搜索技巧,
以及月光博客的相关文章.

如果无法通过搜索一个人解决问题,那么就需要去社区提问,在此之前你有必要学习一下提问的智慧

尽量不要在QQ或邮件上单独向别人提问,尤其是搜索就能解决的问题,因为这样的话,别人无法搜索到你最后解决问题的经验,而且对方欢迎不欢迎你的提问还说不定.

维护一份博客列表 / 写博客

在搜索时,很可能因为某个人的一篇博客让你豁然开朗,再看一看这个人的其他文章,发现很对你的胃口,这时最好将这个博客订阅下来,方便得到新文章,也方便回头再来看,推荐Google Reader.

同时最好自己也写一个博客,当你解决了一个棘手的问题,就写一篇文章,让你的经验可以帮助到其他人.

融入一个社区(论坛)

这样你可以了解到一段时间里大家都在关注些什么,你可以利用你已有的经验帮助后来者,同时也更方便你提问.

多阅读

无论是在网上还是图书馆,请在你研究的领域多读一些书/文章.
不一定什么时候就会派上用场,你可能记不住文章的所有内容,但只需记住几个关键词,你就可以重新找到这篇文章.

将自己的作品展示给大家看

如果仅仅是练习的作品,没有什么商业机密,自己藏着不如发出来给大家看,大家会指出你注意不到的问题.

同时对你自己也是一种压力,因为要展示给大家,所以你要让作品尽可能完美,不给自己丢脸.

精子生于 1995 年,英文 ID jysperm.

订阅推送

通过 Telegram Channel 订阅我的博客日志、产品和项目的动态:

王子亭的博客 @ Telegram


通过邮件订阅订阅我的博客日志、产品和项目的动态(历史邮件):

该博客使用基于  Hexo  的  simpleblock  主题。博客内容使用  CC BY-NC-ND  授权发布。最后生成于 2023-12-20.