Tôi muốn chạy nhiều máy chủ ảo qua nginx, mỗi máy chủ phân phối ứng dụng django khác nhau thông qua fcgi. Điều này có thể không? Nếu vậy, có ai có tài nguyên tốt về nơi/làm thế nào để bắt đầu? Các tài liệu nginx dường như chủ yếu là các ví dụ, nhưng không có cấu hình cụ thể nào tôi đang cố gắng ...làm thế nào để nginx máy chủ ảo + fcgi cho django?
Trả lời
Đã có hai bài đăng trên blog khá tốt về thiết lập nginx, nhưng cả hai đều sử dụng nginx để phân phối tĩnh (hoặc lưu trữ) nội dung và apache + mod_wsgi để phục vụ Django. Tôi thích điều này bản thân mình bởi vì mod_wsgi làm cho quá trình quản lý dễ dàng hơn rất nhiều so với fcgi (trong số các lợi thế khác).
Dù sao, đây là những bài viết:
EDIT: ok tôi đào ra một file tar cũ với nginx + django + ảo file máy chủ cấu hình của tôi từ một năm trước, trước khi tôi chuyển sang apache + mod_wsgi. Đây là một máy phát triển, vì vậy bạn sẽ muốn điều chỉnh # của người lao động, kết nối, vv
nginx.conf:
user nginx nginx;
worker_processes 2;
error_log /var/log/nginx/error_log info;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain text/html application/x-javascript text/xml text/css;
output_buffers 4 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
ignore_invalid_headers on;
include vhosts.d/*.conf;
}
Vì vậy, nginx.conf chính bao gồm tất cả các tập tin trong vhosts.d/thư mục con. Một trong những tác phẩm của tôi là phục vụ cho PHP trên localhost (có lẽ chạy phpMyAdmin) như thế này:
vhosts.d/00_localhost:
server {
listen 127.0.0.1:80;
server_name localhost;
access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log info;
root /var/www/localhost/htdocs;
index index.php index.html index.htm;
location ~ .php$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/localhost/htdocs$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}
}
Và sau đó một máy chủ phát triển Django địa phương như thế này:
50_django.local:
server {
listen 80;
server_name django.local;
access_log /var/log/nginx/django.access.log main;
error_log /var/log/nginx/django.error.log info;
root /var/www/django.local;
location ~* ^.+\.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ {
access_log off;
break;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|bmp|js)$ {
expires 30d;
break;
}
location/{
fastcgi_pass unix:/var/www/django.local/server.sock;
include fastcgi.conf;
}
location ^~ /admin/ {
fastcgi_pass unix:/var/www/django.local/server.sock;
include fastcgi.conf;
access_log off;
auth_basic "Welcome to admin";
}
}
Cuối cùng, mỗi o f các máy chủ ảo bao gồm fastcgi.conf cho mỗi vị trí.
fastcgi.conf:
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_SOFTWARE "nginx";
fastcgi_param GATEWAY_INTERFACE "CGI/1.1";
fastcgi_param UID_SET $uid_set;
fastcgi_param UID_GOT $uid_got;
Tôi không chắc chắn tất cả những điều trên đã được yêu cầu, nhưng đó là một một trong những lý do tôi chuyển sang mod_wsgi ... hỗ trợ vượt trội và tài liệu hướng dẫn :)
Kể từ khi câu hỏi này được hỏi một người nào đó đã tạo ra một gói django cài đặt pip mà sẽ tạo ra một file apache hoặc nginx vhost cho bạn từ settings.py của bạn
pip install django-vhost
Kiểm tra xem tại đây: https://bitbucket.org/djangostars/django-vhost
- 1. Làm thế nào để chạy nginx + python (không có django)
- 2. cấu hình tên miền nginx trên máy chủ ảo
- 3. Làm thế nào để sao chép/sao chép một môi trường ảo từ máy chủ web
- 4. Thiết lập máy chủ ảo Django. Apache mod_wsgi
- 5. Tại sao Django fcgi lại chết? Làm thế nào tôi có thể tìm ra?
- 6. cách truy cập máy chủ phát triển django trên máy ảo từ máy tính thực tế
- 7. Làm thế nào để dừng máy chủ mongodb trên Windows?
- 8. Làm thế nào để máy chủ nhiều trang web với nginx/hành khách?
- 9. Làm cách nào để cho phép yêu cầu tệp PUT trên máy chủ Nginx?
- 10. Làm thế nào để buộc tải về tập tin trong trình duyệt, máy chủ nginx
- 11. error_log trên Máy chủ ảo?
- 12. Django và fcgi - câu hỏi đăng nhập
- 13. nginx - Tôi có thể thêm máy chủ ảo mới mà không cần khởi động lại máy chủ không?
- 14. Cách để nginx luôn trả về 404 tùy chỉnh cho máy chủ lưu trữ mặc định
- 15. Làm thế nào để kích hoạt xdebug với nginx?
- 16. Tại sao nghe `443 default_server ssl` làm việc cho nhiều tên máy chủ trong nginx?
- 17. Sử dụng mod_rewrite cho Máy chủ ảo Mimic SSL?
- 18. máy chủ web nginx và apache
- 19. Thiết lập Máy chủ ảo Wamp
- 20. PHP - một open_basedir khác nhau cho mỗi máy chủ ảo
- 21. Làm thế nào để cấu hình nginx để tự động chuyển hướng đến tên máy chủ chính?
- 22. Máy chủ Django vĩnh viễn
- 23. Làm cách nào để sử dụng xdebug để gỡ lỗi chỉ một máy chủ ảo?
- 24. Máy ảo - Azure, thiết lập máy chủ web
- 25. Làm thế nào để ghi đè lên máy chủ phát triển tập tin tĩnh django?
- 26. Làm thế nào để bạn theo dõi 500 lỗi máy chủ với Apache + mod_python + Django?
- 27. Cách sử dụng máy chủ IIS trong máy ảo trên máy chủ Mac?
- 28. Triển khai Django trên máy chủ apache
- 29. Apache bí danh ảo máy chủ
- 30. Cấu hình cho Django, Apache và Nginx
Tôi chưa bao giờ chạm vào loại công việc này, nhưng con người, câu trả lời là gì. –