系列目錄
- NodeJS與Django協同應用開發(fā)(0) node.js基礎知識
- NodeJS與Django協同應用開發(fā)(1)原型搭建
- NodeJS與Django協同應用開發(fā)(2)業(yè)務框架
- NodeJS與Django協同應用開發(fā)(3)測試與優(yōu)化
- NodeJS與Django協同應用開發(fā)(4)部署
好了霉颠,我們終于到了最后的部署環(huán)節(jié)了煤杀。在服務正式上線之前還有一些工作要做,這里面就包含域名、nginx配置沈条、跨域設置和守護進程酣难。
域名
域名是必然要有的,這點大家都明白紊撕,同樣的也要把真實ip隱藏在nginx服務器背后罢荡。對于分布式的node服務,使用多個二級域名還是由路徑區(qū)分并沒有什么所謂对扶∏裕可能用路徑區(qū)分更靈活一些,這就看實際應用場景了浪南。
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;
}
但如果要能夠轉發(fā)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開發(fā)埠对,希望看到這里能夠對大家有所啟發(fā)。