Tengo una aplicación django que puede ejecutarse localmente utilizando el entorno de desarrollo estándar. Ahora quiero mover esto a EC2 para producción. La documentación de django sugiere ejecutar con apache y mod_wsgi, y usar nginx para cargar archivos estáticos.
Estoy ejecutando Ubuntu 12.04 en una caja Ec2. Mi aplicación Django, "ddt", contiene un subdirectorio "apache" con ddt.wsgi
import os, sys
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/usr/lib/python2.7/site-packages/django/')
sys.path.append('/home/jeffrey/www/ddt/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'ddt.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Tengo mod_wsgi instalado desde apt. Mi apache / httpd.conf contiene
NameVirtualHost *:8080
WSGIScriptAlias / /home/jeffrey/www/ddt/apache/ddt.wsgi
WSGIPythonPath /home/jeffrey/www/ddt
<Directory /home/jeffrey/www/ddt/apache/>
<Files ddt.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>
En apache2 / sites-enabled
<VirtualHost *:8080>
ServerName www.mysite.com
ServerAlias mysite.com
<Directory /home/jeffrey/www/ddt/apache/>
Order deny,allow
Allow from all
</Directory>
LogLevel warn
ErrorLog /home/jeffrey/www/ddt/logs/apache_error.log
CustomLog /home/jeffrey/www/ddt/logs/apache_access.log combined
WSGIDaemonProcess datadriventrading.com user=www-data group=www-data threads=25
WSGIProcessGroup datadriventrading.com
WSGIScriptAlias / /home/jeffrey/www/ddt/apache/ddt.wsgi
</VirtualHost>
Si estoy en lo correcto, estos 3 archivos anteriores deberían permitir que mi aplicación django se ejecute correctamente en el puerto 8080 .
Tengo el siguiente archivo nginx / proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
En nginx / sites-enabled
server {
listen 80;
server_name www.mysite.com mysite.com;
access_log /home/jeffrey/www/ddt/logs/nginx_access.log;
error_log /home/jeffrey/www/ddt/logs/nginx_error.log;
location / {
proxy_pass http://127.0.0.1:8080;
include /etc/nginx/proxy.conf;
}
location /media/ {
root /home/jeffrey/www/ddt/;
}
}
Si estoy en lo correcto, estos dos archivos deberían configurar nginx para recibir solicitudes en el puerto HTTP 80, pero luego dirigir las solicitudes a apache que ejecuta la aplicación django en el puerto 8080. Si voy a mysite.com, todo lo que veo es Bienvenido a Nginx !
¿Algún consejo sobre cómo depurar esto?
fuente
Respuestas:
tenga en cuenta que debe usar www.mysite.com o mysite.com en sus solicitudes (como se define en el archivo de configuración):
pero parece que estás solicitando el sitio por localhost o por dirección IP
fuente
En primer lugar, asegúrese de poder acceder a su aplicación en 127.0.0.1:8080 y publique el contenido de nginx_error.log. Intente copiar y pegar siguiendo el archivo nginx conf y verifique que esté funcionando. Estoy usando la misma configuración para mi aplicación python.
fuente
En su configuración NGINX, ha incluido la ruta al archivo conf (
/etc/nginx/proxy.conf
) dentro de alocation
. Creo que pertenece afuera .fuente
En primer lugar, por amor a todo lo que es sagrado, no use nginx y httpd. Esto va a ser un fastidio para depurar.
En segundo lugar, en ninguna parte de los documentos he visto que recomiendan este tipo de configuración.
Use apache o nginx, esto eliminará la mitad de sus problemas.
También revise su nginx.conf si no incluye archivos de otros directorios, que podrían tener un vhost global que anula el suyo.
También debe editar su publicación para eliminar el dominio en la configuración de apache cerca de los parámetros de WSGI, ya que actualmente está filtrando su configuración de producción.
Eliminar otros sitios de sitios habilitados.
fuente