Definindo passageiros com hosts virtuais Apache?

4

Estou configurando um novo servidor no qual pretendo hospedar vários aplicativos Ruby on Rails.

O servidor está executando o Ubuntu 10.04 LTS e eu configurei os hosts virtuais do Apache para que cada aplicativo tenha seu próprio arquivo de configuração disponível no site (apontando para o diretório público do Rails). Eu fiz um link simbólico de sites-enabled/(CONFIG FILE HERE) para sites-available/(CONFIG FILE HERE) .

Sites disponíveis

root@HAH-UBUNTU-GER /etc/apache2/sites-available # ls
default  default-ssl  application1.com  application2.com

Sites ativados (links simbólicos)

root@HAH-UBUNTU-GER /etc/apache2/sites-enabled # ls
000-default  application1.com  application2.com

Mais informações sobre os links simbólicos:

root@HAH-UBUNTU-GER /etc/apache2/sites-enabled # ls -l
total 0
lrwxrwxrwx 1 root root 26 2012-05-04 11:41 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 39 2012-05-04 12:28 application1.com -> ../sites-available/application1.com
lrwxrwxrwx 1 root root 37 2012-05-04 12:09 application2.com -> ../sites-available/application2.com

Eu carreguei todos os arquivos de aplicativo do Rails para /var/www/vhosts/application1.com e me certifiquei de que o arquivo de configuração do Apache esteja apontado para o diretório público.

Bundler, ruby gems etc. funciona, mas não consigo fazer com que o Passenger carregue o aplicativo.

Como de costume, configurei o servidor usando um script bash que contém a seguinte seção relacionada à instalação do Passenger:

# Install and setup the Apache Passenger Module
yes '' | sudo /usr/local/bin/passenger-install-apache2-module

# Add the Passenger config to /etc/apache2/httpd.conf
sudo cat > /etc/apache2/httpd.conf << HTTPD_CONF
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-      3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11
PassengerRuby /usr/local/bin/ruby
HTTPD_CONF

O arquivo completo de configuração do host virtual para application1.com é:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName application1.com
    DocumentRoot /var/www/vhosts/application1.com/public
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/vhosts/application1.com/public>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all

Se isso fizer diferença, estou acessando o site editando meu arquivo de hosts para apontar o endereço IP do servidor nos domínios individuais.

Quando visito o domínio, recebo uma listagem do diretório público:

Eusuponhoqueestoufazendoalgoobviamenteerrado,masnãoconsigoentender.Qualquerajudaseriaapreciada.

Paramaisinformações,oscriptcompletoqueeuusoestáaqui: link

UPDATE

Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 reqtimeout_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK
    
por dannymcc 04.05.2012 / 13:19

1 resposta

3

Com base na documentação , você precisará desativar MultiViews nos sites dos passageiros . Além disso, seu DocumentRoot deve apontar para o diretório que contém o público, ou seja, Passenger verifica se o diretório selecionado contém um aplicativo de passageiro verificando {DocumentRoot}/../config/environment.rb , portanto, verifique se isso está correto.

Se você ainda está perplexo, ative o log e descubra por que ele não funciona acho que você tem um aplicativo Passenger nesse local.

    
por 04.05.2012 / 20:38