Standart geliştirme ortamını kullanarak yerel olarak çalışabilen bir django uygulamam var. Şimdi bunu üretim için EC2'ye taşımak istiyorum. Django belgeleri, apache ve mod_wsgi ile çalışmayı ve statik dosyaları yüklemek için nginx kullanmanızı önerir.
Bir Ec2 kutusunda Ubuntu 12.04 çalıştırıyorum. Django uygulamam "ddt", ddt.wsgi ile bir "apache" alt dizini içeriyor
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()
Ben apt mod_wsgi yüklü var. Apache / httpd.conf dosyamda
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>
Apache2 / sites özellikli altında
<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>
Doğruysam, yukarıdaki 3 dosya django uygulamamın 8080 bağlantı noktasında çalışmasına izin vermelidir .
Aşağıdaki nginx / proxy.conf dosyasına sahibim
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;
Nginx / sites özellikli altında
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/;
}
}
Bu iki dosya düzeltirse, HTTP bağlantı noktası 80'de istekleri almak için nginx'i kurmalı, ancak daha sonra bağlantı noktası 8080'de django uygulamasını çalıştıran apache'ye doğrudan istekte bulunmalıdır. Mysite.com'a gidersem, gördüğüm tek şey Nginx'e hoş geldiniz !
Bu hata ayıklama için herhangi bir tavsiye?