Tôi có một ứng dụng django có thể chạy cục bộ bằng môi trường phát triển tiêu chuẩn. Bây giờ tôi muốn chuyển cái này sang EC2 để sản xuất. Tài liệu django đề nghị chạy với apache và mod_wsgi và sử dụng nginx để tải các tệp tĩnh.
Tôi đang chạy Ubuntu 12.04 trên hộp Ec2. Ứng dụng Django của tôi, "ddt", chứa thư mục con "apache" với 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()
Tôi đã cài đặt mod_wsgi từ apt. Apache / httpd.conf của tôi chứa
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>
Theo apache2 / trang web được kích hoạt
<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>
Nếu tôi đúng, 3 tệp trên đây sẽ cho phép chính xác ứng dụng django của tôi chạy trên cổng 8080 .
Tôi có tệp nginx / proxy.conf sau đây
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;
Dưới nginx / trang web kích hoạt
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/;
}
}
Nếu tôi sửa hai tệp này thì nên thiết lập nginx để nhận yêu cầu trên cổng HTTP 80, nhưng sau đó yêu cầu trực tiếp đến apache đang chạy ứng dụng django trên cổng 8080. Nếu tôi truy cập mysite.com, tất cả những gì tôi thấy là Chào mừng bạn đến với Nginx !
Bất kỳ lời khuyên cho làm thế nào để gỡ lỗi này?