V předchozím díle jsme poprvé spustili Raspberry Pi a provedli základní konfuguraci nastavení počítače a vzdáleného přístupu. V tomto nastavení se ale stále jedná spíše o osobní počítač než o server. Každý webový server totiž ke své činnosti (v našem případě tedy k uchovávání obsahu webových stránek a jeho zasílání počítačům v síti, kteří o ně požádají) potřebuje nějaký software, který toto zařídí. V našem případě to budou webový server Apache, interpret PHP a databázový server MySQL.
Předpokladem z minulých dílů je to, že k serveru přistupujeme již jen přes SSH pomocí programu Putty (viz minulý díl). Pro ty, kdo nemají s příkazovými řádky a terminály žádné zkušenosti doporučuji začít tyto nástroje používat co nejdříve, čím později začnete, tím obtížnější pak práce tímto způsobem bude.
Instalace webového serveru Apache
Zatím tedy máme fyzický počítač - desku umístěnou v nějaké krabici (viz první díl), na kterém běží UNIXový operační systém. To není webový server. Potřebujeme tedy na tento počítač nainstalovat obslužnou aplikaci, která zajistí základní funkčnosti serveru. Tím bude v našem případě webový server s názvem Apache 2. Troufám si říci, že je nejrozšířenější, což ovšem automaticky neznamená, že je nejlepší nebo nejrychlejší. O možných alternativách se zmíním na konci článku.
V případě UNIXových systémů jsou aplikace distribuovány pomocí takzvaných balíčků. Jedním z nich je i Apache 2. Instalaci tohoto balíčku tedy provedeme následujícím příkazem.
sudo aptitude install apache2
Příkaz sudo na začátku říká systému, že má příkaz spustit s "rootovskými" oprávněními (něco jako správce systému ve Windows, nebudu dále rozebírat, internet je plný článků na toto téma), příkaz aptitude spouští stejnojmennou aplikaci, která se stará a o správu balíčků, za ním následuje příkaz install, který říká, že budeme instalovat novou aplikaci (balíček) a nakonec následuje jméno balíčku, tedy apache2. Po zadání výše uvedeného příkazu systém ověří existenci balíčku a ověří jeho závislost na jiných.
Funkčnost nově nainstalovaného serveru jednoduše potvrdíme tak, že do webového prohlížeče zadáme IP adresu serveru (stejnou, kterou používáme pro připojení přes SSH). Pokud vše funguje správně, zobrazí se nám jednoduchá stránka s nápisem "It Works!". Tím jsme ověřili, že server běží.
ověření funkčnosti serveru Apache2
Instalace interpreta PHP
Nyní nainstalujeme podporu jazyka PHP, bez které se také neobejdeme. Znovu se jedná o balíčky, tentokráte o dva, jsou jimi balíček php5, tedy samotný interpret a balíček libapache2-mod-php5, který zajišťuje propojení interpreta se serverem.
Instalaci tedy provedeme obdobným příkazem jako v předchozím případě.
sudo aptitude install libapache2-mod-php5 php5
Instalace databáze MySQL
Redakční systém Drupal, který budeme chtít na webu spustit vyžaduje také databázi. Asi nejznámější je databáze MySQL (nikoli nejbezpečnější). Nejprve nainstalujeme samotnou databázi a poté ještě webové rozhraní pro snadnou správu, které se jmenuje phpMyAdmin, o tom ale až v příštím článku.
Databázi MySQL nainstalujeme pomocí dvou balíčků, obdobně jako u interpreta PHP, první je samotná databáze, druhý balíček je PHP modul, který dokáže s databází komunikovat.
sudo aptitude install mysql-server php5-mysql
Počáteční nastavení služeb
Nyní je potřeba změnit některá nastavení v právě nainstalovaných obslužných aplikacích.
První věcí je úprava práv k přístupu do adresáře /var/www, ve kterém se budou nacházet webové stránky (již nyní je zde umístěn .html soubor s textem "It Works!").
V příkazovém řádku si otevřeme jeden z konfiguračních souborů serveru následujícím příkazem:
sudo nano /etc/apache2/sites-enabled/000-default
Příkaz nano spouští stejnojmenný jednoduchý textový editor, který otevře požadovaný konfigurační soubor na dané adrese.
Pokud příkaz zadáme správně, zobrazí se nám obsah souboru začínající na <VirtualHost ...> . Pokud se žádný text nezobrazí, pravděpodobně jste špatně zadali cestu k souboru. Ukončete editor nano klávesovou zkratkou CTRL+X a zkuste to znovu.
V tomto konfiguračním souboru najdeme následující odstavec,
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
a v tomto odstavci provedeme změnu řádku
Options Indexes FollowSymLinks MultiViews na
Options -Indexes FollowSymLinks MultiViews,
takže jen přidáme před Indexes pomlčku. Tím zakážeme procházení adresářové struktury souborů na serveru, čímž zamezíme zvědavým návštěvníkům zkoumat naše zdrojové kódy.
Kombinací CTRL+X ukončíme editor. Při ukončování nezapomeneme uložit změny.
Druhou změnou, kterou provedeme, bude změna vlastníka adresáře /var/www. Momentálně tento adresář patří uživateli root, což by mohlo později činit potíže. Proto změníme vlastníka složky pomocí následujícího příkazu.
sudo chown -R pi /var/www
Příkaz chown změní vlastníka adresáře /var/www na uživatele pi. Parametr -R udává, že změna proběhne rekurzivně, což znamená, že se aplikuje nejen na složku /var/www, ale i na všechny soubory a složky v ní obsažené (nyní pouze soubor index.html).
Alternativy
Ani webový server Apache2, ani databáze MySQL nejsou jedinými možnostmi, jak zajistit chod serveru. Mezi alternativní servery patří například lighttpd nebo Cherokee. Jako alternativy k databázi MySQL hledejte například PostgreSQL.
Shrnutí
Tím jsme zprovoznili základní funkčnosti, kterými by měl podobný server disponovat. Kdo má zkušenosti s tvorbou pokročilejších webových stránek, ví, že nám chybí ještě připojení k souborovému systému přes FTP (File Transfer Protocol) a již výše zmiňované rozhraní pro správu databáze phpMyAdmin. Tím (a nejen tím) se bude zabývat příští článek.
7 Comments
perfektní! díky za tutoriál!!! :)
Supr tutorial pro zacatecniky :-) diky
díky, lze aplikovat i na klasický debian :-)
Pěkný článek. Prosím o radu. Nevík jak nastavit PHP. Když vytvořím soubor s příponou php a nakopíruji jej k souboru index.html, tak se nic nezobrazí (souboru je phpinfo). Jakoby php neexistovalo? Přitom phpmyadmin se mi spustí. Byl by nějaký tip? Díky.
Skús vymazať index.html :)
Pokud jsou tam dva soubory se jménem index, ten s příponou .html má asi přednost. Takže by mělo pomoct ten soubor .html přejmenovat nebo smazat. Případně se to dá nastavit v .htaccess, který z těch dvou bude mít prioritu.
Ďakujem! S Linuxom nemám veľa skúseností a bez príkazu "sudo chown -R pi /var/www", ktorý som našiel až tu, by som nič neurobil.