系列目錄
- 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開發,希望看到這里能夠對大家有所啟發。