Typo/Rails przez FCGI na dzielonym hostingu (site5)

Typo to, oparty o Rails 2.0, engine blogowy. Wśród głównych cech wylicza się:

Jako, że nie posiadam swojego VPSa – a tylko dzielony hosting (pewnie jak większość ludzi mających swoje miejsce w sieci), postanowiłem odpalić aplikację Typo przez FastCGI. Całość poniższych kroków przeprowadziłem na swoim hostingu u Site5.

Instalacja Typo

Lokacja gemów

Przede wszystkim trzeba ustawić miejsce do instalacji prywatnych gemów. Choćby dlatego, że nie ma dostępu do globalnego repo (a nawet gdyby był to i tak lepiej instalować gemy dla siebie).

Dostęp i kolejność wyszukiwania gemów kontrolują dwie zmienne systemowe: GEM_HOME i GEM_PATH. W zasadzie wszystko co potrzebne w tym kroku opisane jest w Wiki Rails, ale dla przypomnienia: GEM_HOME jest dla zapisu gemów, GEM_PATH jest dla odczytu gemów.

  1. Sprawdzić aktualne ustawienie GEM_PATH:
    gem env
    
  2. Stworzyć katalog na repo i dodać do ścieżki wyszukiwania oraz instalacji:
    mkdir -p ~/lib/ruby/gems/1.8
    export GEM_PATH=~/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8
    export GEM_HOME=~/lib/ruby/gems/1.81
    
  3. Sprawdzić nowe ustawienia:
    gem env
    

    Po tym kroku jako INSTALLATION DIRECTORY powinien widnieć „domowy” katalog gemów, natomiast GEM PATH powinno zawierać min. dwa wpisy — przy czym jako pierwszy powinien być znów „domowy” katalog gemów.

  4. Ustawić ścieżkę dostępu do skryptów gemów:
    export PATH=$PATH:~/lib/ruby/gems/1.8/bin1
    

Instalacja gemów dla Typo (Rails 2.0!)

Tutaj w zasadzie jest już prosto. Wystarczy wpisać:

gem install typo -y --no-rdoc --no-ri2

Tworzenie i konfiguracja podstawowej aplikacji

Tworzenie aplikacji

Żeby nie tworzyć aplikacji w głównym katalogu domowym ~/ można stworzyć sobie podkatalog na aplikacje (zarówno Typo, aplikacje Merba, czy inne aplikacje Rails).

mkdir -p ~/apps
typo install typo

Konfiguracja bazy danych

Na początek trzeba ustawić właściwą konfigurację Typo. Domyślnie Typo zakłada bazę danych w sqlite, ja chciałem mieć MySQL.

typo config ~/apps/typo database=mysql web-server=external

Parametr web-server=external informuje typo, że będzie działało przy pomocy zewnętrznego serwera WWW (apache) zamiast mongrel/mongrel_cluster.

Potem modyfikacja ~/apps/typo/config/database.yml:

login: &login
adapter: mysql
username: database_user
password: "funkysh1t"
socket: /tmp/mysql.sock

development:
<<: *login
database: database_name

production:
<<: *login
database: database_name

Trzeba też nadać poprawne uprawnienia do pliku konfiguracyjnego bazy:

chmod 644 ~/apps/typo/config/database.yml

Konfiguracja środowiska uruchomieniowego

Środowisko

Trzeba wyedytować plik ~/apps/typo/config/environment.rb i odkomentować linię

ENV['RAILS_ENV'] ||= 'production'

i najlepiej tuż pod spodem dopisać:

RAILS_ENV = ENV['RAILS_ENV']

Przekierowanie w .htaccess

Jedną z najważniejszych linii jest linia pierwsza (sic!):

SetEnv RAILS_ENV production

a potem

Options +FollowSymLinks +ExecCGI
RewriteEngine on
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
ErrorDocument 500 "Typo failed"

A sam plik przekierowania dispatch.fcgi już powinien być na miejscu.
Jeśli nie to pewnie jest to dispatch.fcgi.example — wtedy wystarczy zmienić mu nazwę.

Link w subdomenie

I teraz najważniejsze: robimy punkt dostępu do naszego bloga w domenie/subdomenie

ln -s ~/apps/typo/public ~/public_html/subdomena/blog

Ważne: linkujemy do katalogu public, bez ukośnika na końcu!

Uruchomienie

Po wpisanie URLa subdomena.domena.tld/blog/ (zwróć uwagę na ukośnik!) wszystko powinno zabanglać.
Jeśli nie to mamy kilka sposobów na zdiagnozowanie problemu. Od najłatwiejszego:

1. Spojrzeć co siedzi w logach aplikacji (~/apps/typo/log) i plikach błędów serwera
2. Odpalić dispatch.fcgi ręcznie z katalogu public (i zajrzeć w logi)
3. Odpalić z katalogu głównego aplikacji ruby ./script/console

Przypisy

#1 Dobrym pomysłem jest dopisanie obu eksportów do .bashrc czy .zshrc.

#2 Dzielony hosting to nie najlepszy pomysł na środowisko deweloperskie, więc dokumentacja nie jest na tutaj potrzebna.

Komentarze do wpisu "Typo/Rails przez FCGI na dzielonym hostingu (site5)":

Jeszcze nie ma żadnych komentarzy. Twój może być pierwszy.

Dodaj komentarz:

Textile Lite włączony ( szczegółowy opis znaczników ):
*strong* | # lista numerowana | * lista wypunktowana | _em_ | __italic__ | "link":http:// | bq. cytat.