Passageiro Apropriado + Permissões do Apache para corrigir o erro “Nenhum arquivo ou diretório - config / environment.rb”

6

Estou tendo um problema com o Passenger não poder iniciar devido a um problema aparentemente comum no qual o Passenger afirma: Nenhum arquivo ou diretório - config / environment.rb.

Eu pesquisei a Web em alta e baixa e isso parece ser um problema relacionado a permissões. No meu entender, o Passenger é executado como o proprietário do arquivo config.ru e config / environment.rb. No meu caso, esse proprietário é "admin". Estou executando a raiz do aplicativo no diretório inicial do usuário administrador. Então eu acredito que tenho as permissões corretas definidas usando: %código% e sudo chown -R admin:admin /home/admin/www

em que a raiz do aplicativo está localizada em: / home / admin / www / app

Aqui está o meu arquivo de configuração do servidor virtual:

 <VirtualHost *:80>
    ServerName track.example.com
    DocumentRoot /home/admin/www/app/current/public
    <Directory /home/admin/www/app/current/public>
    Options FollowSymLinks
    AllowOverride none
    Order allow,deny
    Allow from all
    </Directory>
    PassengerResolveSymlinksInDocumentRoot on
    RailsBaseURI /
    PassengerAppRoot /home/admin/www/app
    RailsEnv production   
    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel debug
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Estou executando o Ubuntu 12.0.4, Rails 3.2.8, Ruby 1.9.3, Passenger 3.0.18, Apache 2

Obrigado pela sua ajuda.

    
por acoustic_north 16.11.2012 / 05:13

3 respostas

0

O Passenger é um módulo para o Apache, sendo executado como parte do processo Apache. Isso significa que o usuário do Apache precisa ter as permissões para o projeto. Da documentação do Passenger para o Apache :

You may also need to tweak your file/folder permissions. Make sure that the following folders are readable and executable by Apache:

* this public folder.

* the application’s config folder.

* all parent folders. That is, /webapps/rackapp and /webapps must also be readable and executable by Apache.
    
por 16.11.2012 / 06:04
0

Sempre que tenho problemas, não entendo, normalmente reinicio uma unidade nova no meu linode e rapidamente faço uma instalação mínima para ver se minha lista de etapas funciona. Às vezes, minhas outras ações no servidor causariam problemas, por isso é importante que a instalação mínima instalada funcione antes de analisar outros fatores.

Quanto ao Passenger, você não pode confiar em suas mensagens de erro geradas 100%. Às vezes você pode estar perdendo um arquivo index.html ou um arquivo de visão, mas se você ler o erro do passageiro, é como se você tivesse cometido dez coisas diferentes.

Recentemente, o Passenger funcionou do zero, então aqui está uma lista do que eu fiz:

  • Não toquei em nada no que diz respeito à permissão (além do que você fez_fiz a etapa CHOWN; não há etapa CHMOD).
  • Não foi necessário tocar em config.ru ou config / environments.rb
  • Cleared tmp usando rm -rf /tmp/*
  • eu instalei do gemfile (não do tarball); correu o gem install passenger cmd (com um swap de 2GB).
  • Ran o passenger-install-apache2-module cmd. Passenger dará 5 linhas de código para colar no httpd.conf no final. Fez isso.

A configuração do Virtualhost é assim:

<VirtualHost *:80>
    ServerName www.domain.com
    DocumentRoot /var/www/html/app/public
    <Directory /var/www/html/app/public>
        Allow from all
        Options -MultiViews
    </Directory>
</VirtualHost>

Reinicie o apache e pronto!

    
por 04.09.2014 / 15:06
0

Seu PassengerAppRoot está errado. Você especificou /home/admin/www/app , mas seu aplicativo está, na verdade, em /home/admin/www/app/current . É por isso que o passageiro não consegue encontrá-lo.

A resolução é para corrigir a configuração.

    PassengerAppRoot /home/admin/www/app/current
    
por 04.09.2014 / 17:29