Přechod z LAMP webhostingu na VPS + instalace Plone 4 a dalších sluţeb v doméně Jezisheck.cz



Podobné dokumenty
Redakční systém Joomla. Prokop Zelený

v. 2425a Jak si na PC vypěstovat HTTP (WWW, Web) server a jak ho používat (snadno a rychle) by: Ing. Jan Steringa

Instalace a první spuštění Programu Job Abacus Pro

Instalace a konfigurace web serveru. WA1 Martin Klíma

Podpora šifrovaného spojení HTTPS

Maturitní projekt do IVT Pavel Doleček

Konfigurace pracovní stanice pro ISOP-Centrum verze

Internet Information Services (IIS) 6.0

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

Střední odborná škola a Střední odborné učiliště, Hořovice

Tato zpráva informuje o implementaci LMS (Learning Management Systém) Moodle konkrétně Moodle

Olga Rudikova 2. ročník APIN

Pohled pod pokličku spíš než na UI Využití jako platformy pro vývoj aplikací PV219 Jakub Kolář FI MU

Jan Forman Manuál CLASSIFICATIO N: public / veřejný dokument IDE NTIFICATIO N N U MBER: AUTH OR:

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

Základní informace a postup instalace systému ISAO

Instalace webové služby Mydlinka

Provozní dokumentace. Seznam orgánů veřejné moci. Příručka pro běžného uživatele

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Provozní dokumentace. Seznam orgánů veřejné moci. Příručka pro běžného uživatele

Na vod k nastavenı ovy ch schra nek Administrace

Instalace programu ProGEO

Užitečné odkazy:

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Linux na serveru. seminář Arcibiskupského gymnázia v Praze a gymnázia Boženy Němcové v Hradci Králové

Příručka nastavení funkcí snímání

Správa zařízení Scan Station Pro 550 a Servisní nástroje zařízení Scan Station

Přihlášení uživatele do aplikace

Před instalací 25 Minimální požadavky na systém Linux a Windows na jednom disku Zrušení instalace Mandriva Linuxu...

Uživatelská dokumentace

ČSOB Business Connector

XTB VPS. XTB Virtual Private Server manuál

Nová áplikáce etesty Př í přává PC ž ádátele

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

Návod k instalaci. Nintex Workflow Návod k instalaci

1. Administrace služby Bezpečný Internet přes webovou aplikaci WebCare GTS

Mobilita a roaming Možnosti připojení

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows

Registr práv a povinností

Vzdálené připojení do sítě ČEZ VPN Cisco AnyConnect

WNC::WebNucleatCreator

Uživatelská příručka Portálu CMS Centrální místo služeb (CMS)

plussystem Příručka k instalaci systému

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence

Informace k přihlášení do aplikace REGIS Obsah

Minimální požadavky na systém Linux a Windows na jednom disku Zrušení instalace Mandriva Linuxu... 23

Na vod k nastavenı u

úvod Historie operačních systémů

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

APS Administrator.ST

Střední odborná škola a Střední odborné učiliště, Hořovice

Artikul system s.r.o. UŽIVATELSKÁ PŘÍRUČKA tel

Software602 FormApps Server

Publikujeme web. "Kam s ním?!"

Postup instalace síťové verze Mount Blue

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

Návod na nastavení připojení k drátové síti na kolejích Jana Opletala pro operační systém MS Windows 10

SMTPServer - Příručka

Informační systém webhostingu

ADMINISTRACE UNIXU A SÍTÍ - AUS Metodický list č. 1

Technická specifikace

CS OTE. Dokumentace pro externí uživatele

Manuál pro práci s kontaktním čipem karty ČVUT

Uživatelská dokumentace

Edu-learning pro školy

Dobrý SHOP Popis produktu a jeho rozšíření

Nahrání webu na internet

Příručka Google Cloud Print

EvMO postup při instalaci

TACHOTel manuál 2015 AURIS CZ

Instalace programu ProVIS

Nastavení programu pro práci v síti

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Kerio VPN Client. Kerio Technologies

Návod na používání webmailu

1 Webový server, instalace PHP a MySQL 13

A p a c h e h t t p d Lukáš Zapletal lukas.zapletal@liberix.cz

Dobrý FOTO Popis produktu a jeho rozšíření

Instalační manuál aplikace

Instalace a základní administrátorské nastavení 602LAN SUITE 5 Groupware

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice

Možnosti využití Windows Server 2003

Stručná instalační příručka SUSE Linux Enterprise Server 11

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Porovnání instalací linuxových distribucí Fedora x Debian Administrace počítačových sítí (2010/2011)

Instalace pluginů pro formuláře na eportálu ČSSZ

DNS server (nameserver, jmenný server) Server, který obsahuje všechny veřejné IP adresy a jejich přiřazené doménové jména a překládá je mezi sebou. Po

Zahájit skenování ze skla tiskárny nebo z automatického podavače dokumentů (ADF). Přistupovat k souborům se skeny uloženým v poštovní schránce.

Vystavení certifikátu PostSignum v operačním systému MAC OSx

Administrace služby - GTS Network Storage

Předpoklady správného fungování formulářů

INSTALACE SOFTWARE PROID+ NA MS WINDOWS

metodický list č. 1 Internet protokol, návaznost na nižší vrstvy, směrování

Choose a building block. Znalostní báze Kleos. Kleos 6.5 (březen 2019)

Transkript:

Přechod z LAMP webhostingu na VPS + instalace Plone 4 a dalších sluţeb v doméně Jezisheck.cz Jakub Kolář srpen 2011 Seminární práce v rámci studia předmětu Masarykovy univerzity PV219: Seminář webdesignu v semestru jaro 2011 Verze č. 1 ze 4. 8. 2011

