Saya memiliki aplikasi Django yang dapat berjalan secara lokal menggunakan lingkungan pengembangan standar. Saya ingin sekarang memindahkan ini ke EC2 untuk produksi. Dokumentasi Django menyarankan berjalan dengan apache dan mod_wsgi, dan menggunakan nginx untuk memuat file statis.
Saya menjalankan Ubuntu 12,04 pada kotak Ec2. Aplikasi Django saya, "ddt", berisi subdirektori "apache" dengan 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()
Saya telah menginstal mod_wsgi dari apt. Apache / httpd.conf saya berisi
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>
Di bawah apache2 / situs-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>
Jika saya benar, 3 file di atas ini seharusnya memungkinkan aplikasi Django saya berjalan di port 8080 .
Saya memiliki file nginx / proxy.conf berikut
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;
Di bawah nginx / situs-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/;
}
}
Jika saya benar kedua file ini harus mengatur nginx untuk mengambil permintaan pada port HTTP 80, tetapi kemudian mengarahkan permintaan ke apache yang menjalankan aplikasi django pada port 8080. Jika saya pergi ke mysite.com, yang saya lihat adalah Selamat datang di Nginx !
Ada saran untuk cara men-debug ini?
sumber
Jawaban:
harap dicatat, bahwa Anda harus menggunakan www.mysite.com atau mysite.com dalam permintaan Anda (sebagaimana didefinisikan dalam file konfigurasi):
tetapi sepertinya, Anda meminta situs dengan localhost atau dengan alamat IP
sumber
Pertama-tama pastikan Anda dapat mengakses aplikasi Anda di 127.0.0.1:8080 & silakan memposting konten nginx_error.log. Coba Salin tempel berikut file conf nginx & periksa apakah berfungsi. Saya menggunakan konfigurasi yang sama untuk aplikasi python saya.
sumber
Di konfigurasi NGINX Anda, Anda telah menyertakan path ke file conf (
/etc/nginx/proxy.conf
) di dalam alocation
. Saya percaya bahwa itu milik luar .sumber
Pertama, mohon untuk cinta semua yang suci, jangan gunakan nginx dan httpd. Ini akan menyebalkan untuk debug.
Kedua, tidak ada dokumen yang pernah saya lihat yang merekomendasikan pengaturan semacam ini.
Gunakan apache atau nginx, ini akan menghilangkan setengah dari masalah Anda.
Periksa juga nginx.conf Anda jika tidak termasuk file dari dir lain, yang mungkin memiliki vhost global yang menimpa Anda.
Anda juga harus mengedit posting Anda untuk menghapus domain dalam konfigurasi apache dekat params WSGI, karena Anda saat ini membocorkan pengaturan produksi Anda.
Hapus situs lain dari situs yang diaktifkan.
sumber