VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
NÁSTROJE PRO SPRÁVU WEBHOSTINGOVÉHO SERVERU
BAKALÁŘSKÁ PRÁCE BACHELOR´S THESIS
AUTOR PRÁCE AUTHOR
BRNO 2009
Tomáš Hampl
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
NÁSTROJE PRO SPRÁVU WEBHOSTINGOVÉHO SERVERU TOOLS FOR MANAGING WEBHOSTING SERVER
BAKALÁŘSKÁ PRÁCE BACHELOR´S THESIS
AUTOR PRÁCE
Tomáš Hampl
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
BRNO 2009
Ing. Petr Weiss
Abstrakt Tato práce se zabývá problematikou implementace nástrojů pro správu a provoz webhostingového serveru. Základním cílem je navržení a implementace takového nástroje, který by pohodlně umožňoval spravovat jednotlivé hostované domény a jejich poštovní účty, účty pro FTP přístup a MySQL databáze. Součástí této práce je také vhodné zvolení webového, FTP a poštovního serveru a především popis konfigurace.
Klíčová slova Web, hosting, webhosting, server, Apache, postfix, proFTPd, courier, webserver, mailserver, FTPserver, MySQL, mailhosting.
Abstract This work deals with the implementation of tools for managing of a webhosting server and maintaining of such a server. The basic aim is to design and implement such tools that would easily allow an individual manage of the hosted domain, email accounts, accounts for FTP access and MySQL database. In addition, selecting an appropriate web, FTP, and mail server, and especially configuration of these serveres is also the aim of this work.
Keywords Web, hosting, webhosting, server, Apache, postfix, proFTPd, courier, webserver, mailserver, FTPserver,MySQL, mailhosting.
Citace Tomáš Hampl: Nástroje pro správu webhostingového serveru, Brno, FIT VUT v Brně, 2009
Nástroje pro správu webhostingového serveru Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením Ing. Petra Weisse. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal.
…………………… Jméno Příjmení Datum
Poděkování Rád bych poděkoval vedoucímu bakalářské práce Ing. Petru Weissovi za pomoc, ochotu, názory a věcné připomínky a také technickému řediteli firmy Formsoft s.r.o. panu Zdeňku Formanovi za poskytnutí technických prostředků pro tvorbu bakalářské práce .
© Tomáš Hampl 2009. Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
Obsah 1 Úvod...................................................................................................................................................2 1.1 Rozdělení kapitol........................................................................................................................2 2 Programové vybavení........................................................................................................................3 2.1 Operační systém..........................................................................................................................3 2.2 PHP ............................................................................................................................................3 2.3 Webový server............................................................................................................................4 2.4 MySQL server.............................................................................................................................8 2.5 FTP server...................................................................................................................................8 2.6 Poštovní server............................................................................................................................9 2.7 Řídící aplikace..........................................................................................................................10 3 Moduly systému...............................................................................................................................11 3.1 Grafický přehled modulů systému.............................................................................................11 3.2 Modul webu..............................................................................................................................12 3.3 Modul databáze ........................................................................................................................12 3.4 Modul FTP................................................................................................................................12 3.5 Modul pošty .............................................................................................................................12 4 Návrh a implementace řídící aplikace..............................................................................................14 4.1 Návrh databáze..........................................................................................................................14 4.2 Popis tabulek.............................................................................................................................14 4.3 ER diagram...............................................................................................................................15 4.4 Případy použití..........................................................................................................................16 4.5 Implementace............................................................................................................................17 4.6 Testování...................................................................................................................................17 5 Moduly řídící aplikace......................................................................................................................18 5.1 Registrace..................................................................................................................................18 5.2 Přehled domén..........................................................................................................................19 5.3 Správa pošty..............................................................................................................................20 5.4 Správa webu..............................................................................................................................21 5.5 Správa FTP...............................................................................................................................22 5.6 Správa databáze........................................................................................................................22 5.7 Správa poštovní schránky..........................................................................................................23 6 Závěr................................................................................................................................................24
1
1
Úvod
V současné době skoro každý z nás využívá internet, a to především internetové stránky. Lidé si čím dál tím častěji zařizují vlastní webové stránky. K tomu často využívají poskytovatele hostingových služeb. Jejich stránky potom provozují, aniž by měli tušení, co vše je třeba, aby jejich stránky fungovaly. Tato bakalářská práce se zabývá vytvořením komplexního systému pro správu webhostingového serveru. Jelikož se touto problematikou zabývám již delší dobu, mohu zde uplatnit a především rozšířit své dosavadní znalosti se správou, konfigurací linuxových serverů a programování webových aplikací. Pro vytvoření webhostingového systému bude nutné nejdříve nastudovat danou problematiku, vybrat vhodné aplikace (webový, poštovní, FTP server) a navrhnout daný systém tak, aby bylo možné spravovat ho z webové aplikace.
1.1
Rozdělení kapitol
●
V kapitole 1 je úvod této práce.
●
V kapitole 2 je popsáno zvolené programové vybavení a jeho možnosti.
●
V kapitole 3 je schéma modulů systému a jejich popis.
●
V kapitole 4 je popsáno jak probíhal návrh a vývoj řídící aplikace.
●
V kapitole 5 jsou popsány části řídící aplikace tak jak je vidí uživatel.
●
V kapitole 6 je závěr se zhodnocením dosažených výsledků.
2
2
Programové vybavení
V této části je vysvětleno proč a jaké aplikace jsem si zvolil a jejich možné konfigurace tak, aby bylo co možná nejednoduší použití webové konfigurace bez nutnosti restartovat jednotlivé služby běžící na hostingovém serveru a přitom dostatečně bezpečné.
2.1
Operační systém
Jako operační systém pro hostingový server jsem zvolil Debian GNU/Linux což je distribuce GNU/Linuxu, jeho aktuální verze 4.0r5 1. Debian je distribuce, která není „komerční“ oproti některým jiným distribucím za ním tedy nestojí žádná softwarová firma, ale je spravován komunitou. Pro svou stabilitu a jednoduchost údržby zejména díky vlastnímu balíčkovacímu systému (deb balíčky) je vhodný a často používaný jako serverový operační systém.
2.2
PHP
PHP je rekurzivní zkratkou pro PHP hypertextový preprocesor. Je to skriptovací jazyk převážně používaný pro programování dynamických internetových stránek. Lze ho také využít pro tvorbu desktopových a konzolových aplikací. V případě provozování PHP pro internetové stránky je skript prováděn na straně serveru. Požadavek o zobrazení stránky je přijat webovým serverem a ten poté řízení předá PHP interpretu a jeho výstup příjme a předá do prohlížeče klienta. Syntaxe jazyka je podobná programovacím jazykům jako C , Python, Java.
2.2.1
Propojení s web serverem
PHP interpret je tedy nutné nějakým způsobem propojit z webovým serverem. Záleží zde především na konkrétním software pro webový server. Pro mnou zvolený webový server Apache jsou k dispozici 3 možná řešení.
●
mod_php – speciální modul do apache který spouští PHP interpret pod stejným uživatelem jako běží webserver. Tento modul poskytuje vysoký výkon, avšak male možnosti konfigurace.
1 – více na oficiálních stránkách http://www.debian.org/ 3
●
FastCGI nebo CGI + PHP – CGI je technologie, která definuje rozhraní na jedné straně webserver a na druhé straně může stát aplikace v různém jazyce např. C, C++, Java, Python a také PHP. Je zde možné definovat pod jakým uživatelem bude cílová aplikace spouštěna. Při propojení s PHP však neposkytuje výkonnost jako mod_php.
●
SuPHP také modul pro webový server Apache, který však umožňuje nastavovat uživatele, pod kterým bude spuštěn proces PHP. Tento modul ovšem také nedosahuje výkonosti mod_php
Zvolil jsem si první řešení pomocí mod_php, a to především kvůli jeho výkonnosti. Bezpečnost provozu jednotlivých domén zajišťuji pomocí modulu Virtual Hosting System (kap. 2.3.4)
2.3
Webový server
Zvolil jsem si webový server Apache a aktuální verzi 2.2.8. Nyní je nepoužívanějším webovým serverem na světe dle výsledků server netcraft1. Apache je modulární, což znamená, že jeho funkcionalitu je možné rozšiřovat zaváděním různých modulů, kterých je poměrně široká škála. Základním a požadovaným modulem je paměťový modul Multi-Processing Module (dále mpm)(kap. 2.3.1). Více informací o projektu Apache webserver je možné nalézt na oficiálních stránkách [2]. Informace o možných konfiguracích web serveru jsem získal dlouhodobou praxí a studiem.
2.3.1
Paměťové moduly
Paměťový modul je plánovač procesů uvnitř Apache. Přijde-li požadavek paměťový modul (mpm) se postará o spuštění nového procesu, pokud je to třeba předá požadavek nějakému čekajícímu procesu, případně zastaví čekající procesy, pokud je jich zbytečně mnoho. Apache tedy ve většině konfigurací funguje jako konkurenční server.
Aktuálně jsou k dispozici 3 paměťové moduly o kterých má smysl se zmínit: prefork, pecrhild a worker. 2.3.1.1
mpm prefork
Tento paměťový modul vytváří pouze nové procesy a je tedy vhodný pro používání modulu mod_php. Protože tento modul neumí pracovat ve vláknech.
1 - http://news.netcraft.com 4
2.3.1.2
mpm worker
Dle mých testů je nejvýkonnějším paměťovým modulem a tedy vhodným pokud je nutné zajistit nejvyšší možný výkon webového serveru a to především obsluhu velkého množství současných požadavků v co nejkratším čase. Používá jak vytváření nových procesů, tak jejich vláken a není tedy možné ho použít v kombinaci s modulem mod_php. 2.3.1.3
mpm perchild
Tento paměťový modul umožňuje spouštění jednotlivých virtuálhostů pod různými uživateli je tedy vhodný pro hostingové služby, kde každá doména má vlastního unixového uživatele je poté razantně zvýšena bezpečnost. Jeho verze pro Apache2 byla však označena jako nestabilní a aktuálně není doporučeno ji používat.
2.3.2
Virtuální hosté
Konfigurace Apache se skládá z globální konfigurace a poté z virtuálních hostů (virtual hosts). V globální konfiguraci se nastavují například moduly které se mají načíst, ip adresy a porty na kterých má Apache naslouchat (se na ně bindovat), parametry paměťového modulu a mnoho dalšího. Virtuální hosté jsou pak nastavením pro určitý větší celek jako je například doména, provoz na daném portu nebo adrese. Zde se definuje jaké aplikace se starají o obsloužení požadavku případně na kterou část filesystému se má požadavek směrovat. Virtuální hosté se dělí do dvou skupin a to name-based a ip-based. 2.3.2.1
Name-based virtual host
Před definicí virtuálních hostů nadefinujeme parametr NameVirtualHost, v definici hosta dále parametr server name, který říká jakou doménu chceme tímto virtuálním hostem obsluhovat. Můžeme tedy mít na serveru jednu ip adresu, na kterou budou směřovat DNS záznamy N domén. Apache je schopný rozeznat jakou URL zadal uživatel v prohlížeči a dle toho vybrat správný virtuální host, který ho obslouží. Je důležité si uvědomit, že tuto funkcionalitu zajišťuje aplikační vrstva, je tedy nutné, aby webový prohlížeč odeslal http hlavičku obsahující adresu, na kterou se ptá, protože toto není Apache schopný sám zjistit. Další nevýhodou je SSL komunikace tedy https. Není možné provozovat name-based virtual hosting pro hosty používající https tak, aby zde každý host měl svůj vlastní certifikát. Je možné mít jeden společný, ale ten nebude nikdy platný, protože certifikát se vydává pro určité doménové jméno. Důvodem, proč to vlastně není možné je právě to, že zjištění URL adresy pro výběr virtuálního hosta získáváme až v aplikační vrstvě, ta je však šifrovaná a pro rozšifrování je nutný klíč. Apache však neví který klíč, protože ještě není zvolen virtuální host pro 5
obsluhu požadavku a takto stále dokola. Jediným řešením je tedy rozpoznat virtuálního hosta někde níž než je aplikační vrstva, což umožňuje právě ipbased virtual host. Pokud pro danou URL existují dva různí hosté, což se stát může a stává při složitějších konfiguracích aplikuje se vždy ten první nadefinovaný při spouštění Apache. Obecně tedy platí ten výše k začátku konfiguračním souboru nebo ten jehož název konfiguračního souboru je výše v abecedním pořadí. 2.3.2.2
IP-based virtual host
IP based virtuální hosting funguje jednoduše tak, že každý virtual host je nastaven pro jedinečnou kombinaci ipadresa, port. Již po vytvoření klientského soketu je tedy zřejmé, který virtuální host bude požadavek obsluhovat, protože Apache ví přes jakou ip a port komunikace přichází. Konfigurace je poměrně jednoduchá, celý Apache se nabinduje na všechny ip a porty přes které přichází požadavky a jednotliví virtuální hosté pak definují s parametrem jakou kombinaci ip:port mají obsluhovat. Zde zmiňovaný problém s https není, protože výběr hosta je znám již s ip vrstvy a na aplikační vrstvě je tedy možné data rozšifrovat.
2.3.3
Inicializace domény z webového rozhraní
Každá doména hostovaná na serveru musí být nastavena v konfiguraci webového serveru Apache. Nabízí se tři možná řešení jak toto nastavení z webového rozhraní provést: Provést vygenerování konfigurace pro obsluhu dané domény a nechat Apache načíst novou konfiguraci. Protože uživatel webové aplikace nemá k takovéto akci oprávnění, je zde možné použít řešení pomocí aplikace sudo. Aplikace sudo umožňuje provést spuštění programu pod jiným uživatelem. Je zde možné nastavit jaký uživatel může jaké aplikace spouštět pod jakým uživatelem. Můžeme tedy pomocí sudo spustit skript, který vygeneruje konfigurace pro webový server a zajistí jejich načtení (restart webového serveru). Z webové aplikace zapisovat do MySQL databáze konfigurace pro Apache a tyto číst periodicky spouštěným skriptem, který z nich vygeneruje konfigurační soubor. A zajistí aplikaci nové konfigurace(restart webového serveru). Použít pro konfiguraci Apache modul Modul Virtual Hosting System, který konfigurace načítá z MySQL a provádět změny zde. Není poté nutné provádět restart webového serveru a ohrožovat tak běh právě vykonávaných aplikací. Zvolil jsem třetí variantu řešení inicializace. Další informace v následující kapitole (2.3.4). 6
2.3.4
Konfigurace pro obsluhu více domén
Pokud tedy chceme na serveru hostovat více domén je vhodné použít namebased virtual hosting a pro případné zájemce o https obětovat ipadresu pro danou doménu. Je zde ale další problém a to je bezpečnost. Apache běží pod jedním uživatelem obvykle www-data a pokud použijeme mod_php tyto oprávnění se předávají i PHP interpretu. A pak jakýkoliv zákazník si pomocí skriptu může přečíst obsah jiného zdrojového souboru (jiného zákazníka) – například údaje pro připojení k databázi či jiné citlivé informace. Pro PHP lze nastavit tzv. safe_mode a open_basedir direktivy, které upravují konfiguraci PHP a to je tedy nutné nastavovat pro každou doménu samostatně. Je zde možnost použití perchild paměťového modulu, který ale není stabilní, dále mod_ruid, který nastaví uid procesu podle uid vlastníka souboru, a nebo nastavením spouštění PHP pomocí fast CGI v kombinací se SuExec, které ale ovšem, jak již bylo zmíněno, není příliš výkonné. Případně je možné nahradit mod php modem suPHP, který ale je taktéž cca 10-krát pomalejší oproti standardnímu modulu mod_php. Další možností je modul Modul Virtual Hosting System - mod_vhs. Tento modul umožňuje získávat informace pro Virtual hosty z databáze - MySQL, LDAPu, nebo například PAM. Již dříve jsem prakticky vyzkoušel variantu řešení pomocí perchild v kombinaci s první variantou inicializace s kapitoly 2.3.3. Varianta se osvědčila a funguje dobře, ale z důvodu větší stability, a zároveň bezpečnosti jsem se rozhodl pro variantu s pomocí mod_vhs. Inicializace serveru tedy také není nutná protože veškeré nastavení je databázi MySQL. Po kompilaci speciálního modulu pro apache a jeho konfiguraci je možné uchovávat nastavení pro jednotlivé obsluhované domény v databázi. Tyto nastavení je navíc možné měnit a apache aplikuje změny automaticky a ihned bez nutnosti jeho restartu. Každá doména třetího řádu tedy musí mít v databázové tabulce pro konfiguraci apache záznam kde se definuje především název této domény, složka kde najít patřičné stránky a také nastavení pro PHP interpret jako je openbasedir, safe mod, memory limit a mnoho dalších.
2.3.5
Konfigurace pro obsluhu domén třetího řádu
Pokud chceme automaticky obsluhovat domény třetího řádu jako jsou například pepa.domena.tld a honza.domena.tld je asi nejjednodušším způsobem použit mod_vhost_alias což je modul, který podle definovaného adresáře interpretuje jeho podadresáře jako další virtuální hosty. Podle předchozích domén by konfigurace byla následovná: vytvoření virtuálního hosta pro doménu domena.tld a nastaveni jeho aliasu na *.domena.tld takto jakýkoliv požadavek na cokoliv.domena.tld se použije tento virtuální host. Pomocí direktivy VirtualDocumentRoot nastavíme domovský adresář
7
této subdomény. Například takto : VirtualDocumentRoot /var/www/domena.tld/%-3/ to znamená, že pro subdoménu pepa.domena.tld budou webové prezentace uloženy v /var/www/domena.tld/pepa/ Toto řešení však nepoužívám veškeré subdomény se nastavují do konfigurační tabulky modulu mod_vhs, který každý takovýto záznam také interpretuje jako samostatného virtuálního hosta.
2.4
MySQL server
MySQL server je databázový server. Jeho obecné konfigurace a nastavení jsou v konfiguračním souboru my.ini. Nastavení uživatelských účtů a jejich oprávnění na jednotlivé databáze, tabulky případně typy dotazů jsou ve speciální databázi MySQL. Vytváření a práva uživatelských účtů je možná pod uživatelem, který na takovéto akce má oprávnění (tzv. globální oprávnění). Správa je tedy možná poměrně jednoduše přes webové rozhraní. Při hostování více domén a subdomén je nejvhodnější vytvářet uživatele podle jména dané domény a databáze pojmenovat stejným názvem jako uživatele. Vede to k daleko větší přehlednosti a orientaci v databázovém serveru. Je zde pouze jedno omezení a to, že název databáze nesmí obsahovat tečky, diakritiku a je omezen počtem znaků. Více o projektu MySQL databáze je možné nalézt v oficiální dokumentaci [1] .
2.5
FTP server
Jako FTP server jsem zvolil aplikaci proFTPd. Tento FTP server je v implicitní konfiguraci nastaven pro obsluhu unixových uživatelů. Je tedy možné se na něj přihlásit pod unixovým účtem. Proces obsluhující daného uživatele poté provede operaci setuid (změna vlastníka procesu) a namapuje jako nejvrchnější (root) adresář FTP domovský adresář uživatele. Poměrně jednoduchou konfigurací je však možné tento FTP server nastavit pro autentizaci oproti MySQL (nebo pgsql) databázi. Máme tedy databázovou tabulku FTP účtů kde máme údaje pro login a heslo (nebo jeho otisk), kam mapovat root adresář po přihlášení, za jakého uživatele se má daný účet vydávat a do jaké skupiny patří (klíč do tabulky skupin). Je také možné vést statistiky o jednotlivých účtech (poslední přihlášení, počet přihlášení). Další nutnou tabulkou pro tuto konfiguraci je tabulka skupin. Zde je pouze virtuální název skupiny a skutečná (unixová) skupina. Další možnou funkčností je aplikace quot. Je možné nastavit quoty pro jednotlivé soubory, celkový přenos po dobu spojení nebo celkově a to jak nahrávaná data, tak i stahovaná, dále je možné omezovat počty nahraných nebo stažených souborů. Především konfigurace uživatelů oproti MySQL databázi je velice vhodná protože přidání nebo úpravu uživatele můžeme provést pomocí webové aplikace a to bez nutnosti restartovat FTP server. 8
Více o projektu ProFTPD je možné nalézt na oficiálních stránkách projektu [10]. Při vytváření konfigurace oproti MySQL databáze jsem vycházel z návodu publikovaného na serveru HowtoForge [5].
2.6
Poštovní server
Jako poštovní aplikace jsem zvolil: Postfix jako SMTP server pro přijímání a s nástavbou SASL2 pro pro autentizaci před odesíláním, Courier-IMAP jako IMAP server, Courier-POP3 jako POP3 server, Courier-Maildrop pro třídění přijaté pošty. Všechny tyto aplikace používající MySQL databázi pro autorizaci uživatelů a vedení uživatelských účtů. Pošta se uschovává ve formátu maildir na diskovém prostoru serveru.
2.6.1
Postfix
Postfix je jádrem celých poštovních služeb. Je nakonfigurován oproti MySQL databázi kde jsou uloženy konfigurace jednotlivých domén a poštovních účtů. Možnosti nastavení v databázi jsou
Nastavení aliasů pro lokální doručovaní.
Relokace uživatelských účtů (oznámení že schránka byla zrušena a odeslání informace o nové schránce).
Nastavení kam doručovat poštu pro danou doménu (lokálním unix uživatelům, virtuálním uživatelům, maildropu pro třídění pošty).
Definice uživatelských účtů (email,otisk hesla, unixový uživatel pro suid, homedir, maildir, uživatelská quota (na počet zpráv nebo kapacitu).
Aliasy pro virtuální uživatele.
Doménové koše.
Povolit/zakázat odesílání/přijímání doménám/jednotlivým schránkám.
Toto vše je tedy možné nastavit pomocí MySQL databáze a tedy bez nutnosti restartu poštovního serveru. Opět konfigurací v databázi, je jednoduše možné provádět tyto nastavení pomocí webové aplikace. Poštovní server nemusí sloužit pouze pro příjem pošty, ale je možné ho také nastavit pro její odesílání. Je možné nastavit důvěryhodné sítě (například u ISP providerů), ale vhodnější je před odesláním emailu provést autentizaci pomocí metody SASL2 a to opět oproti tabulce uživatelů.
9
Více s samotném serveru postfix na oficiálních stránkách projektu [6] při vytváření konfigurace oproti MySQL jsem čerpal především z českého návodu pana Burdy [8] a podobného anglického návodu [9].
2.6.2
Courier-IMAP a Courier-PO3
IMAP a POP3 jsou protokoly pro výběr schránek. Jako servery jsou zde Courier-pop3 a CourierIMAP (více na oficiálních stránkách [7]) tyto aplikace jsou opět nakonfigurované oproti MySQL databázi a to stejné jakou používá postfix (odpadají duplicitní údaje o hesle a loginu pro danou schránku). Zde se provádí pouze autentizace uživatele a po té přečtení informace, kde je uživatelův maildir a tedy jeho pošta. Oba servery je možné nastavit pro obsluhu SSL tedy POP3s a IMAPs.
2.6.3
Courier-maildrop
Tato aplikace slouží pro uživatelské třídění pošty. Při doručování pošty tato aplikace dostane od SMTP serveru email a informace, kterému uživateli patří. Aplikace si načte filtr daného uživatele a podle jeho pravidel provede operace s emailem. Je zde tedy možné přeposlat, kopírovat, přesunout do složky, zahodit email, ale také předat email spamfilteru a podle jeho návratové hodnoty se rozhodnout jak s emailem dále naložit. Více informací je možné nalézt na oficiálních stránkách [7].
2.7
Řídící aplikace
2.7.1
Volba jazyka
Řídící aplikace je dle zadání webovou aplikací, ale stále bylo nutné zvolit programovací jazyk a dále vhodný framework pro zvolený jazyk. Volba jazyka byla v mém případě jednoznačná pro PHP, protože s tímto jazykem již mám dlouhodobé zkušenosti.
2.7.2
Volba frameworku
Ačkoli je PHP velice rychlý vývojový nástroj vybíral jsem dále vhodný framework, který by umožnil větší modularitu, lepší práci s objekty, možnost jazykových mutací a v případě potřeby mít také možnost předělat uživatelské rozhraní bez zásahů do jádra systému. Zvolil jsem tedy framework Kohana, který používá Model View Controller (MVC) architekturu a zaměřuje se na bezpečnost, lehkost a snadnost použití. Více informací o frameworku kohana na oficiálních stránkách projektu [11]. 10
3
Moduly systému
V této kapitole bude celý systém rozdělen na jednotlivé logické části, jejich funkce a způsob komunikace s ostatními částmi hostingového serveru. Přehled modulů a vztahů mezi nimi je zobrazen na obrázku 3.1. Popis jednotlivých modulů je v následujících kapitolách.
Obrázek 3.1 Přehled modulů
11
3.1
Modul webu
Je nejdůležitější součástí celého systému. Tento modul obsahuje webový server Apache a PHP interpret. Nastavení modulu je uloženo v databázi kam ho zapisuje řídící aplikace, která je provozována jako webová aplikace takže za pomocí tohoto modulu. Řídící aplikace tedy není schopná bez tohoto modulu fungovat. Modul tedy pracuje s databází kde jsou uvedeny konfigurace pro jednotlivé weby (domény), které má obsluhovat a také s úložištěm webových stránek, což je diskový prostor kde jsou uloženy stánky jednotlivých webů (domén).
3.2
Modul databáze
Je také velice důležitou částí systému. Obsahuje především databázový server (případně servery nebo databázový cluster). Bez jeho existence by systém nebyl funkční. Veškeré konfigurace jednotlivých modulů jsou uloženy zde. Jsou zde také uživatelské databáze pro provozování webů. Konfiguraci uživatelských databází provádí řídící aplikace.
3.3
Modul FTP
Slouží pro přístup uživatelů k úložišti webových stránek. Každá doména může mít vytvořený FTP účet aby bylo možné pro danou doménu nahrát webové prezentace. Konfiguraci účtů provádí řídící aplikace do databáze odkud je FTP server načítá.
3.4
Modul pošty
Je nejsložitější částí systému a to především protože obsahuje větší množství pod částí, které jsou vzájemně propojeny. Konfigurace uživatelských schránek je opět uložena v databázi odkud ji načítají jednotlivé části modulu. ●
SMTP server – slouží pro příjem a odeslání pošty. Při příjmu načítá konfiguraci pro zjištění existence schránky a pokud schránka existuje předává email službě maildrop.
●
Maildrop – dle příjemce přijímané zprávy načte uživatelský filtr pro filtrování příchozí pošty a dle jeho pravidel provede operace s emailem. Je-li třeba vytvoří úložiště pro danou schránku a následně do toho úložiště email uloží.
●
POP3 server – slouží pro přenos zpráv z úložiště do počítače uživatele. Používá konfiguraci v databázi pro autentizaci uživatele a nalezení jeho úložiště. 12
●
IMAP4 server – stejně jako POP3 slouží pro přenos zpráv mezi úložištěm a uživatelem. Také používá konfiguraci v databázi pro autentizaci uživatele a nalezení jeho úložiště. V případě přístupu přes webmail předává tyto zprávy do webmailové aplikace.
●
SASL2 – slouží pro autentizaci před odesíláním zpráv z jiných částí sítě nežli jsou ty nastavené jako bezpečné. V aktuální konfiguraci této práce je za bezpečný považován pouze lokální server. Používá databázovou konfiguraci pro autentizaci uživatele, který se snaží odeslat email.
13
4
Návrh a implementace řídící aplikace
4.1
Návrh databáze
Databázové tabulky jsou do jisté míry zadány tak, aby vyhovovaly jednotlivým aplikacím. Toto schéma není možné nějakým způsobem výrazně modifikovat. Bylo nutné si ujasnit, jakým způsobem bude řídící aplikace strukturována a dle toho vytvořit vhodný návrh zbývajících tabulek. Bylo taky nutné vytvořit uživatele a přidat jim oprávnění. Každá služba používá vlastního uživatele s vlastním unikátním heslem a má nastavena oprávnění pouze na tabulky, se kterými pracuje a to ve většině případů pouze pro čtení. I v případě, že by tedy potencionální útočník získal účet některé služby, nebude schopný data modifikovat a přečíst data jiných tabulek. Veškerá hesla systému (pro řídící aplikaci, pro FTP účet, pro poštu a pro databázový účet) jsou uchovávána pouze v podobě otisku vzniklého hashovací funkcí.
4.2
Popis tabulek
Databáze vytvořeného systému obsahuje následující tabulky: users - tabulka uživatelksý účtů řídící aplikace userdetails - detaily k uživatelským účtům registrations - tabulka pro registrační proces roles - tabulka rolí uživateslkých účtů domains -tabulka domén evidovaných v systému (domény druhého i třetího řádu) z_ftp_ftpuser - uživatelské účty ftp a definice úložiště z_ftp_ftpgroup - skupiny ftp uživatelů 1 z_ftp_ftpquotalimits - tabulka pro definování FTP quot 1 z_ftp_ftpquotatallies - tabulka využívá FTP server k vlastním potřebám 1 z_postfix_trash -tabulka pro aktivaci doménového koše 1 vhost - konfigurační tabulka pro weboý server Apache z_postfix_alias -aliasy pro lokální doručování 1 z_postfi_email - tabulka pro adresy na které se neuplatňuje doménový koš 1 z_postfix_relocated - tabulka pro oznamování o zrušených schránkách 1
1 – tabulka je v systému pouze pro správnou funkci služeb. Řídící aplikací není využívána 14
z_postfix_transport - tabulka pro určení nakládání z emailem po přijetí z_postfix_users - tabulka pro definici emailových schránek schránek z_postfix_virtual - tabulka pro definici aliasů virtuálním uživatelům z_postfix_access - nastavení chování obsluhy pošty pro domény z_database_databases - tabulka pro evidenci uživatelských databází
4.3
ER diagram
Obrázek 4.1 ER diagram Popis tabulek ER diagramu je možné nalézt v předchozí kapitole 4.2 15
4.4
Případy použití Zvolit doménu druhého řádu
Spravovat poštu domény
Zvolit doménu třetího řádu
Spustit/zastavit obsluhu w ebserveru pro doménu
Free účet
Premium účet
Přidat/odebrat/editovat Ftp účet pro doménu
Přidat/odebrat/editovat DB účet pro doménu
Přidat doménu druhého řádu
Přidat/odebrat/editovat Poštovní schránku pro doménu
Obrázek 4.2 Model případu užití V modelu případu použití (obrázek 4.2) jsou znázorněni dva typy účtů free a premium a znázorněny akce které tito uživatelé mohou využívat.
4.4.1
Popis případu užití
Jednotlivé případy užití jsou v následujících kapitolách takto: Zvolit doménu druhého řádu – kap. 5.2.2 Zvolit doménu třetího řádu – kap. 5.2.3 Spustit/zastavit obsluhu webserveru pro doménu – kap. 5.4.1 Přidat/odebrat/editovat Ftp účet pro doménu – kap. 5.5 Přidat/odebrat/editovat DB účet pro doménu – kap.5.6 Přidat/odebrat/editovat Poštovní schránku pro doménu – kap.5.7 Spravovat poštu domény – kap.5.3 Přidat doménu druhého řádu – kap. 5.2.1 16
4.5
Implementace
Vlastní implementace v jazyce PHP probíhala po jednotlivých funkčních částech tak, jak budou popsány v kapitole 5. Během implementace byly všechny služby již připraveny a otestovány pro ovládání řídící aplikací (tedy jejich konfigurace v databázi). Protože zadání bylo jednoznačné a v průběhu vývoje neměnné, byla vlastní implementace poměrně přímočará a bylo přesně jasné jaké jsou požadavky a jak provést implementaci. S pohledu softwarového inženýrství tedy ideální stav.
4.6
Testování
Po implementaci určité funkční části došlo k jejímu otestování a pokud se vyskytly chyby přistoupil jsem k implementaci jejich oprav. Takovým to způsobem jsem postupoval dokud testy, které jsem prováděl
neodhalily žádnou chybu. Poté následovalo nasazení na testovací server, kde byla
implementace znovu otestována. Po dokončení jednotlivých modulů byl znovu systém několikrát otestován jako celek a případné chyby byly odstraněny. Dle mých testů systém nevykazuje žádné závažné chyby a je plně provozu schopný. Drobné chyby případně další požadavky se však mohou vyskytnout v průběhu reálného používání systému.
17
5
Moduly řídící aplikace
Další částí je návrh a implementace řídící webové aplikace. V předchozích kapitolách bylo řečeno jaké služby na serveru máme, jak jsou nakonfigurovány, jaké jsou jejich možnosti při použité konfiguraci a jak probíhal vývoj řídící aplikace. Teď se tedy zaměřím na řídící aplikaci a její jednotlivé části tak, jak jsou viděny v uživatelském rozhraní.
5.1
Registrace
Registrace uživatelů je nutným modulem proto, aby uživatel získal vstup do řídící aplikace. Registrací vzniká uživatelský účet. Registrací je možné vytvořit free nebo premium účet.
5.1.1
Premium účet
Pro registraci premium účtu je nutné: 1. vyplnit registrační formulář a odeslat jej, 2. dokončit registraci kliknutím na odkaz ve zprávě odeslané na email zadaný v registračním formuláři. Premium účet slouží pro majitele domén druhého řádu, kteří chtějí v systému k těmto doménám provozovat poštovní účty a webové prostory. Takovou doménu druhého řádu je nutné přidat do systému, kde je možné ji označit jako soukromou nebo pro free hosting. Doména označená pro free hosting je nabízena při registraci free účtů.
5.1.2
Free účet
Při registraci free účtu je nutné: 1. vyplnění registračního formuláře (zde se také volí doména třetího řádu o kterou má uživatel zájem), 2. dokončit registraci kliknutím na odkaz ve zprávě odeslané na email zadaný v registračním formuláři. po dokončení registrace je na na email zadaný v registračním formuláři odeslána zpráva s přístupovými údaji k vytvořeným FTP a poštovním účtům
18
5.1.3
Obnova hesla
Systém umožňuje obnovit heslo k přihlašovacímu účtu pokud jej uživatel zapomene. Při obnově je nutné zadat přihlašovací jméno, systém následně vyhledá uživatelův účet provede vygenerování a nastavení nového hesla a přihlašovací údaje odešle na email uvedený u uživatelského účtu.
5.2
Přehled domén
Tato obrazovka zobrazí všechny domény patřící uživateli a to jak domény druhého řádu tak jejich všechny poddomény (tedy domény třetího řádu) a to i ty které uživatel nevlastní. V případě free účtu je zde zobrazena pouze jedna doména třetího řádu zvolená při registraci. Uživatel tedy může vybrat doménu druhého řádu (viz kap. 5.2.2) nebo třetího (viz kap. 5.2.3). Premium uživatel zde má možnost přidat další doménu v jeho vlastnictví (viz kap. 5.2.1)
5.2.1
Přidání domény ve vlastnictví uživatele
Pokud uživatel vlastní doménu druhého řádu u některého z registrátorů domén musí její NS záznamy nejprve nastavit u registrátora a následovně ji v systému vytvořit. Nastavení NS záznamů je možné provést následovně: ●
A záznam vašedoména.tld ip_systému
●
CNAME záznam *.vašedoména.tld ip_systému
●
pro obsluhu pošty: MX záznam priorita 20 mail.vašedoména.tld ip_systému
Legenda : ● ●
vašedoména.tld je doména druhého řádu kterou uživatel vlastní ip_systému je ipadresa hostingového serveru
Poznámka : Není nutné používat CNAME záznam. Veškeré domény třetího řádu které mají fungovat s tímto systémem musí odkazovat na jeho ipadresu což je také možné nastavit jednotlivými A záznamy. Uživatel zde tedy zadává název domény druhého řádu a způsob jejího používání což je soukromá nebo veřejná. Veřejná doména se zobrazí k používání při registraci free uživatelů.
19
5.2.2
Výběr domény druhého řádu
Po zvolení domény druhého řádu se do systému nastaví informace o používané doméně a zobrazí se obrazovka s možnostmi přejít na : ●
editací domény – stejný formulář jako při přidání domény ve vlastnictví uživatele
●
správu subdomén – kap. 5.2.4
●
správu pošty – správa pošty nezávisle na subdoménách (kap. 5.3)
5.2.3
Výběr domény třetího řádu
Po zvolení domény třetího řádu se do systému nastaví informace o používané doméně a zobrazí se obrazovka s možnostmi přejít na : ●
správa webu – kap. 5.4
●
správa FTP – kap. 5.5
●
správa databáze – kap. 5.6
●
správa poštovní schránky náležící k této doméně – kap. 5.7
5.2.4
Správa subdomén
Obrazovka s přehledem domén třetího řádu pro zvolenou doménu druhého řádu. Zde je možné: ●
vybrat doménu třetího řádu – kap. 5.2.3
●
vytvořit novou doménu třetího řádu – do zadávacího pole se vyplňuje pouze prefix budoucí domény tedy například www
5.3
Správa pošty
Správa pošty je modul řidící aplikace, kde se nastavují poštovní schránky pro zvolenou doménu druhého řádu. Každá doména druhého řádu musí mít spuštěnou obsluhu pošty a poté je možné pracovat se schránkami a aliasy. Na základní obrazovce je přehled existujících schránek a emailových aliasů. Možnosti této obrazovky jsou : ●
spustit / zastavit obsluhu pošty
●
smazat zvolenou schránku
●
smazat zvolený alias
●
přidat / editovat schránku
●
přidat / editovat emailový alias 20
5.3.1
Spuštění/zastavení obsluhy pošty
Při spouštění obsluhy se do konfiguračních tabulek vkládá povolení přijímat poštu pro danou doménu a nastavení pro postfix server tak aby předával zprávy aplikaci courier-maildrop. Jde tedy o inicializaci tak, aby poštovní server poštu neodmítal, ale přijal jí a předal ke zpracování aplikaci courier-maildrop, kde jsou definované další pravidla, jak doručit email do správné schránky.
5.3.2
Přidání/editace schránky
Zde si uživatel zvolí jak se daná schránka má jmenovat a nastaví její heslo. Při editaci není možné název schránky měnit. Během vytváření schránky se do konfigurační tabulky emailových schránek vloží záznam s plným názvem schránky, cestou k úložišti na disku a další konfigurační informace tak aby poštovní server schránku správně našel a pop3 a imap4 server při vybírání našel cestu k úložišti emailů a mohl ověřit heslo dále tuto tabulku používá sasl autentizace pro autentizování uživatelů při odesílání. Po vytvoření konfigurace v databázové tabulce se provede vytvoření uživatelského filtru pro filtrovací aplikaci courier-maildrop a na závěr se odešle uvítací email na schránku který dojde do filtrovacího programu courier-maildrop a ten vytvoří adresářovou struk tůru schránky ve formátu maildir.
5.3.3
Odebrání schránky
Při odebrání schránky dojde pouze k odstranění konfiguračního řádku v tabulce emailových účtů.
5.3.4
Přidání/editace aliasu
Uživatel si zde zvolí název aliasu a jeho cíle. Chování emailového aliasu je takové že má vždy přednost při vyhledávání doručování zprávy. Pokud máme například schránky
[email protected] a
[email protected] můžeme založit například alias
[email protected] a nastaví předchozí dvě schránky jako cíle tohoto aliasu. Zpráva na
[email protected] poté bude doručena na obě dvě schránky. Pokud ovšem vytvoříme alias
[email protected] a jako jeho cíl zadáme
[email protected] zpráva zaslaná na schránku
[email protected] bude doručena pouze na
[email protected].
5.4
Správa webu
Modul správa webu zajišťuje konfiguraci apache pro obsluhu dané domény třetího řádu.
21
5.4.1
Zastavení/spuštění webu
Při spouštění webu se pouze vyplňuje email správce webu, který se poté předává PHP interpretu do super globálního pole $_SERVER. Tento email se také zobrazuje ve standardních chybových stránkách serveru. Při založení je do konfigurační tabulky apache serveru zapsán název domény, která se bude obsluhovat, bezpečnostní omezení PHP interpretu a adresář, kde se nacházejí webové prezentace. Tento adresář se také v této chvíli vytvoří pokud již neexistuje.
5.5
Správa FTP
Jak již bylo zmíněno FTP server je možné snadno nakonfigurovat tak, aby načítal účty z MySQL databáze. Webová aplikace tedy pouze přidává, odebírá případně edituje jednotlivé položky v databázové tabulce. V případě editace je zde rozumná pouze změna nebo regenerace hesla. Modul správa FTP zajišťuje aktivaci FTP účtu pro přístup uživatele k webovému prostoru a umožňuje tím nahrát prezentace.
5.5.1
Založení/editace FTP
Při zakládání a editaci se vyplňuje pouze heslo pro tento FTP účet. Při zakládání se do konfigurační tabulky FTP serveru vkládá záznam o uživatelském jménu, heslu a adresáři, kam se má FTP server připojit. Nad tento adresář není možné vystoupit, je tedy zabezpečeno že uživatel se nedostane k prezentacím jiných domén případně do systémových souborů.
5.5.2
Zrušení FTP
Při rušení FTP účtu se pouze smaže konfigurační řádek daného účtu.
5.6
Správa databáze
Správa MySQL databází, účtů, hesel a oprávnění jak jsem zmínil, je možná přímo SQL dotazy. Ve webové aplikaci je ale vhodné si evidovat, která doména používá které databáze, jednak pro možnost kontroly a přehlednost, dále pro případné zálohování databází a v neposlední řadě například pro možnosti monitoringu kolik, která databáze zabírá diskového prostoru a komu vlastně patří. Databázový modul umožňuje uživateli aktivovat databázi a účet pro přístup k ní, případně změnit heslo u přístupového účtu k databázi. 22
5.6.1
Založení/editace databáze
Při zakládání databáze uživatel zadává pouze heslo k databázovému účtu. Při aktivaci se však vytváří databáze a to dočasným připojením k databázovému serveru pod speciálním uživatelem, který má oprávnění pro správu databází a účtů. Název databáze a uživatelské jméno systém generuje automaticky tak aby, administrátor serveru mohl podle názvu databáze určit, ke které doméně patří. Tuto informaci si systém uloží do speciální tabulky, kde si eviduje informace o databázích aktivovaných pro jednotlivé domény. Dále se vytvoří účet a nastaví se mu oprávnění pro vytvořenou databázi.
5.6.2
Zrušení databáze
Při rušení databáze dojde ke zrušení databáze a účtu k této databázi a to opět pomocí speciálního uživatele, který pro tyto akce má oprávnění. Je nutné si uvědomit že dojde k nevratné ztrátě všech dat v databázi.
5.7
Správa poštovní schránky
Tato část umožňuje vytvořit schránku pro doménu třetího řádu případně u této schránky změnit heslo.
5.7.1
Založení/editace schránky
Při zakládání schránky uživatel má možnost zadat pouze heslo. Adresa schránky je definovaná podle názvu vybrané domény třetího řádu. Při vytváření schránky v systému probíhá stejný proces jako bylo popsáno v kap. 5.3.2 přidání / editace schránky.
5.7.2
Smazání schránky
Uživatel má možnost tuto schránku smazat. Při mazání schránky probíhá v systému opět stejný proces jako v kap. 5.3.3 odebrání schránky.
23
6
Závěr
Cílem této práce bylo vytvořit komplexní systém pro správu webhostingového serveru což se mi dle mého názoru podařilo splnit po všech stránkách. Celý systém, díky své rozsáhlosti a širokým možnostem jednotlivých modulů nabízí pouze základní funkčnost i přesto v mnoha částech přesahuje zadání práce. Všechny služby podporují celou škálu dalších možností, ale tyto nejsou využívány v řídící aplikaci. Při tvorbě práce jsem kladl velký důraz na modularitu celého systému a na to, aby doplnění dalších funkcionalit bylo co možná nejednoduší. Oproti zadání je však možné zajišťovat jak webhosting, tak i mailhosting pro jiné domény než je doména, na kterou je nakonfigurován jeho operační systém. Taková to konfigurace je řádově mnohonásobně obtížnější než vytváření schránek a webhosting pouze pro jednu doménu. V práci jsem využil své znalosti s těmito systémy s dřívějšího zaměstnání a snažil se je doplnit dalším studiem a poté vše vytvořit tak aby výsledný produkt byl co možná nejlepší po všech stránkách. To bylo v některých případech problematické protože vysoká bezpečnost a zároveň funkcionalita, kterou jsem požadoval, jsou u některých serverových aplikací navzájem se vylučující vlastnosti. Řídící aplikace díky použitému frameworku s technologii MVC umožňuje pokročilému uživateli rychle a jednoduše změnit vzhled celého uživatelského rozhraní a je také možné použít další jazykové mutace. Výsledný systém je komplexní řešení pro hostování a proto je vhodné jej nasazovat na samostatný server (servery). Systém je připraven pro nasazení a reálné používání, pro jeho konkurence schopnost by bylo vhodné doplnit několik další funkcionalit jako jsou například spamové filtry, lepší politika rolí v ovládací aplikaci, statistiky přenosů pošty, statistiky návštěvnosti webu, statistiky přenosů přes FTP, disková quoty, nastavení chybových stránek a mnoho dalšího, jak by si případný uživatel představoval. V dalším vývoji tohoto systému hodlám pokračovat a v nejbližší době jej také vydat pod všeobecnou veřejnou licencí GNU GPL.
24
Literatura [1]
MySQL Documentation [online]. 2008 [cit. 2009-01-02]. Dostupný z WWW:
.
[2]
The Apache Software Foundation. The Apache HTTP Server Project [online]. 2009 [cit. 200901-28]. Dostupný z WWW:
.
[4]
The PHP Group. PHP: Hypertext Preprocessor [online]. 2009 [cit. 2009-02-15]. Dostupný z WWW:
.
[5]
FALKO , Timme. Virtual Hosting With ProFTPd And MySQL (Incl. Quota). HowtoForge [ online]. 2005 [cit. 2009-02-15]. Dostupný z WWW: .
[6]
The Postfix Home Page [online]. 1989 [cit. 2009-02-06]. Dostupný z WWW: .
[7]
Double Precision, Inc. The Courier Mail Server [online]. 2002 [cit. 2009-02-06]. Dostupný z WWW: .
[8]
BURDA, Zdeněk. Mailserver - Postfix, IMAP, Maildrop a MySQL . Zdeněk Burda [online]. 2007 [cit. 2009-02-06]. Dostupný z WWW: .
[9]
LIST-PETERSEN, Martin. ISP Mailserver Solution Howto [online]. 2004 [cit. 2009-02-06]. Dostupný z WWW: .
[10] The ProFTPD Project [online]. 2007 [cit. 2009-02-15]. Dostupný z WWW: . [11] Kohana Team. Kohana : Swift, Secure, and Small PHP 5 Framework [online].2009 [cit. 200902-04]. Dostupný z WWW: .
25
Seznam příloh A – instalační manuál B – cd se softwarem a konfiguracemi
26
Příloha A – instalační manuál V této příručce budou popsány stěžejní části při instalaci systému na operační systém GNU/Linux distribuce Debian GNU/Linuxu, verze 4.0r5. Instalace systému je náročnější proto se doporučuje aby tuto instalaci prováděl více pokročilý uživatel se znalostí distribuce Debian a zvoleného programového vybavení. Důležité je především umět si poradit v případě vyskytne-li se nějaká nefunkční aplikace. Nejlepším způsobem je číst logy aplikace a z nich problém analyzovat.
Vytvoření virtuálního uživatele Systém používá pro svoje potřeby jednoho virtuálního uživatele a virtuální skupinu. Příkazy groupadd -g 2002 virtualgroup a useradd -u 2002 -s /bin/sh -d /var/mboxes -c "virtual user" -g virtualgroup virtualuser jej vytvoříte.
Instalace překladačů Příkazem : apt-get install build-essential
Instalace databázového modulu Příkazem : apt-get install mysql-server, v průběhu instalace budete vyzváni k zadání správcovského hesla které si zapamatujte. Je to heslo pro administrátorský přístup do databáze.
Vytvoření databáze a tabulky Příkazem mysql -u root -p heslo_do_db < nps.sql vytvoříte databázové schéma. Je však ještě nutné vytvořit uživatele. Soubor nps.sql je na přiloženém cd v adresáři /linux/_database.
Vytvoření uživatelů a rolí Příkazem mysql -u root -p heslo_do_db < users_roles.sql vytvoříte uživatele a oprávnění. Tento soubor však nejdříve editujte a nahraďte proměnné heslo1, heslo2,heslo3 a heslo4. A tyto si zapamatujte, dále o nich bude zmínka. Soubor users_roles.sql je na přiloženém cd v adresáři /linux/_database
27
Instalalce Apache + PHP Apache a PHP nainstalujeme s balíčkovacího systému příkazem. apt-get install apache2 php5 php5-mysql libapache2-mod-php5
Instalace modulu Virtual Hosting systém libhome Nejprve je nutné nainstalovat knihovnu libhome. Její zdrojové kódy jsou na přiloženém cd případně na oficiální stránce
1.
Knihovnu si překopírujte na server a pomocí známé trojkombinace příkazy
./configure && make && make install proveďte instalaci. Nasledně nakopírujte soubor home.conf nacházející se na cd v adresáři linux/usr/local/etc do adresáře /usr/local/etc. V tomto souboru změňte proměnnou heslo1 na heslo zadané při vytváření databáze. mod_vhs Nejprve zdrojové kódy modulu překopírujte z přiloženého cd případně jsou dostupní na oficiálních stránkách projektu 2 . Před samotným překladem je nutné upravit makefile tak aby vyhovoval vaší distribuci.Jako první upravíme nezakomentovaný řádek CFLAGS+= -I/usr/local/include/home -I/usr/local/include/php -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -DHAVE_MOD_PHP_SUPPORT -Wc,-Wall tak, že odstraníme /local, řádek tedy bude vypadat následovně : CFLAGS+= -I/usr/local/include/home -I/usr/include/php -I/usr/include/php/TSRM -I/usr/include/php/Zend -DHAVE_MOD_PHP_SUPPORT -Wc,-Wall a přistoupíme k překladu a instalaci příkazy make a make install. Modul je dále nutné zavést do apache a nastavi což provedeme tak že do složky /etc/apache2/ nakopírujeme soubory ze složky linux/etc/apache2/na přiloženém cd.
Instalace FTP modulu Příkazem apt-get install proftpd nainstalujete ftp server a do adresáře /etc/proftpd nakopírujte soubory z cd v adresáři /linux/etc/proftpd. V souboru proftpd.conf změňte proměnou heslo2 za zvolené heslo při vytváření oprávnění.
1 -http://sourceforge.net/project/showfiles.php?group_id=67071&package_id=65513 2 - http://www.oav.net/projects/mod_vhs/ 28
Instalace poštovního modulu Příkazem apt-get insatll postfix courier-pop courier-maildrop courier-imap sasl2-bin postfix-mysql libpam-runtime nainstalujete potřebné balíčky
Konfigurace postfix Do /etc/postfix nakopírujte soubory z přiloženého cd z adresáře /linux/etc/postfix. Ve všech souborech začínajících mysql je nutné změnit proměnou helslo4
Konfigurace courier služeb Do adresáře /etc/courier nakopírujte soubory z přiloženého cd adresáře /linux/etc/courier. Proměnou heslo4 v konfiguračních souborech nahraďte. Dále do adresáře /var nakopírujte adresář z cd /linux/var/mboxes a vlastníka nakopírovaných souborů změňte na virtualuser. V tomto adresáři budou uivatelské mailboxy.
Konfigurace sasl2 Nakopírujte soubor /linux/etc/default/saslauthd z cd do adresáře /etc/default/saslauthd. Nakopírujte soubor /linux/etc/pam.d/smtp z cd do adresáře /etc/pam.d/smtp a změňte v něm proměnou heslo4.
Instalace řídící aplikace Řídící aplikaci nakopírujte z přiloženého cd /linux/webinterface do /var/www-sprava/webinterface a vlastníka nakopírovaných souborů změňte na virtualuser Do tabulky vhost vložte ručně záznam sql dotazem: INSERT INTO `vhost` (`id`, `ServerName`, `ServerAdmin`, `DocumentRoot`, `CustomLog`, `SuexecUserGroup`, `SetEnv`, `domain_id`, `owner`, `stats`, `statsdone`, `isalias`, `PointTo`) VALUES (28, 'vase_domena', 'email spravce', '/var/www-sprava/webinterface', '/var/www/domains/vase_domena/logs/apachlog.log', 'nobody nogroup', 'memory_limit=32M;upload_max_filesize=8M;expose_php=0;safe_mode=off;open_basedir=/;', 10, 'me', 'on', 'yes', '0', 'null.foo.tld');
Závěr Systém případně jednotlivé služby restartujte a ověřte jejich funkčnost.
29