OBSAH 1. ÚVOD 4 1.1. Cíle práce 4 2. PRŮZKUM TRHU 5 2.1. Amazon Elastic Cloud 5 2.2. WEDOS VPS Hosting 5 2.3. Shrnutí a srovnání 6 2.4. Přehled 6 3. PŘEVOD DOMÉNOVÉHO NÁZVU 7 4. OBJEDNÁVKA VPS 7 5. INSTALACE VPS 7 5.1. České locale 8 5.2. Webmin 8 5.3. LAMP server 8 6. NASTAVOVÁNÍ VPS 8 6.1. Apache 2 9 6.2. PHP 5 10 6.3. Instalace phpmyadmina 10 6.4. Instalace Postfixu 10 6.5.Podpora pro SSL 10 6.5.1. Nastavení Apache 11 6.6. Firewall 12 7. ZMĚNA DNS SERVERŮ 12 8. ZMĚNA MAIL SERVERU 13 8.1. Zkouška e-mailu na neexistující adresu v doméně 13 9. INSTALACE ZOPE & PLONE 14 9.1. Krátce o Zopu a Plonu 4 14 9.2. Stažení a UnifiedInstaller 15 9.2.1. ZEO cluster nebo standalone? 15 9.2.2. UnifiedInstaller 16 9.3. Nastavení, buildout 17 9.4. První spuštění 18 10. VYTVOŘENÍ INSTANCE PLONE 18 10.1. Prvotní nastavení 19 11.SCHOVÁNÍ PLONE ZA APACHE A ZABEZPEČENÍ POMOCÍ SSL 19 11.1. Příprava Apache 20 11.2. Přidání VirtualHostů 20 Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 2

12. LADĚNÍ DETAILŮ 23 12.1. Vytvoření certifikační autority 23 12.2. Zakázání subdomény www 24 12.3. Chybové stránky (404 aj.) 24 12.4. Vytvoření spouštěcího souboru pro Plone 24 12.5. Umístění instance Plone kromě domény i do složky 25 13. SHRNUTÍ ZÍSKANÝCH ZKUŠENOSTÍ 25 SLOVNÍČEK POUŽÍVANÝCH POJMŮ A ZKRATEK 26 ODKAZY 28 INFORMACE O AUTORSTVÍ A LICENCI 29 Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 3

1. ÚVOD Tato seminární práce v rámci předmětu PV219: Seminář webdesignu (jaro 2011) má dokumentovat postup při stěhování obsahu mého webového serveru jezisheck.cz s několika stránkami s PHP na soukromý virtuální server (VPS) a dále zprovoznění systému pro správu obsahu (CMS) Plone 4. 1.1 CÍLE PRÁCE Pojďme si nyní ujasnit, o co přesně mi vlastně jde: Projít procesem přenesení veškerého stávajícího obsahu domény jezisheck.cz od poskytovatele hostingu, společnosti THINLine, a zároveň zrušení veškerých vazeb této společnosti jakožto původního registrátora doménového názvu. To by nemělo být obtížné, protože doteď jsem na serveru měl jen jednu statickou stránku s kontaktními informacemi, k ní nějaké obrázky, šablony kaskádových stylů a jiné pomocné soubory domény. V subdoméně miranda.jezisheck.cz se nachází jedna PHP stránka, která jen přepíná svůj obsah podle parametru v URL a poskytuje rozhraní pro stahování souborů se záznamem přístupů. A v subdoméně w.jezisheck.cz provozuji soukromý souborový server, pro který potřebuji zprovoznit šifrovaný přístup přes SSL. MySQL, ač k dispozici, je nepoužívané. Pro realizaci budu potřebovat obyčejný LAMP (Linux + Apache + MySQL + PHP) server. Standardní webhosting ostatně není nic jiného, než poměrně málo flexibilní, myšleno málo přizpůsobitelná bez příplatků, část prostředků LAMP serveru. Hlavní výhodou VPS je ale možnost provozování ZOPE serveru. Na jeho instalaci a nastavení s vazbami na okolní služby bude kladen i největší důraz i v této práci, zejména pak jeho schování za server Apache 2 a zabezpečení komunikace pomocí SSL. Celkovým cílem je poté získat nové a rozvinou stávající zkušenosti z oblasti správy a instalace webového serveru, která s oborem webdesignu úzce souvisí. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 4

2. PRŮZKUM TRHU Mým starým poskytovatelem webhostingu byla společnost THINLine, která jej nabízí jako produkt Český hosting 1). Za cenu 1500,- Kč včetně DPH člověk dostane spolehlivý LAMP hosting, včetně.cz domény. Avšak na to, že je to jen LAMP server, lze najít cenově srovnatelné nabídky VPS, které nabídnou větší možnost nastavení a více paměti. Limit paměti pro PHP skripty na Českém hostingu je 32 MB. To na obvyklé aplikace typu blogu nebo e-shopu stačí, ale například při práci s obrázky se to může ukázat jako málo. 2.1 AMAZON ELASTIC CLOUD Jako zajímavá se mě jeví nabídka Amazon Web Services (AWS) s názvem AWS Free Usage Tier 2). Jedná se o 12-ti měsíční období, kdy si uživatel může vyzkoušet některé se služeb z palety, které AWS poskytují. Je mezi nimi také Amazon EC2 Linux Micro Instance, což je ve zkratce VPS provozovaný v AWS cloudu s 5 GB diskového prostoru a 613 MB paměti. AWS mají pro mě celkem netradiční způsob účtování zpětně za spotřebované zdroje. Platí se jednotlivě za výpočetní výkon, datová úložiště, zálohy, IP adresy, objem přenesených dat, a jiné. Dle mých výpočtů by se cena za provoz již zmíněné EC2 Micro Instance s na datové toky nepříliš náročnými aplikacemi měla pohybovat v přepočtu někde mezi 1500,- a 2000,- Kč za rok. 2.2 WEDOS VPS HOSTING Další cenově velice dobře dostupnou nabídkou, kterou jsem zkoumal, je VPS hosting společnosti WEDOS 3). Hosting VPS nabízejí po modulech za pevnou cenu 120,- Kč s DPH za měsíc, tj. 1440,- Kč ročně. Přičemž jeden tento modul zahrnuje 512 MB paměti, 15 GB diskového prostoru a samozřejmě nějaký čas na procesoru. Za datové přenosy se neplatí. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 5

