Linux E X P R E S

Facebook

Kvalitní webhosting za patnáct minut

Vlastnit webové stránky je dnes pro každou firmu či jednotlivce téměř nutností. Bohužel se setkáváme s tím, že webhostingové servery, na kterých jednotlivé portály běží, často nesplňují naše očekávání a požadavky. Někdy to bývá pouze cena, jindy zase kvalita připojení či nadstandardní služby.


V případě, že znáte ještě několik lidí se stejným problémem, je ideálním řešením instalace vlastního serveru. Kamenem úrazu však poté bývá administrace jednotlivých domén a služeb, které na nich běží. Rád bych vám proto v následujícím článku ukázal, který systém na svých serverech provozuji a jak ho uvést do chodu třeba právě u vás.

Pod pojmem webhosting si můžeme představit pronájem WWW prostoru na internetu. Existuje několik desítek tzv. hostingových programů, které nám dávají na výběr z nepřeberného množství poskytovaných služeb. Případ, kdy se jedná o hosting zdarma, případně o hosting dotovaný pouze ze zobrazované reklamy a bannerů na našich stránkách, nazýváme freehosting.

Jak to všechno začalo

První pokusy o vlastní webhosting u mě začaly před několika lety. V té době jsem potřeboval postavit server s možností jednoduché administrace. Vzhledem k tomu, že jsem nebyl příliš zdatným programátorem PHP, Pythonu ani jiného vhodného jazyka, pokusil jsem se napsat vlastní systém pomocí několika chytrých bashových skriptů. V případě, že jsem chtěl do svého systému přidat další doménu, musel jsem vytvořit nového uživatele, jehož shell byl nasměrován právě na onen skript. Celý systém byl sice "šitý na míru", ale i přesto poměrně modulární. Dokonce splňoval základní požadavek bezpečnosti, neboť se k němu dalo připojit pouze přes ssh. Nevýhodou a důvodem, proč jsem ho však později opustil, byla uživatelská přivětivost a nutnost vést všechny administrátory domén jako validní uživatele v systému.

Doména je základní adresní jednotka na internetu. Nahrazuje číselnou IP adresu, která je hůře zapamatovatelná. Základní rozdělení domén je do tří úrovní:

  • Doména první úrovně - takzvaná top-level doména (TLD) nebo národní doména, například .cz.
  • Doména druhé úrovně - ihned za národní doménou, například vasefirma.cz.
  • Doména třetí úrovně - například sklad.vasefirma.cz.

Při hledání na internetu jsem narazil na několik komerčních projektů. Ceny za kompletní systém pro webhosting však téměř vždy přesahovaly částku 1000 dolarů za rok, což bylo daleko více, než jsem zaplatil za samotný hardware a roční pronájem racku včetně konektivity v serverovně. Na jednom fóru takového komerčního produktu jsem ale nalezl dva velmi zajímavé odkazy. Jeden z nich směřoval na stránky ISPConfigu a ten druhý na stránky projektu VHCS.

Pro a proti

Po důkladném prostudování obou projektů jsem byl opravdu na vážkách, který z nich použiji na svůj budoucí server. ISPConfig vydaný pod BSD licencí nabízel ve webovém rozhraní o něco málo funkcí více než VHCS. Oproti tomu VHCS licencovaný pod MPL 1.1 na mě působil více uhlazenějším dojmem. Vývoj programu navíc nezůstává pouze na Linuxu, ale pokračuje i v BSD větvi, což je má oblíbená serverová platforma, a proto se stal VHCS mým osobním vítězem.

Instalujeme

Možná to bude znít tak trochu jako fráze, ale nejjednodušší cestu mají opět debianisté. Vybrat si mohou ze třech různých způsobů.

Prvním způsobem je instalace VHCS pomocí speciálního instalátoru z domovských stránek. Pod pojmem "speciální instalátor" si prosím představte prachobyčejný skript, který se po spuštění automaticky aktualizuje na nejnovější verzi. Samotná instalace pak probíhá v několika fázích. První fází je deaktivace nepotřebných služeb démona inetd a odebrání přebytečných balíčků ze systému. Ve druhé fázi dojde ke stažení a konfiguraci jednotlivých balíků a ke kompilaci VHCS démonu. V poslední fázi nás instalátor vyzve k zadání administrátorova e-mailu, IP adresy serveru a přístupového hesla do MySQL databáze.

Druhým způsobem je instalace přímo pomocí balíčků určených pro Debian Sarge. Odkazy na ně naleznete na domovských stránkách. Tento způsob instalace ovšem nedoporučuji, neboť si nainstalujete poměrně zastaralou verzi programu (z řady 2.6.)

