在Debian Squeeze 上编译 node.js

OpenGG.Clean.Player 服务器目前用的是apache2. 在9 月11 号之前, 服务器虽然压力比较大, 但主要是静态文件, 速度尚能接受. 但优酷对api 增加了crossdomain.xml 限制之后. 我不得不设置一个反向代理, 这样一来所有的视频api 请求全部通过我的服务器, 压力骤然增大.

流量的压力是一方面, 另一方面则是网络IO 和apache2 进程数限制: 服务器与优酷api 之间的延迟比较大(查询一次约1s), 大量请求被网络IO 所阻塞, 挂起等待优酷api 响应, 导致新的请求被apache2 的并发进程数限制阻塞(在高峰期, 新请求要等老请求完成, 然后才能被apache2 处理, 整个排队时间约10s). 所以现在各位用户在看优酷视频前加载的时间比较长, 因为浏览器既要下载播放器, 又要等待服务器响应, 整个过程加起来约13s, 这已经跟广告差不多长了!

优酷对此要负主要责任. 从OpenGG.Clean.Player 项目开始到现在, 优酷有所求, 用户有所求, 双方在广告和去广告上反复较量, 唯一不求回报任劳任怨的活雷锋是我.

Anyway, 把话题拉回来. 如果浏览器加载视频的延迟能缩短到5s 之内, 这个过程就比较能接受了. 服务器与优酷api 之间的延迟仅为1s, 却导致了10s 的排队时间, 这太不划算, 所以我现在打算用nginx/node.js 代替apache2, 看性能有否改善.

改进的第一步就是安装nginx 和node.js. nginx 还好说, 官方提供了apt 源, node.js 就比较麻烦了, squeeze 源里没有, sid 源里的版本太老. github 上给出的方法是自己编译:

apt-get install python g++
mkdir ~/nodejs && cd $_
wget -N http://nodejs.org/dist/node-latest.tar.gz
tar xzvf node-latest.tar.gz && cd `ls -rd node-v*`
./configure
make install

但是我不喜欢make install, 因为这样不能编译出deb 包, 整个源代码文件夹也得留着不能删, 指不定啥时候就得用到. 还好fpm 提供了另一个简单的打包方案.

在这里我贴一下我的整个编译, 打包和安装的过程(以下大部分命令无需做改动, 但某些命令需要root 权限).

#Prepare gem and fpm
apt-get install ruby1.8-dev libyaml-ruby libzlib-ruby
wget -N http://rubyforge.org/frs/download.php/76072/rubygems-1.8.24.zip
unzip rubygems-1.8.24.zip && cd `ls -rd rubygems-*`
ruby setup.rb
gem1.8 install fpm

#Compile node.js from source
apt-get install python g++
mkdir ~/nodejs && cd $_
wget -N http://nodejs.org/dist/node-latest.tar.gz
tar xzvf node-latest.tar.gz && cd `ls -rd node-v*`
./configure

#Use fpm to package up a .deb file
fpm -s dir -t deb -n nodejs -v 0.8.9 -C ~/nodejs \
  -p nodejs-VERSION_ARCH.deb \
  -d "libssl0.9.8 (>> 0)" \
  -d "libstdc++6 (>= 4.4.3)" \
  usr

#fpm produces a .deb file in current directory
dpkg -i nodejs-0.8.9_i386.deb

最后附上我打包好的.deb , 只是展示一下成果而已.
nodejs-0.8.9_i386.deb for Debian Squeeze

本站文章除注明转载外,均为本站原创编译
转载请注明以下信息
文章转载自:鲁夫的爱 [ https://opengg.me/ ]
本文标题:在Debian Squeeze 上编译 node.js
本文地址:https://opengg.me/857/build-nodejs-deb-debian-squeeze/

《在Debian Squeeze 上编译 node.js》有9个想法

  1. 有个建议,既然楼主用node.js来实现对视频api的反向代理,node.js在windows上又蛮给力的,不如放个包出来,让愿意折腾的人直接在本机架设个node.js代理好了。这样不仅可以减轻服务器压力,也能实现大块头的flash本机加速获取的功能。

发表评论

电子邮件地址不会被公开。 必填项已用*标注