47.4.12.2. Instalace pomocí rubygems

Jsou použité lokální gemy které nejsou v sytému.

Opět jako v předchozím případě, musíme mít nainstalovánu vývojovou verzi ruby a pár dalších balíčků. Například pro ruby 1.8 je to

# aptitude install ruby1.8-dev make g++ apache2-prefork-dev libapr1-dev libaprutil1-dev

A nyní překlad phusion-passenger modulů pro Apache a Nginx.

# cd /usr/local/gems
# source setvars
# gem install passenger
# passenger-install-apache2-module

V průbehu instlace se objeví text

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/gems/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/gems/gems/passenger-2.2.11
   PassengerRuby /usr/bin/ruby1.8

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:

   <VirtualHost *:80>
      ServerName www.yourhost.com
      DocumentRoot /somewhere/public    # <-- be sure to point to 'public'!
      <Directory /somewhere/public>
         AllowOverride all              # <-- relax Apache security settings
         Options -MultiViews            # <-- MultiViews must be turned off
      </Directory>
   </VirtualHost>

And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

  /usr/local/gems/gems/passenger-2.2.11/doc/Users guide Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
http://www.modrails.com/

Vytvořil jsem si tedy konfigurační soubor pro Apache2 /etc/apache2/conf.d/passenger

LoadModule passenger_module /usr/local/gems/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/gems/gems/passenger-2.2.11
PassengerRuby /usr/bin/ruby1.8

Pokud používáme RubyGems instalované v uživatelském prostoru, nebo v lokálním prostoru, tedy oddělené od systémových RubyGems, musíme provést pár úprav. Nejdříve samotné spouštění ruby. Musíme si vytvořit obálku, vlastní skript, pro spouštění ruby, ve kterém nastavíme správně cesty ke knihovnám. Tuto si můžeme uložit například do /usr/local/gems/bin/ruby-wrapper s následujícím obsahem.

#!/bin/bash
export RUBYLIB=/usr/local/gems/lib
exec "/usr/bin/ruby1.8" "$@"

Můžeme si předefinovat více parametrů, jako je na stránce Passing environment variables to Ruby from Phusion Passenger.

Poznámka

Nemělo by v RUBYLIB být /usr/local/gems/lib:/usr/lib/ruby/1.8 ?

Další úpravou je konfigurace passenger modulu v Apache2. Zde musíme spouštět ruby přes náš ruby-wrapper. V souboru /etc/apache2/conf.d/passenger upravíme direktivu PassengerRuby.

# Load Passenger module and configure it.
LoadModule passenger_module /usr/local/gems/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/gems/gems/passenger-2.2.11
PassengerRuby   /usr/local/gems/bin/ruby-wrapper

Poslední úpravou je nastavení prostředí v konfiguraci virtuálního webu

<VirtualHost *:80>
        …
        SetEnv GEM_HOME /usr/local/gems
        …
<VirtualHost>
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .