美文网首页
NodeJS与Django协同应用开发(4) —— 部署

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

作者: AlfredX | 来源:发表于2016-05-17 17:10 被阅读786次

    系列目录


    好了,我们终于到了最后的部署环节了。在服务正式上线之前还有一些工作要做,这里面就包含域名、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) —— 部署

          本文链接:https://www.haomeiwen.com/subject/mbpirttx.html