nodejs+nginx在FreeBSD上的配置

看了些nodejs的文档,她给我的感觉就像是几年前的php,不得不说,现在的php给我的感觉就像是个臃肿的大汉,虽然php-5.4好了点,但php这东西还是太坑。 于是乎,我便打算自己装个nodejs在服务器上玩玩。 先去nodejs官网 http://nodejs.org/#download 下源代码到服务器上,我现在的最新版本是node-v0.8.4.tar.gz http://nodejs.org/dist/v0.8.4/node-v0.8.4.tar.gz 解压并安装之:(居然要使用gmake) tar zxvf node-v0.8.4.tar.gz ./configure --prefix=/usr/local/node --shared-zlib --shared-openssl gmake install 然后发现出现这样的错误: gmake[1]: *** [/usr/local/src/node-v0.8.4/out/Release/obj.target/v8_base/deps/v8/src/platform-freebsd.o] Error 1 gmake[1]: Leaving directory `/usr/local/src/node-v0.8.4/out' gmake: *** [node] Error 2 这是因为没装libexec、openssl cd /usr/ports/devel/libexecinfo make install clean cd /usr/ports/security/openssl make install clean 装上就ok了 继续编译吧。 最后再次出现个个蛋疼的错误: bash "/usr/local/node/lib/node_modules/npm/scripts/relocate.sh" /usr/local/node/bin/node bash: not found 这是因为FreeBSD中好像原本是没有bash这东西的,只有sh 我们可以直接链接一下sh ln /bin/sh /bin/bash 然后继续编译,或者直接 sh "/usr/local/node/lib/node_modules/npm/scripts/relocate.sh" /usr/local/node/bin/node 因为这就是最后一步了。 因为我在安装nodejs是指定了路径,我们为了能让他直接执行,我们需要ln一下 ln -s /usr/local/node/bin/node /usr/local/bin/node ln -s /usr/local/node/bin/npm /usr/local/bin/npm rehash 用 node -v 和 npm -v 检查一下吧! 编辑一个主页 vi index.js [code lang="js"] var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('hello world\n'); }).listen(1104); console.log('Server running at http://localhost:1104/'); [/code] 在nginx上用代理转到nodejs上 [sourcecode language="plain"] server { listen 80; server_name node.mgsdyg.com; location / { proxy_pass http://localhost:1104/; proxy_send_timeout 30; proxy_read_timeout 30; proxy_buffers 4 64k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_set_header X-Real-IP $remote_addr; } location ~* \.(gif|png|jpg|jpeg|bmp|css|js|swf)$ { root /usr/local/www/mgsdyg/node; expires 15d; } } [/sourcecode] 可以试试了,运行 node index.js 然后去浏览器访问吧。