V této sekci si popíšeme jak v Ubuntu nastavit vlastní Linux Apache MySQL PHP server.
Na domácím PC je nejjednodušší způsob pomocí Synapticu:
Nabídka Akce -> Označit balíčky podle účelu... -> vybrat LAMP server a potvrdit změny.
Tím se k instalaci označí všechny potřebné součásti celého balíku aplikací.
Na opravdovém serveru se instaluje čisté ubuntu-minimal, nebo využijeme služeb www.virtualmaster.cz a jejich předinstalovaného řešení.
Když máme všechny součásti nainstalovány, můžeme se vrhnout na jejich nastavování.
Apache je webový server. Řečeno zjednodušeně, slouží tedy k zobrazování webových stránek umístěných lokálně (na našem počítači).
Využijeme hlavně při vývoji / testování HTML webu. A v kombinaci s PHP serverem k zobrazování (spouštění) PHP stránek.
PHP je jazyk, jehož instrukce se, na rozdíl od JavaScriptu, vykonávají na straně serveru. Tedy u nás.
Výchozí složka pro soubory našich webových stránek je v Ubuntu /var/www/ Protože do této složky nemá práva zápisu nikdo, kromě uživatele root a práce s ní by tak byla zbytečně komplikovaná, pokusíme se si práci ulehčit. Zařídit to jde několika způsoby.
Nastavení subdomény pro každý projekt
Zkombinoval jsem postupy z thinkingnectar.com, simplehelp.net a Kludge-o-matic.
Pro každou subdoménu musíme vytvořit soubor ~/Projekty/web/subdomena.conf obsahující:
<VirtualHost *:80> DocumentRoot /home/meridius/Projekty/web/subdomena/ ServerName subdomena.localhost <Directory /home/meridius/Projekty/web/subdomena/> Options Indexes FollowSymLinks MultiViews +Includes AllowOverride None Order allow,deny allow from all </Directory></VirtualHost>Vytvoříme složku subdomény
mkdir ~/Projekty/web/subdomena/Apache k této složce musí mít přístupová práva, viz úprava souboru /etc/apache2/envvars v dalším způsobu nastavení.
Nalinkujeme konfigurační soubor subdomény
sudo ln -s ~/Projekty/web/subdomena.conf /etc/apache2/sites-available/subdomena.confsudo ln -s ~/Projekty/web/subdomena.conf /etc/apache2/sites-enabled/subdomena.confPo vytvoření konfiguračního souboru domény ~/Projekty/web/subdomena.conf by se na vytvoření linků měl dát použít i příkaz a2ensite. Zatím ale nevím jak.
V systému si vytvoříme virtuální subdoménu
Do souboru /etc/hosts přidáme
127.0.0.1 subdomena.localhostA restartujeme Apache
sudo /etc/init.d/apache2 restartNyní můžeme na subdoménu přistupovat ze http://subdomena.localhost.
Pokud bude Apache protestovat, že
apache2: Could not reliably determine the server's fully qualified domain name, using <IP adresa> for ServerNamevyřešíme to přidáním FQDN (nebo jen jména?) do souboru /etc/apache2/httpd.conf
ServerName localhostPráce v jedné doméně a podsložkách
Řekneme Apachi, že složka, kde má "webové" soubory hledat je jinde. Nejlépe někde v našem domovském adresáři.
Velmi dobrý návod je na Kludge-o-matic. Ve zkratce:
Při tomto postupu se využívá příkaz Alias, který Apache při dotazu http://localhost/mujweb přesměruje do složky ~/Projekty/web/mujweb/
Efektu docílíme vytvořením zmíněné struktury složek, kde mujweb/ je složka jednoho z mnoha webů, které budou všechny umístěny ve složce web/
Dále potřebujeme vytvořit konfigurační soubor, který Apachi řekne, kde má složku webu hledat. Tento soubor pojmenujeme nejlépe názvem webu, např. mujweb.conf a umístíme jej do složky ~/Projekty/web/
mujweb.conf
Alias /mujweb /home/meridius/Projekty/web/mujweb<Directory /home/meridius/Projekty/web/mujweb> Options Indexes FollowSymLinks DirectoryIndex seznam.php</Directory>Všimněte si, že cesty jsou zadány absolutně, jinak nebude konfigurace fungovat!
První parametr za Alias je to, co budeme zadávat za http://localhost/
Parametr za DirectoryIndex si můžeme volit, pokud náš web nemá standardní index.html.
Nyní ve složce /etc/apache2/conf.d/ na tento soubor vytvoříme symbolický odkaz.
sudo ln -s ~/scripts/mujweb.conf /etc/apache2/conf.d/mujweb.confTak máme vše důležité v domovském adresáři a v případě přeinstalace systému můžeme být klidní, stačí obnovit odkaz.
Teď potřebujeme ještě Apachi do naší složky povolit přístup.
Uděláme to úpravou souboru /etc/apache2/envvars.
sudo cp /etc/apache2/envvars /etc/apache2/envvars.oldsudo mv /etc/apache2/envvars /etc/apache2/envvars.baksudo sh -c "sed -e 's/www-data/'`whoami`'/' /etc/apache2/envvars.bak > /etc/apache2/envvars"! Tato akce však vystavuje naše data určitému nebezpečí, protože proces apache poběží pod naším uživatelem. Pokud by se tak někomu podařilo získat kontrolu nad Apachem a našel by v něm způsob, jak se dostat z definovaných adresářů, dokázal by si získat přístup ke všem našim souborům!
A nakonec Apache restartujeme, aby si načetl nová nastavení.
sudo /etc/init.d/apache2 restartKdykoliv pak budeme chtít přidat další složku s jiným webem, stačí vytvořit ji, vytvořit její .conf soubor a symbolický odkaz na něj.
Úprava přístupu se složce /var/www/
Konfigurace pro produktivní server
Zjednodušení linků pomocí .htaccess
Složité (nezapamatovatelné) odkazy se dají celkem snadno zjednodušit přidáním .htaccess souboru do složky, kde chceme dále linky zjednodušovat. Obsah tohoto souboru pak bude podobný následujícímu.
<IfModule mod_rewrite.c> RewriteEngine On ## DONT TOUCH ANYTHING ## # Only with survey code # http://server.fr/123456 RewriteRule ^([0-9]+)/*$ index.php?sid=$1 [L,QSA] # Survey code + Lang : http://server.fr/123456/lang-fr RewriteRule ^([0-9]+)/lang-([^/]*)/*$ index.php?sid=$1&lang=$2 [L,QSA] # Survey code + Lang + Token : http://server.fr/123456/lang-fr/tk-sdlfkjozeiru RewriteRule ^([0-9]+)/lang-([^/]*)/tk-([^/]*)/*$ index.php?sid=$1&lang=$2&token=$3 [L,QSA] # Survey code + Token : http://server.fr/123456/tk-sdlfkjozeiru RewriteRule ^([0-9]+)/tk-([^/]*)/*$ index.php?sid=$1&token=$2 [L,QSA] # vlastni presmerovani RewriteRule ^mana[zg]er http://asdf.cz/pruzkumy/72167/lang-cs [NC] RewriteRule ^zamestnanec http://asdf.cz/pruzkumy/86673/lang-cs [NC]</IfModule>Fungují zde regexy, tak se můžete vyřádit.
Způsob je dobře popsán na http://corz.org/serv/tricks/htaccess2.php
Hezké cesty (aktivace mod_rewrite)
Naliknování modulu
cd /etc/apache2/mods-enabledsudo ln -s ../mods-available/rewrite.load rewrite.loadPovolení modulu v konfiguraci webu
Editovat konfigurační soubor webu v /etc/apache2/sites-enabled/ a části Directory upravit položku AllowOverride none na AllowOverride all
Restart Appache
sudo service apache2 restartDobrý databázový server se vždy hodí.
Ke GUI administraci databáze můžeme následně použít například phpMyAdmin.
Nebo Adminer.
sudo aptitude install phpmyadminBěhem instalace se objeví sada dialogů ve kterých zvolíme apache2 jako výchozí web server a heslo uživatele root pro přístup do rozhraní phpMyAdmina.
Pokud při zobrazování stránek nebude PHP hlásit chyby, musí se upravit /etc/php5/apache2/php.ini
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICEdisplay_errors = Onhtml_errors = On