2.3 SHRNUTÍ A SROVNÁNÍ Protože mám radši garantovanou službu za předem známou cenu, od řešení založeného na AWS jsem nakonec upustil. Používal jsem ho v podstatě jako zkušební, protože administrace VPS od počátku je pro mě novinkou. Některé věci jsem si tedy nejprve zkoušel na AWS VPS a až poté na novém VPS od WEDOS. Pro WEDOS hovořilo i to, že jsou zároveň registrátorem.cz domén a mají je oproti THINLine téměř za poloviční cenu. Podobné parametry VPS nabízí např. i poskytovatel SAVANA ve svém tarifu SAVANA 1000 4), ale z popisu služby jsem si nebyl jist, zda se jedná skutečně o VPS s plným root přístupem a jejich technická podpora více než měsíc nereaguje na dotaz. Navíc domény mají za cenu srovnatelnou s THINLine plus pro WEDOS. 2.4 PŘEHLED Přehledné srovnání srovnatelných parametrů zkoumaných nabídek: parametr Český hosting 1) AWS (Free Tier) 2) WEDOS (VPS) 3) SAVANA 1000 4) cena hostingu (s DPH/rok) 1200 Kč cca 1500 2000 Kč 1440 Kč 1728 Kč doména.cz (s DPH/rok) 300 Kč nenabízí 174 Kč 287 Kč výkon procesoru * ** *** **** paměť 32 MB (PHP memory_limit) 613 MB 512 MB 512 MB diskový prostor 2 GB 5 GB 15 GB 30 GB podpora Plone CMS ne ano ano? technická podpora v ceně ano ne ne ano Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 6

3. PŘEVOD DOMÉNOVÉHO NÁZVU Jelikož jsem měl vždy pouze standardní webhostingy, byl poskytovatel zároveň mým registrátorem. Díky výběru firmy WEDOS jsem tak mohl tuto konzistenci zachovat. Prvním krokem na mé cestě k nim tedy byla změna registrátora domény. Zároveň se změnou jsem musel platnost domény prodloužit o rok. Vyplnil jsem tedy předobjednávkový formulář na jejich webu a obratem mi na e-mail, jako vlastníkovi domény, přišlo ze sdružení CZ.NIC heslo pro převod k novému registrátorovi. Po platbě prodlužovací ceny domény kartou online bylo vše hotovo. Celý proces nezabral ani 15 minut! 4. OBJEDNÁVKA VPS Krokem druhým bylo objednání hostingu VPS. Zde už byla klíčová volba operačního systému. Vybral jsem dle osobní preference Ubuntu, protože s ním mám zkušenosti z desktopových použití a protože na něj většinou fungují návody pro široce rozšířený Debian. Další z možností, nad kterou jsem chvíli uvažoval, byla Fedora 14 ISP obsahující předinstalovaný Apache, PHP, MySQL, mailserver, DNS server a jakýsi ovládací panel. To mi mohlo ze začátku ušetřit trochu námahy, ale nakonec jsem se rozhodl, že i z hlediska získávání zkušeností bude lepší zvolit relativně obtížnější cestu OS Ubuntu 10.10. Platbu jsem prováděl v rámci urychlení opět kartou online. Na zkoušku jsem si předplatil jen jeden měsíc (za 120,- Kč s DPH + 10% přirážka = 132,- Kč). Systém po přijetí platby hlásí zřízení služby do jednoho pracovního dne, ale realita byla taková, že za sedm minut mi přišla e-mailem informace o vytvoření VPS s přístupovými údaji a skutečně se mi s pomocí PuTTy ihned podařilo přihlásit na SSH. 5. INSTALACE VPS První věc po přihlášení byla samozřejmě změna hesla pro uživatele root, ale také ověření, zda je nainstalován konzolový správce souborů Midnight Commander (mc), aktualizace repozitáře balíků a balíku sudo a vytvoření standardního uživatele, s oprávněními spouštět pomocí sudo příkazy jako root. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 7

5.1 INSTALACE ČESKÉHO LOCALE V první řadě jsem chtěl, aby na mě aplikace, které to podporují, mluvily česky, tedy jsem instaloval české locale cs_cz.utf-8. To jsem nakonfiguroval tak, aby bylo pouze preferovaným a v případě, že jej aplikace nepodporuje, přešla na standardní anglické locale en_us nebo en. 5.3 INSTALACE WEBMINA Pro usnadnění monitorování systému jsem také nainstaloval nástroj Webmin. Postupoval jsem dle návodu pro Debian 5) na jeho domovské stránce, konkrétně podle části nazvané Using the Webmin APT repository. Instalace byla takto rychlá a snadná. 5.3 INSTALACE LAMP SERVERU K instalaci LAMP serveru jsem přistoupil podle návodu na stránce komunitní dokumentace Ubuntu 6). V podstatě stačilo jen spustit příkaz: sudo tasksel install lamp-server Nainstaloval se tak automaticky Apache 2 server s povoleným a nastaveným PHP 5 a MySQL 5 server opět takřka bez práce. 6. NASTAVOVÁNÍ VPS Nyní jsem se dostal do stavu, kdy byly nainstalovány komponenty potřebné pro rozběhnutí stránek v rozsahu, v jakém byly na starém hostingu, jen je nastavit, aby fungovaly podle mých představ. V této kapitole tedy nastavím Apache a PHP. Potom při instalaci phpmyadmina vyzkouším, jestli funguje MySQL server. A když už budu v tom nastavování různých služeb, nastavím i poštovní program Postfix, přístup přes SSL a vygeneruji první SSL certifikáty. V neposlední řadě ještě zapnu firewall a povolím pouze ty porty a služby, které budu používat. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 8

