我已经在 Linode 中部署了我的应用程序。但是为了测试 SD,我在运行应用程序的本地网络中使用了一台 pc 作为服务器。如果您可以给我一些建议,如果它是正确的或者我犯了一个错误,我想分享我的 Nginx 和 Supervisor 配置。
我修改了我的hosts
文件以使用www.mydomain.com
.
在我的settings.py
文件中,我有:
# SWAMPDRAGON
SWAMP_DRAGON_CONNECTION = ('swampdragon_auth.socketconnection.HttpDataConnection', '/data')
DRAGON_URL = 'http://127.0.0.1:9999'
我以我为 celery 所做的事情为例,并重复使用它来对 SD 做类似的事情:我创建了一个命令文件:' swampdragon_start
'
#!bin/bash
NAME="swampdragon"
DJANGODIR=/opt/virtualenvs/myproject/pysrc/myproject/myproject
# Enable virtualenv
cd $DJANGODIR
source ../../../bin/activate
export C_FORCE_ROOT="true"
# Execute SD
exec python manage.py runsd 0.0.0.0:9999
然后我为主管创建了一个文件:'swampdragon.conf'
[program:swampdragon]
command = /opt/virtualenvs/myproject/bin/swampdragon_start
user = root
stdout = /path/to/file.log
stderr = /path/to/file.log
autostart = true
autorestart = true
最后,我使swampdragon_start
可执行文件,并添加swampdragon
到主管。
我的 Nginx 配置如下:
upstream swampdragon{
server 127.0.0.1:9999;
}
proxy_next_upstream off;
server {
listen 80;
server_name www.mydomain.com;
access_log /path/to/log
error_log /path/to/log
location /media/ {
alias /path/to/media
}
location /static/ {
alias /path/to/statics
}
location / {
... # django config
}
}
server {
# this is taken from http://swampdragon.net/blog/deploying-swampdragon/
listen 80;
server_name sd.mydomain.com;
# Websocket
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_pass http://swampdragon;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
这就是我让它工作的方式,但我认为 Nginx 上游并没有真正工作。我确信有更好的方法来部署 SD,有什么建议吗?
谢谢你的时间。