2010-09-08 7 views
1

У меня есть один сервер Linux, на котором запущен 3-й сайт на Apache. Назовем их RailsApp1, RailsApp2 и SimpleApp. Оба приложения Rails используют кластер Mongrel. Другое приложение - это всего лишь один файл HTML. У меня есть разные файлы виртуальных хостов в Apache для каждого сайта, а также файлы mongrel_cluster.yml для обоих сайтов Rails (код для всего этого находится внизу).Настройка виртуальных хостов для Rails-приложений на Apache и Mongrel

Со всей настройкой, я могу включить сайты в Apache просто отлично. И я могу запустить кластер Mongrel для каждого сайта Rails просто отлично. И, по сути, посещение сайта www.simpleapp.com и www.railsapp1.com в моем браузере отлично работает. Однако, www.railsapp2.com дает мне массу проблем. Вместо того, чтобы показывать код для railsapp2, сервер возвращает HTML для railsapp1. Если я отключу railsapp1 в Apache, а затем перейдите на сайт www.railsapp2.com, сервер теперь вернет HTML для simpleapp. Только если я отключу оба railsapp1 и railsapp2 в Apache, сервер правильно ответит на запрос по адресу www.railsapp2.com.

Любые мысли о том, почему это может произойти?

SimpleApp в ВХост Файл:

<VirtualHost *:80> 
    ServerName www.simpleapp.com 
    ServerAlias simpleapp.com 
    DocumentRoot /home/nudecanaltroll/public_html/simpleapp 
</VirtualHost> 

RailsApp1 в ВХост Файл:

<VirtualHost *:80> 
    ServerName railsapp1.com 
    DocumentRoot /home/nudecanaltroll/public_html/railsapp1/public 
    RewriteEngine On 
    <Proxy balancer://mongrel1> 
    BalancerMember http://127.0.0.1:5000 
    BalancerMember http://127.0.0.1:5001 
    BalancerMember http://127.0.0.1:5002 
    </Proxy> 
    # Timeout in 30 seconds 
    ProxyTimeout 30 
    # Make sure people go to www.railsapp1.com, not railsapp1.com 
    RewriteCond %{HTTP_HOST} ^railsapp1\.com$ [NC] 
    RewriteRule ^(.*)$ http://www.railsapp1.com$1 [R=301,NE,L] 
    # Redirect all non-static requests to thin 
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
    RewriteRule ^/mongrel1(.*)$ balancer://mongrel1%{REQUEST_URI} [P,QSA,L] 
    # Proxy Stuff 
    ProxyPass/balancer://mongrel1/ 
    ProxyPassReverse/balancer://mongrel1/ 
    ProxyPreserveHost on 
    <Proxy *> 
    Order deny,allow 
    Allow from all 
    </Proxy> 
    # Custom log file locations 
    ErrorLog /home/nudecanaltroll/public_html/railsapp1/log/error.log 
    CustomLog /home/nudecanaltroll/public_html/railsapp1/log/access.log combined 
</VirtualHost> 

RailsApp2 в ВХост Файл:

<VirtualHost *:80> 
    ServerName railsapp2.com 
    DocumentRoot /home/nudecanaltroll/public_html/railsapp2/public 
    RewriteEngine On 
    <Proxy balancer://mongrel2> 
    BalancerMember http://127.0.0.1:6000 
    BalancerMember http://127.0.0.1:6001 
    BalancerMember http://127.0.0.1:6002 
    </Proxy> 
    # Timeout in 30 seconds 
    ProxyTimeout 30 
    # Make sure people go to www.railsapp2.com, not railsapp2.com 
    RewriteCond %{HTTP_HOST} ^railsapp2\.com$ [NC] 
    RewriteRule ^(.*)$ http://www.railsapp2.com$1 [R=301,NE,L] 
    # Redirect all non-static requests to thin 
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
    RewriteRule ^/mongrel2(.*)$ balancer://mongrel2%{REQUEST_URI} [P,QSA,L] 
    # Proxy Stuff 
    ProxyPass/balancer://mongrel2/ 
    ProxyPassReverse/balancer://mongrel2/ 
    ProxyPreserveHost on 
    <Proxy *> 
    Order deny,allow 
    Allow from all 
    </Proxy> 
    # Custom log file locations 
    ErrorLog /home/nudecanaltroll/public_html/railsapp2/log/error.log 
    CustomLog /home/nudecanaltroll/public_html/railsapp2/log/access.log combined 
</VirtualHost> 

RailsApp1 в mongrel_cluster.yml Файл:

--- 
address: 127.0.0.1 
log_file: log/mongrel.log 
port: 5000 
cwd: /home/nudecanaltroll/public_html/railsapp1 
environment: production 
pid_file: /home/nudecanaltroll/public_html/railsapp1/tmp/pids/mongrel.pid 
servers: 3 

RailsApp2 в mongrel_cluster.yml Файл:

--- 
address: 127.0.0.1 
log_file: log/mongrel.log 
port: 6000 
cwd: /home/nudecanaltroll/public_html/railsapp2 
environment: production 
pid_file: /home/nudecanaltroll/public_html/railsapp2/tmp/pids/mongrel.pid 
servers: 3 

ответ

0

Я понял это. По неизвестным мне причинам мне нужно было установить ServerAlias ​​для RailsApp2, а также добавить «www». перед именем ServerName. Таким образом, в верхней части файла ВХост railsapp2.com теперь выглядит следующим образом:

<VirtualHost *:80> 
    ServerName www.railsapp2.com 
    ServerAlias railsapp2.com 
    ... 

По какой-то причине, RailsApp1 не требует этих изменений, чтобы правильно функционировать.

Смежные вопросы