6.1 NASTAVENÍ APACHE 2 Protože na starém webhostingu bylo vytváření domén třetí úrovně záležitostí na 2 kliknutí, vytvořil jsem si tehdy subdomény miranda.jezisheck.cz a w.jezisheck.cz, které chci zachovat. K realizaci tohoto na VPS jsou zapotřebí dvě věci: 1) vytvořit příslušný A (Address) záznam v DNS a 2) připravit Apache na požadavky na tuto adresu pomocí VirtualHostu. V této testovací fázi jsem k nastavení DNS záznamů použil změny v systémovém souboru hosts v c:\windows\system32\drivers\etc. Skutečné DNS budu nastavovat až později. VPS byla při vytvoření přiřazena IPv4 adresa 31.31.73.20, tedy příslušné řádky v hosts viz vpravo. 31.31.73.20 jezisheck.cz 31.31.73.20 miranda.jezisheck.cz 31.31.73.20 w.jezisheck.cz Co se týče druhého kroku, přípravy VirtualHostu, bude to trochu komplikovanější. Vpravo je nástin toho, jak by měl vypadat textový soubor definující tzv. site v /etc/apache2/sites-available. Klíčové jsou v této fázi direktivy ServerName a ServerAlias, které definují, na které adresy site slyší. První řádek určuje, že tento VirtualHost se definuje pro jakoukoli IP adresu serveru (*) a to na portu 80. DocumentRoot potom určuje, kde se budou požadované stránky hledat. Obdobně se nastaví i další subdomény. <VirtualHost *:80> ServerAdmin jezisheck@gmail.com ServerName jezisheck.cz ServerAlias www.jezisheck.cz DocumentRoot /var/www/jezisheck.cz <Directory /var/www/jezisheck.cz/> Options FollowSymLinks AllowOverride All Order allow,deny allow from all </Directory> CustomLog ${APACHE_LOG_DIR}/access-logs/jezisheck.cz.log combined ErrorLog ${APACHE_LOG_DIR}/error-logs/jezisheck.cz.log LogLevel warn </VirtualHost> Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 9

6.2 NASTAVENÍ PHP 5 Díky nástroji tasksel, který za mě nainstaloval PHP do Apache téměř bez práce, jediné, co jsem musel udělat, bylo najít soubor php.ini v /etc/php5/apache2/ a v něm pro jistotu navýšit paměťový limit PHP na 128 MB a limit pro nahrávaný soubor na 2 GB. 6.3 INSTALACE PHPMYADMINA Na zkoušku, zda se MySQL server správně nainstaloval a zda se při instalaci nastavilo správné heslo, které jsem zadal, jsem se rozhodl použít phpmyadmina, protože na serveru nemám žádné jiné aplikace využívající tuto databázi. Instalace byla standardní, jak jsem na ni zvyklý z běžných webhostingů: stažení, rozbalení, vytvoření konfiguračního souboru a zkouška, zda je možné se přihlásit. Jen poznamenám, že protože jsem pro phpadmina nechtěl vytvářet další subdoménu ani ho umisťovat za lomítko do hlavní domény (např. jezisheck.cz/phpadmin), nasměroval jsem na root.jezisheck.cz VirtualHosta, který bude obsluhovat jak phpadmina, tak případné další nástroje, které mohou časem přibýt. 6.4 INSTALACE POSTFIXU Jelikož Plone potřebuje k nejrůznějším účelům funkční SMTP server, rozhodl jsem se s předstihem k instalaci Postfixu. Nijak zvlášť jsem nad tím nedumal, spíše precizně provedl konfiguraci podle návodu v Ubuntu Server Guide 7). 6.5 KONFIGURACE PODPORY PRO SSL Pro moje účely postačí certifikáty podepsané samy sebou, ale potřebuji minimálně dva, protože se musí generovat pro určitou adresu. Jeden certifikát, pojmenovaný jezisheck.cz.crt, potřebuji pro doménu jezisheck.cz a další any.jezisheck.cz.crt pro subdomény www.jezisheck.cz, w.jezisheck.cz, miranda.jezisheck.cz, Asi nemá smysl, abych zde rozepisovat proces tvorby certifikátů. Podrobný návod jsem k tomu našel v Ubuntu Server Guide 8). Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 10

