系列目录
- NodeJS与Django协同应用开发(0) node.js基础知识
- NodeJS与Django协同应用开发(1)原型搭建
- NodeJS与Django协同应用开发(2)业务框架
- NodeJS与Django协同应用开发(3)测试与优化
- NodeJS与Django协同应用开发(4)部署
好了,我们终于到了最后的部署环节了。在服务正式上线之前还有一些工作要做,这里面就包含域名、nginx配置、跨域设置和守护进程。
域名
域名是必然要有的,这点大家都明白,同样的也要把真实ip隐藏在nginx服务器背后。对于分布式的node服务,使用多个二级域名还是由路径区分并没有什么所谓。可能用路径区分更灵活一些,这就看实际应用场景了。
Nginx
nginx上显然需要为新域名做一个配置。
针对websocket应用,nginx的配置有些不同。通常的配置是这样的:
location / {
proxy_set_header Host $host;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://node.yourdomain.com;
}
但如果要能够转发websocket数据,需要额外添加几行。
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
跨域设置
我们不能够轻易得把我们的服务器暴露于公网,因此需要有跨域设置来保护我们的服务器。但是哪怕是二级域名,socketio也会拒绝来自主站的请求。值得庆幸的是socketio本身就能够设置跨域选项。
var io = sio.listen(server, {
log: true,
origins:'http://yourdomain.com:* ',
});
只要设置了origins项就能够允许来自该域名的请求。本地测试时可以不用,上线了之后可别忘了。
守护进程置
一般的推荐是用forever来做nodejs的守护进程。
LOG=/tmp/node.process.log
PID=/tmp/node/forever.pid
APP_PATH=/your/path/to/node
APP=$APP_PATH/app.js
ACCESS_LOG = $LOG/access.log
ERROR_LOG = $LOG/error.log
OUT_LOG = $LOG/out.log
mkdir $LOG -p
echo ===================start forever====================
forever -p $APP_PATH -l $ACCESS_LOG -e $ERROR_LOG -o $OUT_LOG -a --pidFile $PID start $APP
配置和使用都非常简单,其余的内容可以查看文档,这里就不赘述了。
至此本系列的所有内容都讲完了,总的来说node.js与django协同使用的重点就在于通信机制,除此之外都是通常的web server开发,希望看到这里能够对大家有所启发。