Za poslední dva měsíce se příchod nových uživatelů na Roští.cz prakticky nezměnil a zůstal u „občas se někdo objeví“, ale na pozadí se toho stalo hodně. Už jsem jen krůček od toho, abych uvolnil administraci na Roští.cz pod nějakou svobodnou licencí a tím doufám oslovím další vývojáře, hlavně ze zahraničí. Poslední překážkou je uzavřená šablona, na které je administrace postavená. S každou instancí administrace je potřeba licenci zaplatit (20 USD) a samozřejmě je nekompatibilní s open source licencemi. Kdybyste někdo měl pod stolem nějakou hezkou šablonu, o kterou byste se chtěli podělit, určitě dejte vědět, moc by to pomohlo. Já nejsem zrovna dobrý kodér ani grafik.

Konec čekání

Kód administrace byl ještě včera večer dost chaoticky uspořádán, pokud šlo o provádění nějakých akcí v operačním systému serveru. Různé snahy udělat z administrace nástroj pro správu mnoha serverů způsobily, že v každé části se spouštěly příkazy pod rootem jinak. Když má jedna aplikace spravovat více serverů, potřebuje na každém z nich občas spustit nějaký program (přidání uživatele, vytvoření adresářové struktury pro emailovou schránku apod.), proto je potřeba nějak zařídit, aby admin mohl, pokud možno jednoduše, spustit nějaký program na libovolném spravovaném serveru.

Spouštění čehokoli pod rootem je bezpečnostní riziko a to je mě nenechalo v klidu prakticky u ničeho co jsem navrhl a ani teď z toho nejsem odvázaný. Chvilku jsem bezpečnost řešil přes sudo, kde bylo povoleno pár programů, které mohly být daným účtem (pod kterým běžel admin) spuštěny, ale nakonec má administrace k ruce roota každého spravovaného serveru bez omezení. Touto oblastí si ještě nejsem zcela jist, takže se na ní zaměřím v dalších týdnech. Pravdou je, že na serveru se musí občas něco spustit a každá bezpečnostní vychytávka bude komplikovat další vývoj.

V některých místech se používalo SSH, ale ukázalo se to být zbytečně komplikované. Někde se navíc na serveru spouštěly různé programy pouze přes subprocess, takže ovládání více serverů nemělo šanci. Nakonec jsem se rozhodl na každý spravovaný server umístit malý pythoní skript, který spustí HTTP server a administrace pomocí POST požadavků posílá co chce spustit. HTTP server vrací JSON s tím, jak to dopadlo. Python má velmi pěknou implementaci HTTP serveru a urllib se postaralo o klientskou část. Zatím se pro komunikaci nepoužívá zabezpečený protokol, ale to se snad brzy změní. Nejraději bych si šifrování řešil sám přes nějaký klíč a nenechával to na HTTPS.

Wiki

Během dubna byla spuštěna wiki, kterou najdete na wiki.rosti.cz. Jsou tam informace ke všem funkcím, které jsou v administraci a mohly by dělat problémy. Navíc tam je vysvětlení, jak je hostován Python, jak PHP apod. Určitě stojí za to si ji prostudovat. Wiki je založená na projektu Dokuwiki. Kromě technického popisu tam dávám delší zprávy, které se na Twitter nevešly.

Díky wiki zmizelo z administrace těch pár textů, které tam byly a nahradily je odkazy právě na wiki. Snad se mi podaří spojit wiki a administrace ještě trochu těsněji. Tímto krokem si nejsem úplně jistý, nemám ho promyšlený, ale myšlenka, že z administrace dostanu delší texty, které pak nebudu muset překládat do angličtiny byla lákavá.

Nové disky a Debian

Koncem března a začátkem dubna jste mohli zaznamenat tři výpadky, z nichž dva byly dost dlouhé, asi dvouhodinové. Roští je momentálně postaveno na jednom serveru, který obstarává téměř všechny služby a pak na druhém, který drží zálohy. Na prvním serveru byl od jeho koupi pouze jeden disk (nebyla šance to ovlivnit) a ten se začal někdy v březnu cukat, resp. se na něm objevilo 32 vadných sektorů. Situaci bylo potřeba řešit a navíc se do všeho tlačila nutná aktualizace Ubuntu 9.10, kterému končila na konci dubna podpora.