6.5.1 NASTAVENÍ APACHE Aby byl Apache server schopen šifrovat stránky, je nutné povolit doplněk mod_ssl. V Debianu (a tedy i v Ubuntu) je k tomu pohodlný příkaz: sudo a2enmod ssl Nyní mohu začít nastavovat Apache VirtualHosty. Vycházel jsem z návodu na webu OnLAMP.com 9). Vpravo jsou nejdůležitější části konfigurace použité pro https://w.jezisheck.cz/. Klíčové jsou při nastavování HTTPS přístupu údaje na ř. 2 (port SSL 443), a poté povolení SSL direktivou SSLEngine společně s určením umístění certifikátu a jeho klíče. <IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin jezisheck@gmail.com ServerName w.jezisheck.cz DocumentRoot /var/www/w.jezisheck.cz <Directory /var/www/w.jezisheck.cz/> Options FollowSymLinks AllowOverride All Order allow,deny allow from all </Directory> CustomLog ${APACHE_LOG_DIR}/access-logs/w.jezisheck.cz_ssl.log combined ErrorLog ${APACHE_LOG_DIR}/error-logs/w.jezisheck.cz_ssl.log LogLevel error SSLEngine on SSLCertificateFile /etc/apache2/ssl/any.jezisheck.cz.crt SSLCertificateKeyFile /etc/apache2/ssl/any.jezisheck.cz.key </VirtualHost> </IfModule> Obdobně jsem nastavil možnost šifrované komunikace i pro ostatní subdomény i pro hlavní doménu jezisheck.cz. Rozdíly jsou v zásadě pouze v použitém certifikátu. Jelikož jsem certifikát any.jezisheck.cz.crt generoval pro adresy *.jezisheck.cz, používám jiný pouze pro kořenovou doménu jezisheck.cz, bez www. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 11

6.6 NASTAVENÍ FIREWALLU Z bezpečnostních důvodů jsem se ještě před jakýmkoli náznakem útoku rozhodl vztyčit firewall. Ze stejných důvodů nebudu uveřejňovat konkrétní konfiguraci, jen zmíním, že konfigurace tohoto se pohodlně provádí pomocí Webmina, kterého jsem instaloval v Oddíle 5.3 a že je klíčové již na počátku povolit komunikaci na portu 22 pro SSH a 10000 pro Webmina. Ostatní už je volitelné, ale určitě by se nemělo zapomenout povolit porty 80 (HTTP), 443 (HTTPS) a dále služby protokolu ICMP. 7. ZMĚNA DNS SERVERŮ V tomto místě je čas na rekapitulaci toho, co už mám hotovo. Připravil jsem na VPS HTTP rozhraní s podporou PHP a MySQL v pohotovosti. Stejně tak je nyní připravena i služba HTTPS se stejnými možnostmi jako HTTP. K tomu slouží Apache server naslouchající na primárním síťovém rozhraní eth0 na portech 80 a 443. Přes SSH jsem zkopíroval obsah stávajícího webu včetně subdomén a Apache pomocí VirtualHostů nastavil, aby věděl, kde hledat obsah pro jednotlivé subdomény. Doposud jsem ale se ale na rozhraní VPS připojoval díky explicitním definicím IP adresy každého jednoho takového serveru (myšleno subdomény), které jsem krátce zmínil v Oddíle 6.1. Abych ale dosáhl podobného chování globálně, tedy aby docházelo k překladu adres v doméně jezisheck.cz na IP adresu VPS 31.31.73.20, je potřeba provést změny v DNS. DNS je systém jmenných serverů, který pro klienty, ať už lidi nebo stroje, provádí přiřazení IP adresy k doménovému názvu a naopak. Z výkonnostních důvodů není každý dotaz na překlad doménového názvu na IP adresu řešen se správcem dané domény, rozumějme DNS serverem, ale v systému DNS jsou tyto informace po nějakou dobu cachovány na lokálních DNS serverech, které provozuje např. i váš poskytovatel konektivity. Toto všechno uvádím jako zdůvodnění, proč je nejvhodnější dělat změny v DNS večer, protože aktualizace napříč Internetem je v řádu hodin. Podle toho jsem postupoval i já. Večer jsem pomocí administračního rozhraní mého nového správce domény, společnosti WEDOS, nastavil jeho NameServery a ráno byla doména globálně přístupná na staré adrese z nového VPS. Pro všechny subdomény jsem přidal ještě jeden společný A (Address) DNS záznam se jménem * a adresou 31.31.73.20. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 12

8. ZMĚNA MAIL SERVERU Protože byl bývalý webhosting včetně e-mailů, stála přede mnou ještě nutnost vyřešit nějak doručování e-mailů v doméně jezisheck.cz. Sice jsem měl definováno několik různých schránek, ale všechny se přeposílaly do mého primárního e-mailu od jiného poskytovatele, stejně tak e-mailový koš, tj. schránka pro e-maily poslané na neexitující adresy v doméně. Mohl jsem konfigurovat Postfix, aby bylo možné definovat různé e-mailové schránky s různými vlastníky, ale protože to není nic, co bych kdy použil, rozhodl jsem se jít snadnější cestou prostého přeposílání veškerých příchozích e-mailů pomocí SMTP serveru WEDOS. K tomu stačilo přidat do DNS MX záznam s adresou mxredir.wedos.net. Současně s adresou se definuje i číselná priorita konkrétního záznamu oddělená mezerou (nižší číslo vyšší priorita), tedy např.: 1 mxredir.wedos.net 8.1. ZKOUŠKA E-MAILU NA NEEXIS- TUJÍCÍ ADRESU DOMÉNĚ Aktualizace DNS opět nějakou chvíli trvá, takže jsem počkal cca dvě hodiny a poté vyzkoušel nové nastavení odesláním mailu na adresu v doméně jezisheck.cz nikdy nedefinovanou, xzlaoentd@jezisheck.cz. Zkrácený výpis hlaviček dokládající cestu zprávy je vpravo. /..zkráceno../ Received: from redir.wedos.net (redir.wedos.net [46.28.105.4]) by mx.google.com with ESMTP id e13si394723fak.117.2011.08.03.04.33.07; Wed, 03 Aug 2011 04:33:07-0700 (PDT) /..zkráceno../ Received: from arethusa2.fi.muni.cz (arethusa2.fi.muni.cz [147.251.49.7]) by redir.wedos.net (Postfix) with ESMTP id 7993C2E86F for <xzlaoentd@jezisheck.cz>; Wed, 3 Aug 2011 13:33:07 +0200 (CEST) Received: by arethusa2.fi.muni.cz (Postfix, from userid 115) id 5B648221AE9; Wed, 3 Aug 2011 13:33:07 +0200 (CEST) Received: by sender-daemon@arethusa2.fi.muni.cz PID 8817 for xzlaoentd@jezisheck.cz@mail.muni.cz; Wed, 03 Aug 2011 13:33:07 +0200 /..zkráceno../ From: "Jakub =?UTF-8?Q?Kol=C3=A1=C5=99?=" <jezisheck@mail.muni.cz> To: xzlaoentd@jezisheck.cz Subject: =?UTF-8?Q?Zkou=C5=A1ka=20cesty=20e-mailu=203.1?= /..zkráceno../ Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 13

