Správa linuxového serveru: Zprovoznění Ruby aplikací s RVM, Thin a Nginx

Podobné dokumenty
Správa linuxového serveru: Redmine: Thin a Nginx

Nginx v roli web serveru

Správa linuxového serveru: Webová rozhraní k poště (Squirrelmail a Roundcube)

Správa linuxového serveru: DNS a DHCP server dnsmasq

Nginx aneb jde to i bez Apache

INSTALACE SOFTWARE A AKTIVACE PRODUKTU

v. 2425a Jak si na PC vypěstovat HTTP (WWW, Web) server a jak ho používat (snadno a rychle) by: Ing. Jan Steringa

QuarkXPress soubor ReadMe

QuarkXPress soubor ReadMe

Instalujeme a zakládáme databázi Oracle Database 11g

DLS IV verze v1.61. Kromě klasické je dostupná i síťová verze Integrace posílání SMS zpráv (využívají se placené SMS brány)

Jak nasadit Windows 10 ve škole

OpenOffice.org 1.1 CZ

a autentizovaná proxy

Ovladač Fiery Driver pro systém Mac OS

Instalace webové služby Mydlinka

TRUST USB2 EASY FILE TRANSFER CABLE. Instrukce při prvním použití 1. Instalace ovladače (4.2) 2. Připojení kabelu (4.3)

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ

Správa linuxového serveru: Webový server Cherokee

GroupWise 6.5 for Linux

Instalace Linux Debian ve VirtualBoxu JAKUB MAZUCH BŘEZEN 2018

Návod na připojení k ové schránce Mozilla Thunderbird 3

Acronis Backup Advanced Version 11.7

Instalace MetaTrader na MAC krok za krokem

Úvod Používané konvence Seznámení s Outlookem...17

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

ID Microserver. TCP Server pro čtečky:

Technologie počítačových sítí 5. cvičení

Aktivace Demo licence - Digifort

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

Návod na instalaci programu evito Win Service. Instalace programu evito Win Service

Přechod z Google Apps na Office 365 pro firmy

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Základní kroky instalace

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Porovnání instalací linuxových distribucí Fedora x Debian Administrace počítačových sítí (2010/2011)

Quick Installation Guide

Spouštění a konfigurace služeb. Přednáška OSY2 verze :00

Instalace produktu Ontopia. ver (open-source verze)

HTTPS na virtuálních web serverech

Instalační manuál. 1. Instalace hardwaru

Instalace webové služby Mydlinka

Střední odborná škola a Střední odborné učiliště, Hořovice

IM Instalace síťové verze SprutCAM. 1Nastavení serveru Vlastní instalace serveru...2 3Nastavení uživatelského počítače...

Demoprojekt Damocles 2404

Ruby on Rails: zapomeňte na Javu

A p a c h e h t t p d Lukáš Zapletal lukas.zapletal@liberix.cz

Messenger. Novell 1.0 UMÍSTĚNÍ DOKUMENTACE K PROGRAMU NOVELL MESSENGER. STRUČ NÁ ÚVODNÍ PŘ ÍRUČ KA

HP Backup and Recovery Manager

Střední odborná škola a Střední odborné učiliště, Hořovice

Shibboleth v systému DSpace

Workmonitor. Servisní návod. 24. června 2014 w w w. p a p o u c h. c o m

Síťové propojení, konfigurace počítačů a programu Praktik

Uživatelská příručka

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice

Správa linuxového serveru: Úvod do poštovního serveru

Uživatelská příručka

Návod pro připojení telefonu Nokia 3650 přes IrDA pro Windows 2000/XP instalace programu PC Suite a modemu (GPRS)

Popis licencování, nastavení a ovládání replikací - přenosů dat

NÁVOD jak na webinář přes WizIQ

Nejprve je třeba spustit správce serveru: V něm je třeba vybrat přidání rolí:

Polohovací zařízení a klávesnice Uživatelská příručka

českém Úvod Obsah balení IP004 Sweex Wireless Internet Phone

TouchPad a klávesnice

AVG_ANTIVIR. Semestrální projekt předmětu Návrh uživatelských rozhraní Julie Partyková, Ondřej Mirtes,

Rychlý průvodce konfigurací LAN SUITE 2002

českém Úvod Hardware Instalace ve Windows 98SE PU006 Sweex 2 Port Serial PCI Card

Průvodce instalací a spuštěním. Pro DataPage+ 2012