Třetím způsobem, který pak lze aplikovat i na jiné systémy, než je Debian, je instalace ze zdrojových kódů. Ze stránek sourceforge.net stačí získat aktuální archiv, který rozbalíme a následně nainstalujeme přesně podle přiložené dokumentace.

Ve všech třech případech lze nakonec ověřit úspěšnost instalace přes webový prohlížeč na adrese http://jmenoserveru/vhcs2. V případě, že uvidíte něco podobného, jako je na obrázku, máte vyhráno.

Obrázek: vhcs obr1.jpg

Problémy při instalaci

Existují některé známé problémy při instalaci, které se pokusím nastínit.

Při použití instalačního skriptu je možné, že u počítače strávíte více času, než byste chtěli, neboť samotný archiv VHCS se tahá z často velmi přetížených autorových stránek. Doporučuji proto skript před instalací zeditovat a nastavit cestu k archivu na jeden z oficiálních mirrorů portálu sourceforge.net.

Pokud budete instalovat VHCS stejně jako já na procesory AMD Opteron, uvidíte po spuštění init skriptu "oblíbenou" hlášku každého linuxáka - "Segmentation fault". Je proto potřeba použít drobný patch a znovu zkompilovat VHCS démon. Bližší informace naleznete na fóru www.vhcs.net, a to v sekci Installation and setup, pod příspěvkem označeným jako AMD64 vhcs2_daemon - HowTo.

Zdokumentovanou chybou pod Gentoo Linuxem je nemožnost zastavit démon. Tento problém řeší upravený init skript a malý patch do VHCS. Bližší informace naleznete taktéž na fóru v sekci Installation and setup, pod příspěvkem označeným jako Gentoo init script how to.

Bezpečnost - a zase ta bezpečnost

Nutno říct, že VHCS se snaží dbát na bezpečnost systému. Veškerá důležitá data drží šifrovaná v databázi, nevytváří zbytečně uživatele s validním shellem, v PHP je schopen pracovat v režimu safe mode a pro spouštění CGI skriptů používá program suexec. Do další verze se plánuje i spouštění PHP přes suphp.

I přes všechno, co jsem právě napsal, je důležité systém nepatrně doladit. První věcí, kterou dělám, je úprava konfigurace modulu PHP pro server Apache - v Debianu standardně k nalezení v souboru /etc/php4/apache2/php.ini. Doporučuji změnit minimálně položku safe_mode na hodnotu On, položku allow_url_fopen na hodnotu Off a položku disable_functions na hodnoty system, exec, passthru, popen, escapeshellcmd, shell_exec. Tímto nastavíme relativně rozumné zabezpečení, se kterým VHCS bez problému funguje. Dalším krokem na mých serverech bývá umístění Apache serveru, pošťáka postfixe a DNS démon BIND do jailu. Tato operace vyžaduje změnu přístupových cest v konfiguračním souboru VHCS, který nalezneme v /etc/vhcs2/vhcs2.conf. Neměli bychom také zapomenout doplnit základní pravidla do firewallu.

Webové rozhraní

Samotné webové rozhraní je rozděleno do tří základních úrovní. První úroveň je administrační, v druhé úrovni jsou resseleři (chcete-li česky - prodejci) a ve třetí úrovni pak nalezneme samotné majitele jednotlivých domén.

Obrázek: vhcs obr2.jpg

Administrační úroveň v portálu sice neskrývá nejvíce voleb, ale disponuje možností přepnout se na kteréhokoliv jiného uživatele. Samozřejmostí je možnost vytváření a editace další uživatelů, změna vzhledu prostředí či možnost tvorby vlastního menu. Ze systémových funkcí jsou asi nejdůležitější položky Overview a VHCS debugger.

Overview zobrazí aktuální "zdraví systému", a to od uptime přes load až k obsazenosti paměti a disků. VHCS debugger nám na druhou stranu dává velmi dobrou nápovědu, pokud jsme v systému něco nenastavili tak, jak má být. Za zmínku také stojí položka Statistic. Díky ní si můžeme prohlédnout, kolik dat přes náš server proteklo.

Druhá úroveň portálu, ve které nalezneme samotné prodejce, již oproti administrátorskému rozhraní neskrývá tolik systémových položek. Na místo nich nalezneme například přehled hostingových programů, které můžeme editovat a poté nabídnout koncovým klientům, nebo třeba systém pro zasílání novinek a upozornění.