9. INSTALACE ZOPE & PLONE Nyní mám server a okolní služby připraveny a mohu se začít zabývat instalací Plone CMS. Protože ale Plone obecně není příliš známý, začnu krátkým uvedením, co to vlastně je. 9.1 KRÁTCE O ZOPU A PLONU 4 Plone CMS ve verzi 4 je systém správy obsahu, někdy se tyto systémy označují také jako redakční, mimořádně vhodný k nasazení jako firemní intranet. Plone je však široce univerzální a s dostatkem zkušeností ho lze použít k jakémukoliv účelu, kde je potřebná nebo výhodná práce odkudkoliv v Internetu a/nebo prostřednictvím webového prohlížeče. Jádro Plonu tvoří CMF, Content Management Framework, což je rozšiřující doplněk aplikačního serveru ZOPE. Společně s mnoha dalšími doplňky, které poskytují různé části funkcionality, tvoří Plone tak, jak ho ve výsledku vidí a pracuje s ním uživatel. ZOPE, nebo Zope, je označení pro Z Object Publishing Environment. Zope je aplikační server schopný poskytovat vzdálený přístup k objektům pomocí různých protokolů, jmenujme například HTTP, FTP, WebDAV. Zope poskytuje například platformu pro omezování přístupu k objektům i jejich jednotlivým vlastnostem na základě definovaných uživatelských oprávnění a jejich dědění v rámci hierarchie objektů i uživatelských skupin. Plone pak poskytuje rozhraní pro správu těchto oprávnění v přehlednější zjednodušené formě. Zope standardně používá objektovou databázi (ZODB) uloženou v souboru Data.fs. Objektem je v rámci Zopu prakticky vše. Objekty jsou instance tříd definovaných ve zdrojových kódech Zopu, Plonu a přídavných doplňků pomocí programovacího jazyka Python. Může to být stránka, obrázek, CSS soubor, aj. Python je interpretovaný programovací jazyk vysoké úrovně, který je velmi dobře čitelný. Jeho syntaxe vychází z jazyka C a Plone 4 používá jeho verzi 2.6, přestože jsou již delší dobu dostupné verze 2.7 a 3.2. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 14

V souvislosti s Plonem, resp. Zopem, se můžeme setkat ještě s dalšími jazyky, které nebudu podrobně popisovat, ale uvedu jen některé důležité: {ZPT = Zope Page Templates} je šablonovací systém Zope, využívá v sobě několik podjazyků: {TAL = Template Attribute Language} umožňuje elementům stránky, aby byly naplňovány obsahem, nahrazovány, opakovány nebo vynechávány; {TALES = TAL Expression Syntax} poskytující data pro zobrazení pomocí TAL a METAL; {METAL = Macro Expansion TAL} je mechanismus umožňující sestavovat šablony z více částí, tzv. maker; i18n zkracuje slovo Internationalization a v kontextu ZPT se jedná o mechanismus pro překládání částí obsahu dle aktuálního jazykového nastavení. Samostatně vedle ZPT dále stojí {DTML = Document Template Markup Language}, což je alternativní šablonovací systém používaný v Plone spíše pro generování JavaScriptů nebo CSS. Pro další informace a příklady nejen k těmto jazykům můžete nahlédnout do mé prezentace o Zope a Plone v rámci Semináře webdesignu 10) nebo si podrobnosti dohledat jinde na Internetu. 9.2 STAŢENÍ A UNIFIEDINSTALLER Řekněme tedy, že máme ponětí co asi tak zhruba Plone a Zope je. Mým cílem v této kapitole je ukázat instalaci Plone 4 k čemuž budu potřebovat instalační distribuci zvanou UnifiedInstaller, kterou najdeme na portále plone.org 11). Já jsem použil poslední stabilní vydání s číslem verze 4.0.7 12). K instalaci Plonu je samozřejmě dostupných mnoho návodů. Pro konzistenci jsem také z jednoho vycházel 13). Protože návod na stránkách plone.org 13), je poměrně obsáhlý a přesný, zaměřím se spíše na doporučení, jakou konfiguraci zvolit. Ačkoli návod uvádí, že některé knihovny, jako např. libjpeg a readline nejsou nezbytné, doporučuji je nainstalovat. Mnoho místa nezaberou a Zope se je alespoň nebude snažit hledat při každém startu a zapisovat do logů, že k dispozici nejsou. 9.2.1 ZEO CLUSTER NEBO STANDALONE INSTANCE? Podívejme se nyní na rozdíl mezi ZEO clusterem a tzv. standalone instancí. Standalone je jeden Zope server, který obstarává jak objektovou databázi (ZODB), tak požadavky klientů (např. webového prohlížeče). V systému běží pouze jeden Zope proces, který oproti variantě ZEO bude mít pravděpodobně menší paměťovou náročnost. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 15

