section id="rails.apache2.fcgid"
Fcgid je náhrada, respektive následník mod-fcgi.
Nejdříve tedy instalace a „konfigurace“ fcgid. Nainstalujeme balíčky libapache2-mod-fcgid a libfcgi-ruby.
#
aptitude install apache2 libapache2-mod-fcgid libfcgi-ruby
Pokud nemáme povolené, povolíme následující moduly v Apache a znovu nahrajeme konfiguraci Apache.
#
a2enmod ssl#
a2enmod rewrite#
a2enmod suexec#
a2enmod include#
a2enmod fcgid#
/etc/init.d/apache2 force-reload
#
aptitude install libmysql-ruby
A to je vše, co potřebujeme. Další konfigurace jsou již v souvislosti s konkrétními aplikacemi v Rails. Předtím, než k těmto konfiguracím přistoupím, popíši model který používám.
Potřeboval jsem mít všechny aplikace na jednom serveru. Myšleno všechny přístupné pod jednou adresou serveru například www.example.com. Každá aplikace má na tomto serveru vlastní adresář. Já adresáře aplikací umístňuji do kořene serveru, takže mají adresy jako www.example.com/app1, www.example.com/app2 atd. Vlastní program a data aplikací jsou umístněny v /usr/local/share/rails-app/app1
, /usr/local/share/rails-app/app2
…
Nejdříve tedy ukázková aplikace test pro odzkoušení konfigurace.
Pro následující řádky, příkazy zadávané za výzvou $
jsou v kontextu uživatele www-data.
#
mkdir -p /usr/local/share/rail-app/test#
chown www-data /usr/local/share/rail-app/test$
rails /usr/local/share/rails-app/test
Nejdříve si ověříme funkčnost aplikace ve vývojvém prostředí serveru WEBrick.
$
cd /usr/local/share/rails-app/test$
script/server
Nasměrujeme svůj prohlížeč na adresu http://localhost:3000. Zde uvidíme uvítací stránku aplikace. Nyní WEBrick server ukončíme a nakonfigurujeme Apache. Do souboru /etc/apache2/sites-available/default
kde je konfigurace „hlavního virtuálního serveru“ vložíme řádky definující naši testovací aplikaci. Pro přehlednost nejlépe někam na konec sekce <VirtualHost>
.
NameVirtualHost * <VirtualHost *> ⋮ # Konfigurace zkušební Rails aplikace test. Alias /test/ "/usr/local/share/rails-app/test/public/" Alias /test "/usr/local/share/rails-app/test/public/" <Directory /usr/local/share/rails-app/test/public> Options ExecCGI FollowSymLinks AllowOverride All Order Allow,Deny Allow From All </Directory> </VirtualHost>
Upravenou konfiguraci apache nahrajeme.
#
/etc/init.d/apache2 reload
A do prohlížeče zadáme adresu http://localhost/test/index.html. Nyní vidíme opět uvítací stránku aplikace. Rozkliknutím zjistíme že ještě není vše úplně v pořádku. Chybí nám nastavení aplikace pro FCGI a rovněž nastavení kořenového adresáře aplikace. Toto učiníme v souboru /usr/local/share/rails-app/test/public/.htaccess
. Nejdříve FCGI. Hned na druhém řádku souboru je nastavení ovladače pro fcgi skripty. Toto upravíme z původního
AddHandler fastcgi-script .fcgi
na
AddHandler fcgid-script .fcgi
Standardne je aplikace nakonfigurována na cgi. Přehození na FCGI učiníme v pravidle
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
které přepíšeme na
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
Protože naše není jako taková v kořenu serveru, ale ve vlastním adresáři, musíme tuto okolnost v konfiguraci také zohlednit. Vyhledáme zakomentovaný řádek
# RewriteBase /myrailsapp
a přepíšeme na
RewriteBase /test
Pokud si nyní rozklikneme
, vidíme již vše bez chyby.Konfigurace aplikace tedy znamená zahrnout do sekce <VirtualHost> souboru /etc/apache2/sites-available/default
blok příkazů:
# Konfigurace Rails aplikaceapp
Alias /app
/ "/usr/local/share/rails-app/app
/public/" Alias /app
"/usr/local/share/rails-app/app
/public/" <Directory "/usr/local/share/rails-app/app
/public"> Options ExecCGI FollowSymLinks AllowOverride All Order Allow,Deny Allow From All </Directory>
Na straně aplikace pak musí být v souboru .../rails-app/
předefinovány či přidány řádky:app
/public/.httaccess
AddHandler fcgid-script .fcgi
RewriteBase /app
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]