Poslední, a tou asi nejdůležitější, úrovní je právě rozhraní koncových majitelů domén. Ti mohou pomocí několika málo kliknutí změnit svůj hostingový plán a přejít tak například na dražší tarif, jenž jim nabídne více místa na disku či více služeb. Vytvoření subdomény, e-mailového a FTP účtu je pro majitele domén otázka několika málo vteřin. V případě, že má majitel aktivovaný přístup i k databázovému systému, není pro něj překážkou stejným způsobem vytvořit novou databázi, ke které se pak lze připojit přes integrovaný phpMyAdmin.

Vzhledem k tomu, že funkcí, které jsou integrovány v systému, je opravdu hodně, dovoluji si je shrnout do kratičkého seznamu.

Obrázek: vhcs obr3.jpg


Seznam podporovaných funkcí

Domény - přidání subdomény či aliasu včetně přesného určení výchozího místa na disku a automatického forwardu na jinou stránku.

E-maily - všechny e-maily lze automaticky forwardovat na jinou adresu. Pro jednotlivé účty můžeme vytvořit automatickou odpověď nebo doménový koš. Dostupný je i webmail.

FTP účty - každému FTP uživateli lze určit přesné umístění složky na disku, ovládat FTP lze přes webové rozhraní.

SQL - vytvoření nové databáze a uživatelů, spouštění SQL příkazů přímo z administrace, přístup přes phpMyAdmin.

Chybové stránky - možnost umístění vlastních chybových stránek Apache (pro Error 401, Error 403, Error 404 a Error 500).

Chráněné oblasti - editace jednotlivých uživatelů a skupin včetně přesných práv pomocí souborů .htaccess.

Backup - automatická obnova dat z jeden den staré zálohy, pomocí jediného kliknutí.

Statistiky - statistiky přenosu dat rozdělené po jednotlivých službách (web, mail, FTP) s možností zpětného zobrazení po jednotlivých měsících.

Ticket systém - zaslání dotazu nebo zprávy správci systému přímo z administračního rozhraní.


Obrázek: vhcs obr4.jpg

"Hackujeme"

I přestože máme kompletní systém, je pár věcí, které na závěr do funkčního rozhraní vždy dodatečně implementuji. První z nich je integrace antiviru a antispamu do e-mailové brány. Díky instalačnímu skriptu již není potřeba nic měnit ručně. Stačí jej znovu spustit a po odsouhlasení licenčních podmínek stisknout klávesu [M] pro přístup do "hack" menu. Tam pak zvolit položku Clamav & Spamassassin. Instalátor následně udělá "špinavou práci" za nás - stáhne nejnovější balíčky programu Clamav a Spamassassin včetně upravených konfiguračních souborů, rozbalí je, nainstaluje a restartuje mailový systém.

Stejným způsobem lze například do DNS systému přidat SPF recordy, které by u žádné domény neměly chybět. Další úpravou je lokalizace webmailu do češtiny. Konfiguraci naleznete v souboru /var/www/vhcs2/gui/tools/webmail/inc/config.languages.php. Tam zeditujte položku $default_language na hodnotu 'cz';. Poslední úpravou bývá automatická replikace souboru named.conf na sekundární DNS server. Přesný návod, jak toho docílit, však vzhledem k jeho obsáhlosti budete muset prostudovat na stránkách projektu.

Co mi chybělo

Oproti zmiňovanému ISPconfigu chybí VHCS ve webovém rozhraní některé důležité funkce. Mně konkrétně vadí například nemožnost přidání vlastního A (MX, CNAME) záznamu do DNS k doméně. Tyto změny je proto potřeba udělat ručně přímo v konfiguračním souboru na serveru. Dalším dost vážným problémem je lokalizace programu. Přestože systém obsahuje devět různých jazyků, čeština mezi nimi chybí. To by se již brzy mohlo změnit, neboť ve volném čase neustále pracuji na překladu tohoto projektu a je dost možné, že v době, kdy tento článek budete číst, již bude čeština ke stažení přímo na domovských stránkách projektu.

Poslední zamyšlení (nebo spíše výtka) patří filozofii celého systému. Uvědomme si prosím, že všechny démony fyzicky běží na jednom a tom samém stroji. Pokud dojde k jeho havárii (ať již kvůli živelní pohromě, chybě některé z PC komponent nebo například útoku hackera), ztratíme naprostou kontrolu nad celým systémem. Daleko elegantnější by tedy bylo držet mail, WWW a DNS oddělené od sebe na různých serverech.

Zhodnocení závěrem

VHCS je dobře propracovaný, přehledný a odladěný systém. Sám jej provozuji již relativně dlouho a během této doby jsem ještě nezaznamenal žádný vážnější problém. Jedná se o velice slibný projekt, na kterém se intenzivně pracuje a autoři neustále implementují nové funkce, které si uživatelé na jejich portálu žádají.

Diskuze (15) Nahoru