ZEO cluster je varianta, kterou vám už dnes každý zkušený Plonař doporučí a stejně tak i já. Zejména protože pozdější přechod ze standalone instance na ZEO je poměrně obtížný a může se vyskytnout řada komplikací. ZEO cluster se skládá ze zeoserveru, který obstarává pouze zápis do datového souboru Data.fs, kde se nachází ZODB při vypnutí serveru. Mimoto tato data z databáze komunikuje s jednotlivými zeoklienty. Zeoklient je Zope server, podobný tomu v případě standalone instance, který data neukládá nikam do souborového systému, ale odesílá je a načítá ze zeoserveru. Tento princip má mnoho výhod a asi jen jedinou nevýhodu. Nevýhodou je, že každý z klientů a také zeoserver jsou spuštěny ve vlastní instanci interpretu jazyka Python a tedy i paměťová náročnost je větší. Výhody ale toto vyváží: 1. Zeoserver může běžet na jiném stroji, čímž lze získat významný nárůst výkonu oproti standalone instanci. Mimoto i na jednom stroji je citelný vyšší výkon díky multitaskingu. 2. Na jednom ze zeoklientů lze provozovat přístup pro koncové uživatele, zatímco na jiném se vyzkouší nebo vyvinou nové funkce, které se na ostatních klientech neprojeví, dokud to nebude žádoucí. 3. Více zeoklientů umožňuje realizaci rozložení zátěže na více strojů, tzv. load balancing. K tomu jsou různá řešení s různou náročností realizace i efektivitou, podstatné však je, že se standalone instancí toho není možné dosáhnout. 9.2.2 UNIFIEDINSTALLER My si ukážeme instalaci ZEO clusteru, která je mírně náročnější. Začal jsem tedy stažením a rozbalením UnifiedInstalleru 12). Poté jsem se přesunul do rozbalené složky a spustil příkaz: sudo./install.sh --password=*** --target=/opt/plone --instance=zeo01 --nobuildout zeo Takto jsem UnifiedInstaller instruoval, že chci pro administrační účet (emergency user) použít heslo ***, Plone instalovat do /opt/plone a první ZEO cluster do složky /opt/plone/zeo01. Zároveň jsem předal parametr, že nechci provádět buildout, protože jej provedu až po konfiguraci jednotlivých parametrů clusteru. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 16

9.3 NASTAVENÍ A SPUŠTĚNÍ BUILDOUTU Buildout je nástroj koexistující s Plonem od verze 3 a zjednodušeně, slouží k postahování a instalaci doplňkových produktů Plonu/Zopu a jejich nastavení a zároveň i k nastavení a instalaci zeoklientů. V mém případě jsem usiloval o jednoduchou instalaci, která bude používat pouze jednoho zeoklienta a druhého, který je ve výchozím konfiguračním souboru buildout.cfg definován, jsem se rozhod použít jako vývojového. Změny v buildout.cfg byly tedy následující: V sekci [buildout] jsem v direktivě zeo-address změnil port, na kterém bude zeoserver naslouchat. Konkrétní hodnota není podstatná. Není jej potřeba povolovat ve firewallu, protože klienti poběží na stejném stroji. Ve stejné sekci jsem změnil porty zeoklientů (direktivy http-address a client2-address) na 8081 a 8082. Protože standardní buildout nepředpokládá různé nastavení direktiv debug-mode napříč klienty, zavedl jsem nové client2-debug-mode, client2-deprecation-warnings, client2-verbose-security a všechny nastavil na on. Protože jsem zavedl nové direktivy v buildout.cfg, musel jsem upravit i soubor base.cfg, konkrétně sekci [client2], kde jsem změnil následující: Šlo jen o to, aby se vývojový režim dal nastavovat pro každého zeoklienta zvlášť. debug-mode = ${buildout:client2-debug-mode} verbose-security = ${buildout:client2-verbose-security} deprecation-warnings = ${buildout:client2-deprecation-warnings} Nastaveno tedy mám a přichází na řadu spuštění buildoutu. To mi vytvoří zeoklienty dle nastavení, nastaví zeoserver, nainstaluje Plone, popřípadě by to stáhlo nějaké doplňkové produkty, ale v tuto chvíli si vystačím s holým Plonem. Příkaz je sudo./bin/buildout. Je velmi důležité, aby pracovní byl adresář instance, v mém případě /opt/plone/zeo01. Buildout proběhne a něco vypíše. Dokud ale úspěšně skončí, nejsou případné vypsané chyby problémem. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 17

