Как разместить несколько веб-сайтов Pylons на одном сервере?

В настоящее время на моем сервере работает один веб-сайт Pylons, который настроен с использованием nginx в качестве прокси-сервера для Paster. В ближайшем будущем я планирую разместить еще один сайт Pylons на том же сервере.

Если бы я пошел по тому же пути и использовал nginx+Paster, это означало бы запуск двух экземпляров paster на разных портах, а затем использование одного сервера nginx в качестве прокси-сервера пересылки на 127.0.0.1:808(1|2).

Кажется плохой идеей иметь два сервера пастера, работающих для двух разных сайтов. Если бы у меня было 10 сайтов Pylons на сервере, это означало бы, что запущено 10 экземпляров сервера Paster...

Какое решение лучше?


person dave    schedule 13.10.2010    source источник


Ответы (2)


Я думаю, что нет ничего плохого в запуске нескольких экземпляров пастера, но вам следует подумать об использовании 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.

Для приложения Pylons вы должны изменить конфигурацию на 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

Надеюсь это поможет.

person Maciej Kucharz    schedule 13.10.2010

Вы можете использовать один экземпляр вставки для запуска нескольких приложений. По ссылке ниже есть хорошая статья, объясняющая, как использовать urlmap пастера для достижения этой цели.

http://countergram.com/pylons-virtual-host-multiple-domain

person Kashif    schedule 22.03.2011