Serverlety

Serverlety a nasazení aplikací ve starém Futrou v1.

Co je to Serverlet?

Určitě se ptáte, co to vlastně je ten serverlet? Nebudeme vás napínat. Je to název našeho webhostingu. Proč serverlet? Myslíme si, že obecné označení webhosting se v našem případě příliš nehodí a nevystihuje všechny možnosti, které nabízí. Náš serverlet je určitým kompromisem mezi obyčejným webhostingem a virtualizovaným managed serverem — takový trochu kočkopes.

Přehled Serverletu ve Futrou v1

Technologie

Samotný serverlet je námi sestavené prostředí pro běh vaší aplikace, které běží jako Docker kontejner. Jde tedy o virtualizaci na úrovni operačního systému, tzv. kontejnerizaci: kontejnery sdílejí jádro hostitelského systému a od sebe navzájem je oddělují jmenné prostory (namespaces) a cgroups. Nejedná se o plnou virtualizaci s vlastním jádrem, jakou nabízejí virtuální stroje.

Váš serverlet obsahuje všechen software potřebný pro běh vaší aplikace a je zcela oddělen od serverletů/aplikací jiných uživatelů.

Operační systém

Každý serverlet má svůj malý a do jisté míry nezávislý OS. Jako hostitelský operační systém a OS v serverletu používáme Ubuntu. V současné době Ubuntu 22.04 LTS.

Správa procesů

Na rozdíl od běžného Ubuntu se o správu služeb v našem serverletu stará runit. Ten se stará o to, aby se všechny vaše aplikace po startu korektně zapnuly a v případě pádu je opět nahodí. Více se něm můžete dočíst v samostatné kapitole Runit.

Správa softwaru ve Futrou v1

Runit

O správu všech aplikací v serverletu se stará runit. Zajišťuje, že se všechny aplikace po startu serverletu zapnou a v případě pádu je opět nahodí. Veškeré jeho nastavení je v adresáři /srv/service. Ihned po založení serverletu v něm naleznete složky jednotlivých služeb, které běží na pozadí, a jejich spouštěcí scripty.

Přidání vlastní aplikace

Přidání vlastní aplikace je velmi jednoduché. Po přidání je možné danou aplikaci ovládat také z administrace.

Postup přidání:

  1. Nejprve vytvořte adresář s názvem aplikace ve složce /srv/service, například /srv/service/moje-aplikace.
  2. V daném adresáři vytvořte soubor run pro spuštění aplikace, tedy /srv/service/moje-aplikace/run.
  3. Do souboru zadejte příkaz pro spuštění aplikace. Aplikace musí udržovat hlavní proces a nesmí přecházet do pozadí. V opačném případě způsobí opakované pokusy o spuštění, které spotřebují většinu prostředků serverletu. U některých aplikací je proto nutné vypnout daemon mode.

Ukázka souboru run pro MongoDB:

sh
#!/bin/sh -e
exec 2>&1
exec /usr/bin/mongod --config /srv/config/mongodb/mongod.conf
  1. Soubor uložte.
  2. Uživatel applet musí mít všechna potřebná práva ke složce, aby runit mohl správně fungovat.
  3. Runit během několika desítek vteřin rozpozná a spustí nově přidanou aplikaci. Potřebné informace, jako je PID procesu, ukládá do podadresáře supervise.
  4. Hotovo — aplikace se bude automaticky spouštět po zapnutí a znovu nahodí při pádu. Ovládat ji můžete příkazem app nebo sv.

Další užitečné informace naleznete na stránce programu runit.

Odebrání aplikace

Odebrání aplikace je jednoduché. Ukončete ji příkazem app stop {moje-aplikace} a poté smažte její složku v adresáři /srv/service.

Ovládání

Ovládání serverletu

Zapnutí, restart a vypnutí serverletu lze provádět pouze z administrace, na kartě daného serverletu.

Restart odpovídá násilnému vypnutí a zapnutí. Přeruší aplikace, což může způsobit ztrátu neuložených dat nebo poškození databáze. Provádějte jej pouze v nutných případech; pokud je to možné, nejprve řádně ukončete ostatní aplikace. Po provedení některé z těchto akcí počkejte alespoň 60 sekund před další akcí.

Vypnutý serverlet je účtován stejně jako zapnutý, protože potřebné prostředky zůstávají pro serverlet rezervované.

Správa softwaru

Předinstalovaný i vlastní software na serverletu lze ovládat dvěma způsoby. Nedoporučujeme je používat současně: administrace v reálném čase nezobrazuje změny provedené přes SSH.

Zakázaný software nezabírá žádné prostředky a nespouští se po startu. Povolený software se po startu automaticky zapne. Po založení serverletu je většina softwaru zakázaná. Po prvním povolení si software jako MariaDB, PostgreSQL nebo MongoDB vyhradí místo na disku, které zůstane obsazené až do smazání.

Každý další povolený a spuštěný software spotřebovává prostředky serverletu. Povolte proto jen software, který aplikace skutečně potřebuje.

Administrace

Ovládání softwaru najdete v administraci na kartě Software. Je zde všechen software na serverletu spravovaný runitem; vlastní software přidáte podle kapitoly Runit.

Softwarové centrum v administraci

IkonaAkcePopis
ReloadReloadAplikace znovu načte konfiguraci. Představuje restart bez výpadku u aplikací, které ho podporují.
RestartRestartTvrdý restart s výpadkem.
StopStopZastaví aplikaci.
StartStartSpustí aplikaci.

Terminál

Serverlet lze ovládat také přes SSH. Pro tento účel je připravený příkaz app:

text
Futrou Serverlet Manager
Usage: app {start|restart|reload|stop|status|disable|enable} {app_name}
Usage: app list

Použití:

bash
app {příkaz} {název-aplikace}

Například pro zobrazení stavu LiteSpeed Web Serveru:

bash
app status lsws

Výpis aplikací získáte příkazem:

bash
app list

Příklad výstupu:

text
System apps:
    runit
Registered user apps:
    lsws
    mariadb
    moje-aplikace
    mongodb
    redis

Naposledy upraveno