Mam aplikację django, która może działać lokalnie przy użyciu standardowego środowiska programistycznego. Chcę teraz przenieść to do EC2 do produkcji. Dokumentacja django sugeruje uruchomienie z apache i mod_wsgi oraz używanie nginx do ładowania plików statycznych.
Używam Ubuntu 12.04 na komputerze Ec2. Moja aplikacja Django „ddt” zawiera podkatalog „apache” z 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()
Mam zainstalowany mod_wsgi z apt. Mój apache / httpd.conf zawiera
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>
Pod apache2 / włączone strony
<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>
Jeśli mam rację, te 3 pliki powyżej powinny poprawnie zezwalać mojej aplikacji django na działanie na porcie 8080 .
Mam następujący plik 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;
Pod włączoną nginx / witrynami
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/;
}
}
Jeśli mam rację, te dwa pliki powinny skonfigurować nginx do przyjmowania żądań na porcie HTTP 80, ale następnie kieruj żądania do apache, który uruchamia aplikację django na porcie 8080. Jeśli przejdę do mysite.com, widzę tylko Witamy w Nginx !
Wszelkie porady dotyczące sposobu debugowania tego?