2012-07-30 31 views
5

Tôi đang cố gắng phục vụ hai trang web Django sử dụng Nginx.Phục vụ nhiều trang web Django với Nginx với UWSGI

Tôi có thể phân phát hoặc không có vấn đề gì, nhưng nếu tôi kích hoạt cả hai, nó sẽ gửi cả hai url đến một trang web. Đây là lần đầu tiên tôi sử dụng Nginx, tôi thường sử dụng Apache để chịu đựng với tôi.

Tôi đã có hai trang web trong các trang web cho phép mà trông như thế này:

site1.com:

server{ 
    server_name www.site1.com; 
    listen 69.164.211.85:80; 
    access_log /var/www/site1.env/logs/access.log; 
    error_log /var/www/site1.env/logs/error.log; 

    location /static/ { 
      # Point this wherever the static files for your django app are $ 
      autoindex on; 
      alias /var/www/site1.env/Site1/static/; 
    } 

    location/{ 
     uwsgi_pass 127.0.0.1:3031; 
     include  uwsgi_params; 
     uwsgi_param UWSGI_APPID site1; 
     uwsgi_param UWSGI-FILE /var/www/site1.env/Site1/wsgi/site1_wsgi.py; 
    } 
} 

site2.net

server{ 
     server_name www.site2.net; 
     listen 69.164.211.85:80; 
     access_log /var/www/site2.env/logs/access.log; 
     error_log /var/www/site2.env/logs/error.log; 

     location /static/ { 
       # Point this wherever the static files for your django app are $ 
       autoindex on; 
       alias /var/www/site2.env/Site2/static/; 
     } 

     location/{ 
      uwsgi_pass 127.0.0.1:3032; 
      include  uwsgi_params; 
      uwsgi_param UWSGI_APPID site2; 
      uwsgi_param UWSGI-FILE /var/www/site2.env/Site2/wsgi/site2.py; 
     } 

} 

Tôi cũng đang chạy hai trường hợp của UWSGI bắt đầu với tập lệnh này:

Trang web 1:

description "uWSGI server" 

start on runlevel [2345] 
stop on runlevel [!2345] 

respawn 
exec /usr/local/bin/uwsgi \ 
--home /var/www/site1.env/Site1/ \ 
--socket 127.0.0.1:3031 \ 
--chmod-socket \ 
--module site1_wsgi \ 
--pythonpath /var/www/site1.env/Site1/wsgi \ 
-H /var/www/site1.env 

Site 2:

description "uWSGI server" 

start on runlevel [2345] 
stop on runlevel [!2345] 

respawn 
exec /usr/local/bin/uwsgi \ 
--home /var/www/site2.env/Site2/ \ 
--socket 127.0.0.1:3032 \ 
--chmod-socket \ 
--module site2 \ 
--pythonpath /var/www/site2.env/Site2/wsgi \ 
-H /var/www/sit2.env 

Đây là những gì tập tin nginx.conf của tôi trông giống như:

user www-data; 
worker_processes 4; 
pid /var/run/nginx.pid; 

events { 
     worker_connections 768; 
     # multi_accept on; 
} 

http { 

    ## 
    # Basic Settings 
    ## 

    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 
    # server_tokens off; 

    # server_names_hash_bucket_size 64; 
    # server_name_in_redirect off; 

    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    ## 
    # Logging Settings 
    ## 

    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    ## 
    # Gzip Settings 
    ## 

    gzip on; 
    gzip_disable "msie6"; 

    # gzip_vary on; 
    # gzip_proxied any; 
    # gzip_comp_level 6; 
    # gzip_buffers 16 8k; 
    # gzip_http_version 1.1; 
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/$ 

    ## 
    # Virtual Host Configs 
    ## 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

    ## 
# Logging Settings 
    ## 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    ## 
    # Gzip Settings 
    ## 

    gzip on; 
    gzip_disable "msie6"; 

    # gzip_vary on; 
    # gzip_proxied any; 
    # gzip_comp_level 6; 
    # gzip_buffers 16 8k; 
    # gzip_http_version 1.1; 
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/$ 

    ## 
    # Virtual Host Configs 
    ## 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

Tôi đã có thể nghĩ uwsgi_pass được thiết lập đến các cảng khác nhau sẽ ngăn cản họ đi đến cùng một nhưng rõ ràng tôi đang thiếu cái gì khác. Tôi đánh giá cao sự giúp đỡ nào, cảm ơn!

Trả lời

3

Ah, có thể là do tôi không bao gồm tên máy chủ mà không có www. khi tôi làm điều đó có vẻ như nó hoạt động.

+0

Tôi tự hỏi những gì xử lý các yêu cầu nếu bạn gọi mà không có 'www.' với các thiết lập ở trên? Bạn có mặc định 'server {server_name _; } 'định nghĩa? – Tisho

+1

@Tisho Không, tôi không thể tắt mặc định. Tôi có cảm giác nó đang gửi nó đến cái đã hoạt động trước. – DNN

1

Cấu hình nginx có vẻ ổn với tôi. Tôi đã thực hiện một thử nghiệm với cùng một mã (hai trang khác nhau trỏ đến các cổng khác nhau) và bắt đầu một trình lắng nghe trên các cổng - và mỗi trang web đi đến cổng được chỉ định.

Tôi có một số nghi ngờ về cấu hình uwsgi và đặc biệt hơn đối với cài đặt môi trường/đường dẫn. Hãy thử như sau - tạo ra một tập tin uwsgi1.conf, và dán sau đó:

[uwsgi] 
socket = 127.0.0.1:3031 
master = true 
processes = 8 
env = DJANGO_SETTINGS_MODULE=site1.settings 
chdir = /var/www/site1.env/Site1/ 
pythonpath = /var/www/site1.env/ 
module = django.core.handlers.wsgi:WSGIHandler() 
-H /var/www/site1.env 

và một giây uwsgi2.conf với các nội dung sau:

[uwsgi] 
socket = 127.0.0.1:3032 
master = true 
processes = 8 
env = DJANGO_SETTINGS_MODULE=site2.settings 
chdir = /var/www/site2.env/Site2/ 
pythonpath = /var/www/site2.env/ 
module = django.core.handlers.wsgi:WSGIHandler() 
-H /var/www/site2.env 

và thay đổi các giá trị fror env /, chdir, PYTHONPATH Nếu cần thiết. Sau đó, bắt đầu các trang web dưới dạng:

respawn 
exec /usr/local/bin/uwsgi --ini /path/to/uwsgi1.conf 

uwsgi2.conf cho mục thứ hai.

+0

Tôi vừa mới làm điều đó và vẫn gặp phải vấn đề tương tự. Có điều gì khác mà tôi có thể bị mất không? – DNN

Các vấn đề liên quan