Rozhodl jsem se s výměnou disku provést i aktualizaci, resp. přejít na Debian. Krom toho, že Ubuntu je prakticky nemožné nainstalovat nad LVM+RAID, tak Canonical bere rok a půl dlouhou podporu jenom jako řádek textu ve svých prospektech. Na serveru bylo několik bezpečnostních chyb, které byly v upstreamu opraveny, ale do Ubuntu 9.10 se oprava nikdy nedostala. Debian 6.0 byl ještě čerstvý a teploučký, až se z něj kouřilo, navíc verze balíčků jsou velmi podobné těm, které jsou v Ubuntu 9.10, takže přechod nebyl vůbec žádný problém a za dvě hodiny byl stroj připraven.

Druhý výpadek byl způsoben doplněním druhého disku do RAIDu a měl asi 30 minut. Mezi těmito výpadky se objevil ještě jeden, který byl způsoben zvýšenou aktivitou jednoho webu a jeho komunikace s MySQL databází. Na nějaký útok to nevypadalo, ale i tak to odnesl Apache. Stalo se to v sobotu ráno a Apache nejel asi dvě hodiny.

I kvůli tomuto problému jsem na server nahodil monitoring Icinga. Krom toho, že jsou hlídány služby, tak vím i o výpadcích jednotlivých webů. Vzhledem k menším problémům, které se objevily u uWSGI, se Icinga ukázala jako užitečný nástroj.

Během změny operačního systému došlo i k nahrazení daemona Jabberd2 daemonem Prosody. Důvodů bylo několik, ale těmi hlavními je jednodušší správa a rychlejší vývoj. Pro klienty to znamená, že se někdy v adminu dočkají funkce Jabber serveru ke své doméně. To je možné už teď, ale pouze po odeslání požadavků na technickou podporu.

Po přechodu na Debian byla administrace vylepšena o podporu uWSGI a také podporu odděleného statického obsahu od aplikace. To serveru trochu odlehčilo. i když to ještě zdaleka ne všichni používají. uWSGI přineslo lepší podporu pro virtualenv, což je pythoní virtuální prostředí. Všechno je popsané na wiki, ale ve zkratce si mohou klienti přes SSH vytvořit prostředí přesně s těmi moduly, které chtějí. Navíc se kvůli reloadu aplikace nemusí reloadovat celý Apache. U mod_wsgi se reload prováděl pomocí změny mtime u souboru s WSGI handlerem. To občas nefungovalo jak mělo, hlavně když jste se na serveru pokoušeli vyvíjet a něco se pokazilo.

Fraggo.net

První společnost, která použila administraci z Roští.cz na své servery, je Fraggo.net. Zatím administrace spravuje jeden server, ale další dva se k němu brzy připojí. Hlavní důvodem této volby, byla podpora jazyka Python. Doufám, že až bude administrace uvolněna pod svobodnou licencí, tak si ji oblíbí a hlavně ji vylepší další firmy i jednotlivci. K tomu, ale ještě povede dlouhá cesta.

Pokud máte zájem o zdrojové kódy, určitě se ozvěte.

Co se plánuje

Roští.cz ještě mladý hosting a ještě není úplně bez chyby, ale zatím má tento rok lepší dostupnost než centrum.cz :-) Každopádně bych teď rád udělal druhou vlnu propagace Roští a během následujících dvou, třech měsíců pořídil další server, který by si vzal na sebe weby a databáze a monitoring s e-maily by zůstal tam kde je. Jinak další zásahy do serveru nejsou plánovány a nemělo by tak docházet k žádným výpadkům.

V kratším časovém úseku se pak dočkáte podpory IPv6, která je teď číslo jedna, administrace trochu zAJAXovatí a nějaké vylepšení čeká hostování DNS záznamů.

Pokud ještě nemáte svůj Pythoní hosting, tak na Roští.cz ho dostanete.