CE - Prohlášení Prohlašujeme, že TEAC MEDIA SYSTEMS IP-20 USB Telefon splňuje následující normy a dokumenty: EMC Directive 89/336 / EEC

Návod k instalaci. Nintex Workflow Návod k instalaci

Návod na instalaci esamu v. 4.0

Střední odborná škola a Střední odborné učiliště, Hořovice

Vítejte v průvodci instalace a ovládání výukového softwaru edu-learning pro českou verzi Microsoft Office 2007.

INSTALACE SW V GNU/LINUXU

2N Access Commander. Základy použití Verze

Administrace počítačových sítí. WEB a LPT

Uživatelská příručka. OTIOBox Router pro ovládání domácí automatizace

UŽIVATELSKÁ PŘÍRUČKA

Technologie počítačových sítí 1. cvičení

V této kapitole se naučíte základnímu ovládání programu ZoomText, totiž:

Příručka pro uživatele Navigační software

LINUX ADRESÁŘOVÁ STRUKTURA. Co to, hrome, je? V této lekci se budeme brouzdat adresáři. SPŠ Teplice - 3.V

Instalace a první spuštění Programu Job Abacus Pro

GRAFICKÁ PROSTŘEDÍ GNU/LINUXU

NetIQ imanager Instalační příručka. Leden 2016

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows

BRICSCAD V15. Licencování

MS PowerPoint Každá prezentace by se měla skládat ze tří klíčových částí: 1. Obsah

Instalace a konfigurace OpenAdmin tool na M$ a Linuxu

INFORMACE. Postup vytvoření virtuálního PC. Zpracoval: Ing. Emil Kajer Datum vydání:

Manager AP. Uživatelská p íru ka programu. zá í 2012 preliminary verze

Děkujeme vám, že jste si zakoupili přístroj The Little Black Box. Níže uvedené rady by vám měly pomoci s jeho instalací.

Požadavky pro konfiguraci internetového připojení

Funkce Chytrý dotyk. verze 1.4. A-61629_cs

LASERJET PRO 300 COLOR MFP LASERJET PRO 400 COLOR MFP. Stručná referenční příručka M375 M475

Systém řízení přístupu ACCO NET Návod na instalaci

Elektronická pošta v síti WEBnet

Transkript:

Home» Články» Praxe» Správa linuxového serveru» Správa linuxového serveru: Zprovoznění Ruby... Předchozí kapitola Zpět na obsah Následující kapitola Správa linuxového serveru: Zprovoznění Ruby aplikací s RVM, Thin a Nginx a Nginx. Ruby on Rails je jeden z mnoha frameworků jazyka Ruby určený pro tvorbu webových aplikací. Ačkoliv webových aplikací pro ně není tolik jako pro PHP, mnohé z nich určitě stojí za zvážení. Na rozdíl od PHP však jejich zprovoznění z pohledu správců serverů nemusí být úplně přímočaré. Tento článek osvětlí univerzální způsob nasazení Ruby (a zejména Rails) aplikací za pomoci RVM, Thin Čtvrtek, 6. říjen 2011 Autor Michal Dočekal známka 1,00 Úvod Na úvod musím předeslat, že nejsem Rails vývojář, tudíž se na tuto problematiku dívám primárně očima správce. Ruby on Rails není jediný framework postavený na jazyce Ruby, těch je více (viz např. tento článek nebo příslušné heslo Wikipedie) a řada z nich je velmi zajímavá. Jejich nasazení je však obvykle pro správce zvyklého na LAMP poněkud problematické, zejména v prostředí linuxových distribucí, kde se naráží na několik problémů. Jedním kamenem úrazu je fakt, že jazyk Ruby má svůj vlastní balíčkovací systém s názvem RubyGems, který, zcela přirozeně, koliduje s balíčkovacím systémem distribucí. Je sice možné instalovat pouze balíčky z distribuce, ale pokud vaše aplikace používá konkrétní verzi, která (pochopitelně) v repozitářích není, nastává problém. Použití balíčkovacího systému Ruby pak může přinášet jiné problémy (konflikty souborů, soubory nepatřící žádnému balíčku). Druhým kamenem úrazu je skutečnost, že jazyk Ruby zaznamenal podstatné změny (přechod z řady 1.8 na řadu 1.9) a nové verze Ruby interpretů zatím ještě nejsou podporovány řadou na Ruby postavených komponent a aplikací. V Debianu je sice možné vedle sebe nainstalovat dvě různé verze Ruby interpretu, ale např. modul Passenger pro Apache, který mu umožňuje pracovat s Ruby aplikacemi, zatím není schopen použít více než jednu verzi interpretu najednou. Není tedy možné prostřednictvím něj zprovoznit dvě aplikace, kde jedna vyžaduje starší verzi interpretu a jedna novější. RVM, Thin a Nginx Výše uvedené problémy pomáhá řešit kombinace RVM a serverů Thin a Nginx. Nejprve představím jednotlivé komponenty. RVM je zkratka pro Ruby Version Manager, tedy systém pro správu verzí Ruby. RVM můžete snadno využít k vytvoření optimálního prostředí pro běh Ruby aplikace. RVM nepotřebuje práva roota, poběží pod jakýmkoliv uživatelem a umožní vám nainstalovat jak konkrétní verzi Ruby interpretu, tak sadu gemů (balíčků). Dokonce je možné nainstalovat více verzí interpretu a více gemsetů (sad balíčků), přičemž pak se 1/5