9.4 PRVNÍ SPUŠTĚNÍ Přestože buildout a UnifiedInstaller jsou navržené tak, aby instalaci co nejvíce usnadnily, téměř pokaždé něco chybí. Ve verzi Plone 4.0.7 konkrétně chybí nastavení vlastníka na uživatele plone, pod kterým démony ZEO běží, pro složku a soubory /opt/plone/zeo01/var. V této složce se nachází soubor se ZODB, takže tam zmíněný uživatel potřebuje práva zápisu. Také jsou tam logy a vůbec je to jediná složka, kam ZEO zapisuje. Po úpravě práv už je možné spustit ZEO sudo./bin/zeoserver start a poté prvního klienta, napoprvé raději na popředí příkazem sudo./bin/client1 fg. Na popředí, abych viděl případné problémy vypsané v konzoli a nemusel je hledat v logu. Pokud se objeví INFO Zope Ready to handle requests, je všechno v pořádku. Ctrl + C zeoklienta vypne a pomocí sudo./bin/client1 start už server spustím normálně, na pozadí. Nyní mám zeoklienta č. 1 poslouchajícího na adrese http://31.31.73.20:8081. Na tento port mě ale firewall v současné době nepustí. Buď bych mohl nastavit Apache, aby provoz určité subdomény směrovat on na tento port a v tom případě bych firewall mohl nechat být, ale protože nechci přeskakovat z jedné věci na druhou, udělám to později. Nyní jsem tedy dočasně povolil port 8081 pro TCP spojení. Dočasně, protože tímto způsobem nelze komunikaci šifrovat pomocí SSL. 10. VYTVOŘENÍ INSTANCE PLONE Od Plone 4 je instalace natolik přívětivá, že po přechodu na adresu http://31.31.73.20:8081 se nezobrazuje informační stránka ZMI (Zope Management Interface), ale jednoduchá stránka s logem Plonu a tlačítkem pro vytvoření prvního portálu. Portálem myslí objekt typu Plone Site, což je vlastně jedna instance Plonu. Doteď jsem hovořil pouze o instancích Zope. Po kliknutí na tlačítko a zadání loginu (admin) a hesla (to je to heslo předané jako parametr UnifiedInstalleru) se zobrazí formulář vyžadující pouze id portálu. Bude to identifikátor portálu v rámci instance Zope. Já jsem zvolil id plone (s malým počátečním písmenem, aby toto jméno později mohlo korespondovat s doménou třetí úrovně, plone.jezisheck.cz). Pak už jsem jen vyplnil volitelné políčko jména portálu. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 18

10.1 PRVOTNÍ NASTAVENÍ Instance Plone 4 je po vytvoření dobře zabezpečena ve srovnání s dřívějšími verzemi, kde byla standardně umožněna registrace nových uživatelů a každému z nich se vytvořila domovská složka, kam mohl okamžitě umisťovat obsah. Toho někdy využívali různí útočníci. V Plone 4 je ale tato samostatná registrace standardně zakázána, stejně jako domovské složky. Jako nezbytné po vytvoření portálu vidím nastavení SMTP serveru (adresa/@@mail-controlpanel) a vytvoření správcovského účtu, abychom se nepřihlašovali jako emergency user admin (adresa/@@new-user). Ve formuláři je důležité zaškrtnout políčko pro přidání uživatele do skupiny Administrators. Mám tedy vytvořen ukázkový portál s id plone. Obdobně jsem si vytvořil ještě další portál s id blog, kde hodlám provozovat osobní fotoblog. 11. SCHOVÁNÍ PLONE ZA APACHE A ZABEZPEČENÍ KOMUNIKACE POMOCÍ SSL Protože Zope server sám o sobě nepodporuje šifrování komunikace přes SSL a také protože nechci uvádět v adresách na Plone číslo portu, na kterém Zope poslouchá, a v neposlední řadě protože standardní port HTTP 80 je používán pro statické HTML a PHP stránky, je výhodné postavit Zope za Apache. Ten bude působit jako proxy server předávající HTTP požadavky na určitou podmnožinu adres na Zope server a zároveň může komunikaci šifrovat přes SSL. Volitelně je možné Apache použít například i pro kompresi a cachování obsahu. Jako obvykle, na Internetu je k dispozici řada návodů, jak toho docílit. Já jsem vybral návod hostovaný na plone.org 14). Proces má dvě části. Nejprve povolíme potřebné moduly Apache a poté už jen nadefinujeme příslušné VirtualHosty. Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 19

11.1 PŘÍPRAVA APACHE Návod mluví sám za sebe, uvedu tedy, které moduly Apache jsem povolil: mod_headers, mod_mime_magic, mod_proxy, mod_proxy_http a mod_rewrite. Dále jsem jen vypnul cachování v konfiguračním souboru proxy.conf, protože nemám rád, když se mi při vývoji, který mám v plánu, cokoli cachuje. Podporu pro SSL jsem nastavil v Oddíle 6.5, přeskočil jsem tedy i tu část návodu věnující se konfiguraci SSL. 11.2 PŘIDÁNÍ VIRTUALHOSTŮ Ukažme si konfiguraci VirtualHostu za účelem šifrování přístupu do ZMI, protože to je jedno z nejcitlivějších míst. Zde se přihlašuje pomocí hesla emergency uživatele a pokud by mě někdo odposlechnul toto heslo, může si s takovou instancí Zope dělat téměř co chce. Abych tedy zakázal nešifrovaný přístup ke kořeni ZMI, vytvořil jsem ve složce pro sites /etc/apache2/sites-available konfigurační soubor pro subdoménu zmi.jezisheck.cz se stejným názvem, přidal do něj kód vpravo, tuto site povolil a nechal Apache načíst konfiguraci. Významné části kódu jsou zvýrazněny tučně. Jde prakticky jen o přesměrování veškeré komunikace na protokol HTTPS. Na https://zmi.jezisheck.cz/ však ještě nemám definovaný VirtualHost. <VirtualHost *:80> ServerAdmin jezisheck@gmail.com ServerName zmi.jezisheck.cz CustomLog ${APACHE_LOG_DIR}/access-logs/zmi.jezisheck.cz.log combined ErrorLog ${APACHE_LOG_DIR}/error-logs/zmi.jezisheck.cz.log LogLevel warn Redirect / https://zmi.jezisheck.cz/ <IfModule mod_proxy.c> ProxyVia On # prevent the webserver from beeing used as proxy <LocationMatch "^[^/]"> Deny from all </LocationMatch> </IfModule> </VirtualHost> Jakub Kolář 2011 Licencováno pod licencí Creative Commons 0) Přechod z webhostingu na VPS 20