Olen etsinyt kätevintä tapaa ajaa Ruby on Rails -sovelluksia Ubuntussa, ja se näyttää olevan Thin. (Yhtenä vaatimuksena on, ettei tarvitse käyttää Apachea, josta olen luopunut kokonaan.)

Thin on Rails-sovelluspalvelin, joka pyörittää Rails-sovelluksia omissa prosesseissaan. Ne kuuntelevat UNIX-socketteja tai TCP-portteja, joiden kautta HTTP-palvelin lähettää pyynnöt käsiteltäväksi.

HTTP-palvelimena toimii parhaiten Nginx. Siihen on helppo lisätä virtuaalisaitteja, jotka proxyttavat pyynnöt Thinille. Jos kyse on raskaammasta palvelusta, Thin-prosesseja voi olla useita per sovellus, jolloin Nginx kuormantasaa pyynnöt niiden välillä.

Thin+Nginx-yhdistelmän etu on siinä, että palvelimella ei tarvitse kääntää mitään erillisiä lähdekoodipaketteja. Molemmat ovat saatavilla Ubuntun vakiopaketteina. Esimerkiksi Passenger for Nginx taas vaatii Nginxin kääntämisen uudelleen lähdekoodista.

Thin toimii käytännössä niin, että jokaiselle Rails-sovellukselle generoidaan konfiguraatiotiedosto /etc/thin-hakemistoon. Niiden perusteella Thin osaa sitten käynnistellä tarvittavat prosessit automaattisesti myös palvelimen käynnistyessä uudelleen.

Tämä generointi onnistuu helposti yhdellä komentorivillä ja se tarvitsee tehdä vain kertaalleen kutakin sovellusta kohden. Vaivannäkö ja monimutkaisuus on siis aika marginaalista, kun HTTP-palvelimeen pitää kuitenkin määritellä uusi virtuaalisaitti jokaista sovellusta varten.

Published 14.1.2011