Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用nginx、django和芹菜正确设置多个网站_Django_Celery_Django Celery_Flower - Fatal编程技术网

使用nginx、django和芹菜正确设置多个网站

使用nginx、django和芹菜正确设置多个网站,django,celery,django-celery,flower,Django,Celery,Django Celery,Flower,我试图找到一些关于在linode上设置多个django站点的正确方法的信息(Ubuntu 12.04.3 LTS(GNU/Linux 3.9.3-x86_64-linode33 x86_64) 以下是我现在拥有的: 网络服务器:nginx 每个站点都包含在.virtualenv中 Django和其他软件包是在每个.virtualenv中使用pip安装的 RabbitMQ是使用sudo apt get RabbitMQ安装的,并为每个站点创建一个新用户和vhost 每个站点都使用主管脚本启动: [

我试图找到一些关于在linode上设置多个django站点的正确方法的信息(Ubuntu 12.04.3 LTS(GNU/Linux 3.9.3-x86_64-linode33 x86_64)

以下是我现在拥有的:

网络服务器:nginx

每个站点都包含在.virtualenv中

Django和其他软件包是在每个.virtualenv中使用pip安装的

RabbitMQ是使用
sudo apt get RabbitMQ
安装的,并为每个站点创建一个新用户和vhost

每个站点都使用主管脚本启动:

[group:<SITENAME>]
programs=<SITENAME>-gunicorn, <SITENAME>-celeryd, <SITENAME>-celerycam


[program:<SITENAME>-gunicorn]
directory = /home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/
command=/home/<USER>/.virtualenvs/<SITENAME>/bin/gunicorn <PROJECT>.wsgi:application -c /home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/server_conf/<SITENAME>-gunicorn.py

user=<USER>
autostart = true
autorestart = true
stderr_events_enabled = true
redirect_stderr = true
logfile_maxbytes=5MB


[program:<SITENAME>-celeryd]
directory=/home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/
command=/home/<USER>/.virtualenvs/<SITENAME>/bin/python /home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/manage.py celery worker -E -n <SITENAME> --broker=amqp://<SITENAME>:<SITENAME>@localhost:5672//<SITENAME> --loglevel=ERROR
environment=HOME='/home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/',DJANGO_SETTINGS_MODULE='<PROJECT>.settings.staging'

user=<USER>
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600

[program:<SITENAME>-celerycam]
directory=/home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/
command=/home/<USER>/.virtualenvs/<SITENAME>/bin/python /home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/manage.py celerycam
environment=HOME='/home/<USER>/.virtualenvs/<SITENAME>/<PROJECT>/',DJANGO_SETTINGS_MODULE='<PROJECT>.settings.staging'

user=<USER>
autostart=true
autorestart=true
startsecs=10
[组:]
程序=-gunicorn,-celeryd,-celerycam
[节目:-gunicorn]
directory=/home/.virtualenvs///
command=/home//.virtualenvs//bin/gunicorn.wsgi:application-c/home//.virtualenvs///server_conf//-gunicorn.py
使用者=
自动启动=真
自动重新启动=真
stderr\u事件\u已启用=真
重定向\u stderr=true
日志文件\u最大字节数=5MB
[节目:-芹菜]
directory=/home/.virtualenvs///
command=/home//.virtualenvs//bin/python/home//.virtualenvs///manage.py芹菜工人-E-n--broker=amqp://:@localhost:5672/--loglevel=ERROR
environment=HOME='/HOME//.virtualenvs//',DJANGO_SETTINGS_MODULE='.SETTINGS.staging'
使用者=
自动启动=真
自动重新启动=真
startsecs=10
stopwaitsecs=600
[节目:-celerycam]
directory=/home/.virtualenvs///
command=/home//.virtualenvs//bin/python/home//.virtualenvs///manage.py celerycam
environment=HOME='/HOME//.virtualenvs//',DJANGO_SETTINGS_MODULE='.SETTINGS.staging'
使用者=
自动启动=真
自动重新启动=真
startsecs=10

问题1:这是正确的方法吗?还是更好的方法

问题2:我已尝试安装,但如何在多个站点上进行安装?我是否需要为每个.virtualenv安装一个flower软件包,还是可以为每个站点安装一个flower软件包?如何设置nginx以在服务器上显示flower页面?

回答1 有很多方法可以走。我们确实以类似的方式设置它

对于管理器配置,我建议使用稍微不太详细的方式,下面是运行“example.com”的web/tasks的示例:

/etc/supervisor/conf.d/example.com.conf
(我们通常在存储库中也有配置文件,只是对它们进行符号链接。因此,此文件可以是符号链接:
/var/www/example.com/conf/supervisord.conf)

答复2 不完全确定这是否是最好的方式,但我会在这里做什么(通常会做):

  • 为每个应用程序分别运行flower(请参见上面的配置)
    带有各自的vhost(和url_前缀)
  • ad nginx反向代理(与url\u前缀同名的目录)
/etc/nginx/sites enabled/example.conf

访问example.com/flower上的flower接口

[group:example.com]
programs=web, worker, cam

[program:web]
command=/srv/example.com/bin/gunicorn project.wsgi -c /var/www/example.com/app/gunicorn.conf.py
directory=/var/www/example.com/app/

user=<USER>
autostart=true
autorestart=true
redirect_stderr=True
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stdout_logfile=/var/log/apps/web.example.com.log


[program:worker]
command=/srv/example.com/bin/celery -A project worker -l info
directory=/var/www/example.com/app/

user=<USER>
autostart=true
autorestart=true
redirect_stderr=True
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stdout_logfile=/var/log/apps/web.example.com.log


[program:flower]
command=/srv/example.com/bin/celery flower -A project --broker=amqp://guest:guest@localhost:5672//example.com/ --url_prefix=flower --port 5001
directory=/var/www/example.com/app/

...
# restart all 'programs'
supervisorctl restart example.com:* 

# restart web/django
supervisorctl restart example.com:web

etc. 
server {

    ...

    location /flower {
        proxy_pass http://127.0.0.1:5001;

        ...