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.

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.

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í:
- Nejprve vytvořte adresář s názvem aplikace ve složce
/srv/service, například/srv/service/moje-aplikace. - V daném adresáři vytvořte soubor
runpro spuštění aplikace, tedy/srv/service/moje-aplikace/run. - 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:
#!/bin/sh -e
exec 2>&1
exec /usr/bin/mongod --config /srv/config/mongodb/mongod.conf- Soubor uložte.
- Uživatel
appletmusí mít všechna potřebná práva ke složce, aby runit mohl správně fungovat. - 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. - Hotovo — aplikace se bude automaticky spouštět po zapnutí a znovu nahodí při pádu. Ovládat ji můžete příkazem
appnebosv.
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.

| Ikona | Akce | Popis |
|---|---|---|
| Reload | Aplikace znovu načte konfiguraci. Představuje restart bez výpadku u aplikací, které ho podporují. | |
| Restart | Tvrdý restart s výpadkem. | |
| Stop | Zastaví aplikaci. | |
| Start | Spustí aplikaci. |
Terminál
Serverlet lze ovládat také přes SSH. Pro tento účel je připravený příkaz app:
Futrou Serverlet Manager
Usage: app {start|restart|reload|stop|status|disable|enable} {app_name}
Usage: app listPoužití:
app {příkaz} {název-aplikace}Například pro zobrazení stavu LiteSpeed Web Serveru:
app status lswsVýpis aplikací získáte příkazem:
app listPříklad výstupu:
System apps:
runit
Registered user apps:
lsws
mariadb
moje-aplikace
mongodb
redisNaposledy upraveno
