Nginx,PhusionPassenger 整合笔记(安装篇) 8584

Posted by jhsea3do Tue, 22 Dec 2009 12:11:00 GMT

我所负责公司里的一个产品是用java开发的,为了偷懒,该产品的维护及报表程序就直接用ruby开发了,至少我觉得写ruby要比写ant方便多了。

时隔一年,产品也从2.1升级到了3.0,随着产品的业务逻辑修改,这个ruby的子项目也越来越臃肿了,虽然程序运行没有问题,但因为是边学习ruby边写的所以和DRY一点关系也扯不上。

另外由于正值该产品平台版本升级过渡阶段,我们其实是需要同时维护新旧两个产品的,重写一套兼容性更好的运维报表程序是很有必要的,我用了大约2周的工作时间完成了这个工作。

nginx是由俄国人编写的轻量级WEB代理服务器,接触它也已经大半年了,在熟悉了nginx的配置及应用后,我也有打算把产品的前端从apache2迁移至nginx,一旦这么做那么必须保证目前运行tomcat和cgi程序功能不受影响。

tomcat方面自然采用了nginx的强大代理功能来配置,而cgi方面则采用phusion passenger的mod_rack方式进行替代。

下面切入正题,开始真正的安装篇,我这里使用的服务器是debian etch

STEP 1,下载 nginx tarball

$ mkdir -p ~/opt/src && sudo ln -s ~/opt/src /opt && cd ~/opt/src && wget http://nginx.org/download/nginx-0.7.64.tar.gz && tar xzvf nginx-0.7.64.tar.gz

STEP 2,下载 phusion passenger

$ sudo gem install passenger

STEP 3,安装 nginx 和 phusion passenger

$ sudo passenger-install-nginx-module --prefix=/opt/nginx/nginx-0.7.64 --nginx-source-dir=/opt/src/nginx-0.7.64

如果提示SSL库没有安装,可以执行

$ sudo aptitude install libopenssl-ruby libssl-dev

然后继续,此间安装程序会自动帮你安装nginx所需的pcre库,然后确认所有的安装提示即可,如果需要安装nginx的其他插件也可以加入自定义的参数。

STEP 4,调整 nginx 路径

$ sudo ln -s /opt/nginx/nginx-0.7.64 /opt/nginx/default

$ sudo ln -s /opt/nginx/default/sbin/nginx /usr/sbin/nginx

$ sudo ln -s /opt/nginx/default/conf /etc/nginx

STEP 5,添加 nginx init.d 脚本

这里我直接使用了debian自带的脚本。

Wordpress和Typo之间

Posted by jhsea3do Sun, 20 Dec 2009 16:47:00 GMT

之前的blog是06年时用wordpress搭建的,后来放在dreamhost上长期闲置。

使用ruby也快一年了,而且家中添置了一台小小的ubuntu server,安装了typo, 我就把blog搬了回来。

修正typo对中文标题文章支持的bug

Posted by jhsea3do Sun, 20 Dec 2009 16:17:00 GMT

刚装好typo5.4, 发现如果发表的文章采用了中文标题,则对应的permalink将只能返回404页面。

原因在于RedirectController将已经URI.decode过的参数传给了Article.find_by_permalink方法,该方法直接去查询articles表中:permalink列,所以失败。

修改方法很简单,只要修改${TYPO_ROOT}/app/models/article.rb文件第277行,将

req_params[:permalink] = params[:title]

修改为

req_params[:permalink] = URI.encode(params[:title])

即可