Quando eu inicialmente postei isso, eu estava tentando economizar o tempo de percorrer este caminho para a configuração apenas para que não funcionasse. Depois de alguns dias eu apenas dei uma chance e deu certo. O que eu fiz foi:
Crie um usuário para instalar o passageiro. Eu suspeito que você poderia usar root
para isso, mas eu criei um usuário autônomo de nível de administrador chamado passenger
. Eu também desativei todo o acesso remoto para este usuário.
sudo useradd -m -s /bin/bash passenger
Mude para o novo usuário passenger
e instale rvm
e use-o para instalar o meu rubi padrão preferido ( 1.9.3-stable
):
su - passenger
curl -L https://get.rvm.io | bash
rvm install 1.9.3
Instale o passageiro e o módulo do apache:
gem install passenger
passenger-install-apache2-module
Adicione os arquivos passenger
mod a /etc/apache2/mods-available
... O arquivo .load
:
# /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /home/passenger/.rvm/gems/ruby-1.9.3-p429/gems/passenger-4.0.5/libout/apache2/mod_passenger.so
O arquivo .conf
:
# /etc/apache2/mods-available/passenger.conf
PassengerRoot /home/passenger/.rvm/gems/ruby-1.9.3-p429/gems/passenger-4.0.5
PassengerDefaultRuby /home/passenger/.rvm/wrappers/ruby-1.9.3-p429/ruby
PassengerUserSwitching on
PassengerDefaultUser www-data
PassengerDefaultGroup www-data
# Any other global-only configuration
Então eu habilitei o módulo e executei um teste de configuração, seguido por um recarregamento se for bem sucedido
sudo a2enmod passenger
sudo apache2ctl configtest
sudo service apache2 graceful # if Syntax Ok from previous command
Depois disso, configurei meu host virtual conforme necessário ... exemplo:
<VirtualHost *:80>
ServerName appname.yourdomain.com
ServerAdmin [email protected]
DocumentRoot /home/appuser/path/to/doc/root
PassengerSpawnMethod smart
PassengerPoolIdleTime 300
PassengerMaxRequests 500
PassengerStatThrottleRate 5
PassengerMinInstances 2
PassengerRuby /home/appuser/.rvm/rubies/ruby-1.9.3-p429/bin/ruby
<Directory "/home/appuser/path/to/doc/root">
Options Indexes -ExecCGI FollowSymLinks -MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Como PassengerUserSwitching
é on
e PassengerRuby
pertence a um usuário diferente, o passageiro executará automaticamente o aplicativo como user:group
. No entanto, existem diretivas específicas de passageiro que você pode usar para definir usuário e grupo no nível do vhost. Se os que precisam corresponder ao dono do PassengerRuby
i não sabem ao certo.
Artigos / documentos que ajudaram:
- Vários Rubis com um único Passageiro
- Como instalar o Redmine no Ubuntu 11.10 Server usando Apache e mod_passenger com opções de melhoria de desempenho (usado principalmente para ajudar a configurar as configurações de tipo de desempenho)
- Referência de configuração do Passageiro de Phusion (Apache)