můžete mezi nimi přepínat. Má poměrně bohaté možnosti a také velmi dobrou dokumentaci. Thin je webový server napsaný v Ruby, který by měl být rychlý, stabilní a bezpečný. Je dostupný jako Ruby gem (balíček). Nginx je webový server, který velmi pravděpodobně naleznete v repozitářích vámi používané distribuce. Tento webový server má malé nároky na paměť a vysoký výkon. Umí také fungovat jako reverzní proxy, což je přesně to, co od něj v tomto řešení potřebujete. Dá se snadno propojit se serverem Thin, dokonce dvěma způsoby (přes síť a přes socket). Více informací o Nginx naleznete v jednom z předchozích dílů tohoto seriálu. Postup řešení je následující nejprve si vytvoříte uživatele, pod kterým bude aplikace běžet (nebo použijete nějakého existujícího). Následně zprovozníte RVM a nainstalujete potřebné verze Ruby interpretu a příslušných gemů, které vaše aplikace vyžaduje. Poté nainstalujete gem thin. Thin spustíte a dostanete buď sockety, nebo síťové porty, kde Thin běží. Ty pak vložíte do konfigurace Nginx a propojíte s ním konkrétní virtuální server (virtual host). V tomto dílu popíšu obecný postup, v příštím dílu na něj navážu a prakticky jej demonstruji na zprovoznění vynikajícího FOSS systému pro správu projektů Redmine, který určitě doporučuji vaší pozornosti. Na závěr zmíním jediný možný problém budete li takto nasazovat více aplikací, každou s různým Ruby interpretem a gemy, patrně budete potřebovat zajistit dostatek RAM. RVM Předpokladem pro instalaci RVM je nainstalovaný Git, pokud jej nemáte, nainstalujte jej (v Debianu a podobných distribucích) příkazem: aptitude install git Instalace RVM je velmi jednoduchá. Nejprve však doporučuji vytvořit příslušného uživatele, pod kterým aplikace poběží. adduser uzivatel su uzivatel cd Nyní, s právy daného uživatele, je možné provést samotnou instalaci RVM. Konkrétní podobu příkazu raději získejte z oficiální dokumentace a níže uvedený příkaz berte spíše jako ukázku (pro případ, že by se od vydání článku něco změnilo): bash < <(curl s https://rvm.beginrescueend.com/install/rvm) Po instalaci by se měl automaticky upravit váš.bashrc(pokud existuje), abyste mohli RVM po přihlášení spouštět. Tím je instalace RVM jako takového hotová. Jelikož se Ruby interpreti kompilují, bude před jejich instalací ještě třeba nainstalovat potřebné balíčky, tj. kompilátory a hlavičkové soubory. Seznam (včetně konkrétního příkazu pro instalaci) získáte zadáním: rvm requirements Po instalaci příslušných balíčků je možné začít s instalací konkrétní verze Ruby interpretu zde je třeba se obrátit na dokumentaci k vámi nasazované aplikaci a zjistit, jakou verzi potřebuje. Potřebuje li verzi 1.8.7, nainstalujete ji takto: rvm install 1.8.7 2/5

Tuto verzi interpretu můžete pro momentální shellové sezení aktivovat následujícím způsobem: rvm use 1.8.7 Pokud byste instalovali pouze jedinou aplikaci, nemusíte si dělat starosti s gemsety, tedy s možností používat různé sady Ruby balíčků s různými verzemi interpretu pro různé aplikace. Pro zjednodušení budu předpokládat právě tuto variantu. Chcete li používat více aplikací, podívejte se do dokumentace k RVM, je velmi pěkně udělaná a vše je tam pěkně demonstrováno na příkladech. Chcete li učinit nějakou verzi Ruby interpretu výchozí, použijte tento příkaz: rvm use 1.8.7 default Ruby aplikace si mohou s sebou tahat řadu závislostí na vás tedy pak zbude doinstalování toho, co není distribuováno spolu s aplikací (zde je opět třeba se obrátit na dokumentaci k aplikaci). Kupříkladu, vyžaduje li aplikace Rails framework ve verzi 2.3.11, nainstalovali byste jej takto: gem install rails v=2.3.11 Instalace Thinu Thin nainstalujete úplně stejně jako jakýkoliv gem, tj. v rámci RVM prostředí použijete příkaz: gem install thin Testovací aplikace Pro účely testování může posloužit hello world aplikace napsaná ve frameworku (resp. DSL) Sinatra. Vytvořte si nějaký adresář v domovském adresáři (např. testapp) a v něm soubor app.rb s následujícím obsahem: require 'sinatra' get '/' do "LinuxEXPRES" end Následně vytvořte soubor config.rus následujícím obsahem: require './app' run Sinatra::Application Nyní můžete server v tomto adresáři spustit, a to příkazem: thin s 1 R config.ru a 127.0.0.1 p 3100 start Většinu parametrů je možné dekódovat užitím selského rozumu, audává IP, na které bude server naslouchat, ppak konkrétní port, R config.rubere vámi vytvořený konfigurační soubor, který pouští Sinatra aplikaci, parametr start udává, že se má nastartovat příslušný server (funguje samozřejmě také stop či restart). Jediný parametr, který asi není jednoduché dekódovat, je s, který udává počet běžících serverů. V tomto případě je zvolen jeden jediný, kdyby jich bylo více, první by poslouchal na portu 3100, další na 3101atd. Zda se zprovoznění aplikace povedlo, můžete otestovat textovým prohlížečem Lynx: lynx 127.0.0.1:3100 Měli byste vidět text LinuxEXPRES. 3/5

Propojení s Nginx Šablona pro nastavení Nginx může vypadat takto: upstream nas_thin { server 127.0.0.1:3100; server 127.0.0.1:3101; server 127.0.0.1:3102; server { listen 1.2.3.4:80; server_name example.cz; access_log /var/log/nginx/example.cz.access.log; root /home/uzivatel/testapp/public; location / { proxy_set_header X Real IP $remote_addr; proxy_set_header X Forwarded For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if ( f $request_filename/index.html) { rewrite (.*) $1/index.html break; if ( f $request_filename.html) { rewrite (.*) $1.html break; if (! f $request_filename) { proxy_pass http://nas_thin; break; Povšimněte si direktivy upstream to je jednoduchý load balancer, tedy systém pro rozložení zátěže. Využívají se tedy střídavě všechny servery. Je možné specifikovat váhy jednotlivých serverů, ale to už je mimo rozsah tohoto článku (více vám napoví dokumentace k Nginx). Většině parametrů je asi více méně rozumět (direktiva listen, server_name, nastavení proxy, rewrite pravidla pro statický obsah). Osvětlím dvě důležité věci: root /home/uzivatel/testapp/public V příkladu výše nepadlo o adresáři public ani slovo. Webové aplikace postavené na Ruby (a nejenom ty) obvykle obsahují řadu adresářů, v nichž je zdrojový kód, konfigurace apod., a pak nějaký adresář, který se má použít jako kořen pro webovou prezentaci. Je tomu tak proto, aby se zamezil přístup k těm ostatním souborům, kde je např. konfigurace databáze apod. Budete li nasazovat Ruby aplikace, budete nejspíše používat adresář publicv adresářovém stromu dané aplikace. if (! f $request_filename) { proxy_pass http://nas_thin; break; 4/5

Toto je poslední rewrite pravidlo, které nasměruje všechny ostatní požadavky na příslušný upstream zdroj, nas_thinzde odpovídá stejnojmennému zdroji specifikovanému v rámci direktivy upstream. Tím bych tento díl ukončil. V příštím díle osvětlím celý tento proces na instalaci systému Redmine. Předchozí kapitola Zpět na obsah Následující kapitola Odkazy Pokud si chcete přečíst více o této problematice, navštivte tyto odkazy: Dokumentace RVM Ubuntu 10.XX + Nginx + Thin + Rails 3: A HOW TO Capistrano + Nginx + Thin deployment on Linode Nginx HttpUpstreamModule Přidat názor Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu 5/5