Python 我应该如何在一台服务器上托管多个挂架网站?
我目前有一个在我的服务器上运行的挂架网站,它是使用nginx作为粘贴代理来设置的。在不久的将来,我计划在同一台服务器上托管另一个Pylons站点 如果我要走同样的路线,使用nginx+Paster,这意味着在不同的端口上运行两个Paster实例,然后使用一个nginx服务器作为代理转发器到127.0.0.1:808(1 | 2) 让两台粘贴服务器为两个不同的站点运行似乎是个坏主意。如果我在服务器上有10个挂架站点,这将意味着10个粘贴服务器实例正在运行Python 我应该如何在一台服务器上托管多个挂架网站?,python,web,pylons,paster,Python,Web,Pylons,Paster,我目前有一个在我的服务器上运行的挂架网站,它是使用nginx作为粘贴代理来设置的。在不久的将来,我计划在同一台服务器上托管另一个Pylons站点 如果我要走同样的路线,使用nginx+Paster,这意味着在不同的端口上运行两个Paster实例,然后使用一个nginx服务器作为代理转发器到127.0.0.1:808(1 | 2) 让两台粘贴服务器为两个不同的站点运行似乎是个坏主意。如果我在服务器上有10个挂架站点,这将意味着10个粘贴服务器实例正在运行 > 我认为运行几个PAST实例没有什么
>
我认为运行几个PAST实例没有什么错,但是您应该考虑使用FASCGI(或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设置为“侦听”,例如:
因此,您可以使用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
希望这有帮助。您可以使用一个粘贴器实例启动多个应用程序。下面的链接有一篇很好的文章,解释了如何使用paster的urlmap来实现这一点
[server:main]
use = egg:Flup#fcgi_thread
host = 127.0.0.1
port = 9001