2010-10-13 110 views
0

我目前在我的服務器上運行了一個使用nginx作爲Paster代理的網站。在不久的將來,我計劃在同一臺服務器上託管另一個Pylons站點。我應該如何在一臺服務器上託管多個Pylons網站?

如果我要走相同的路線並使用nginx + Paster,那就意味着在不同的端口上運行兩個貼圖實例,然後使用一個nginx服務器作爲代理轉發器到127.0.0.1:808(1 | 2) 。

爲兩個不同的站點運行兩個貼片服務器似乎是個壞主意。如果我在服務器上有10個Pylons站點,則意味着10個Paster服務器實例正在運行...

什麼是更好的解決方案?

回答

1

我認爲運行少量貼圖實例沒有問題,但您應該考慮使用FastCGI(或wsgi)和虛擬主機,因爲它更適合「生產環境」。 例FastCGI的:

pid   /var/run/nginx.pid; 
user   www; 
worker_processes 1; 

events { 
    worker_connections 1024; 
} 

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

    sendfile  on; 
    gzip   on; 
    keepalive_timeout 65; 

    # First site 
    server { 
     listen *:443; 
     server_name  first.example.com; 

     ssl   on; 
     ssl_certificate  /etc/www/cert.pem; 
     ssl_certificate_key /etc/www/key.pem; 
     ssl_session_timeout 5m; 
     ssl_protocols  SSLv3 TLSv1; 

     location/{ 
      fastcgi_pass   127.0.0.1:9000; 
      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 REMOTE_ADDR $remote_addr; 
      fastcgi_param SERVER_ADDR $server_addr; 
      fastcgi_param SERVER_PORT $server_port; 
      fastcgi_param SERVER_NAME $server_name; 
      fastcgi_param SERVER_PROTOCOL $server_protocol; 
      fastcgi_param HTTPS  on; 
      fastcgi_pass_header  Authorization; 
      fastcgi_intercept_errors off; 
     } 
     access_log /var/log/first.access.log main; 
     error_log /var/log/first.error.log; 
    } 
    # Second site 
    server { 
     listen *:443; 
     server_name  second.example.com; 

     ssl   on; 
     ssl_certificate  /etc/www/cert1.pem; 
     ssl_certificate_key /etc/www/key1.pem; 
     ssl_session_timeout 5m; 
     ssl_protocols  SSLv3 TLSv1; 

     location/{ 
      fastcgi_pass   127.0.0.1:9001; 
      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 REMOTE_ADDR $remote_addr; 
      fastcgi_param SERVER_ADDR $server_addr; 
      fastcgi_param SERVER_PORT $server_port; 
      fastcgi_param SERVER_NAME $server_name; 
      fastcgi_param SERVER_PROTOCOL $server_protocol; 
      fastcgi_param HTTPS  on; 
      fastcgi_pass_header  Authorization; 
      fastcgi_intercept_errors off; 
     } 
     access_log /var/log/second.access.log main; 
     error_log /var/log/second.error.log; 
    } 
} 

現在,你得網站:

first.example.com -> localhost:9000 
second.example.com -> localhost:9001 

您也可以在 「聽」 設置IP地址,如:

listen 192.168.1.1:443; 
listen 192.168.1.2:443; 

所以你能使用IP而不是DNS名稱。

對於主塔應用程序,你應該改變配置的FastCGI:

[server:main] 
use = egg:Flup#fcgi_thread 
host = 127.0.0.1 
port = 9000 

的第一個主機,而對於第二:

[server:main] 
use = egg:Flup#fcgi_thread 
host = 127.0.0.1 
port = 9001 

希望這有助於。

相關問題