Como rodar o Django 1.3 / 1.4 no uWSGI no nginx no EC2 (o Apache2 funciona)

1

Estou postando uma pergunta em nome do meu administrador. Basicamente, ele quer configurar o aplicativo Django (feito no Django 1.3, mas estará mudando para o Django 1.4, então não deve importar qual desses dois funcionará, espero) no WSGI no nginx, instalado no Amazon EC2. / p>

O aplicativo é executado corretamente quando o servidor de desenvolvimento do Django é usado (com ./manage.py runserver 0.0.0.0:8080 por exemplo), também o Apache funciona corretamente. O único problema é com o nginx e parece que há algo mais errado com a configuração do nginx / WSGI ou do Django.

Sua descrição é a seguinte:

O servidor foi configurado de acordo com muitos tutoriais, mas infelizmente o Nginx e o uWSGI ainda não funcionam com o aplicativo.

ProjectName.py:

import os, sys, wsgi

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ProjectName.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Eu corro o uWSGI por comando:

uwsgi -x /etc/uwsgi/apps-enabled/projectname.xml

arquivo XML:

<uwsgi>
        <chdir>/home/projectname</chdir>
        <pythonpath>/usr/local/lib/python2.7</pythonpath>
        <socket>127.0.0.1:8001</socket>
        <daemonize>/var/log/uwsgi/proJectname.log</daemonize>
        <processes>1</processes>
        <uid>33</uid>
        <gid>33</gid>
        <enable-threads/>
        <master/>
        <vacuum/>
        <harakiri>120</harakiri>
        <max-requests>5000</max-requests>
        <vhost/>
</uwsgi>

Nos registros do uWSGI:

*** no app loaded. going in full dynamic mode ***

Nos registros do Nginx:

XXX.com [pid: XXX|app: -1|req: -1/1] XXX.XXX.XXX.XXX () {48 vars in 989 bytes} [Date] GET / => generated 46 bytes in 77 m
secs (HTTP/1.1 500) 2 headers in 63 bytes (0 switches on core 0)
added /usr/lib/python2.7/ to pythonpath.
Traceback (most recent call last):
  File "./ProjectName.py", line 26, in <module>
    from django.core.wsgi import get_wsgi_application
ImportError: No module named wsgi
unable to load app SCRIPT_NAME=XXX.com|

Exemplo de tutoriais usados:

Você tem alguma idéia do que foi feito incorretamente, ou o que deve ser feito para fazer o Django funcionar no uWSGI no nginx no EC2?

    
por Tadeck 03.04.2012 / 17:22

2 respostas

1

Diga a ele para começar com configurações simples e, em seguida, ajuste-as:

link

Assim que um aplicativo no modo http simples funciona, ele pode começar a adicionar integração com o nginx.

Depois disso, ele pode iniciar o ajuste real adicionando processos e funções de monitoramento.

Pelo que eu vejo, parece que ele está começando no modo dinâmico, que é um tópico muito complexo (e 99% do tempo desnecessário)

    
por 03.04.2012 / 17:37
1

Adicione mais algumas linhas de configuração ao seu uwsgi.xml, aqui está a versão yaml de um dos meus projetos:

uwsgi:
    uid: 33
    gid: 33
    socket: /webapps/<project_name>/run/uwsgi-socket
    logto: /webapps/<project_name>/logs/uwsgi.log
    pidfile: /webapps/<project_name>/run/uwsgi.pid
    touch-reload: /webapps/<project_name>/run/reload
    enable-threads: true
    single-interpreter: true
    thread: 3
    master: true
    chdir: /webapps/<project_name>
    env: DJANGO_SETTINGS_MODULE=<project_name>.settings.production
    module: <project_name>.wsgi
    virtualenv: /webapps/.virtualenvs/<project_name>

Parece que você está perdendo as seções env e module. Você também pode querer considerar um virtualenv também.

    
por 09.03.2013 / 16:59