2

我已经在 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,有什么建议吗?

谢谢你的时间。

4

0 回答 0