NodeJS与Django协同应用开发(4) —— 部署


系列目录

  • 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开发,希望看到这里能够对大家有所启发。

你可能感兴趣的:(NodeJS与Django协同应用开发(4) —— 部署)