Instalace Apache, PHP a MySQL za 30 vteřin

Jak si ve Windows spustit vlastní Apache, PHP a MySQL na svém PC za půl minuty.
Nálepky:
Text vyšel původně na autorově webu Je čas.
Pro programování v PHP se většinou hodí mít možnost spouštět skripty na vlastním počítači, tzv. na localhostu. Je sice možné používat vzdálený webhosting a soubory upravovat a zkoušet přímo tam, ale lokální server mívá lepší odezvu.
Vlastní, nebo hotové řešení?
Jedna možnost, jak vlastního serveru docílit, je instalace jednotlivých aplikací vlastnoručně. Tedy nainstalovat si:
- Apache (webový server)
- PHP (podpora skriptování)
- MySQL (database)
A nějak to nastavit, aby to dohromady fungovalo.
Dle mého názoru je to zbytečně pracné a zdlouhavé. Pohodlnější je použít hotový balík, který všechno nainstaluje sám, a další nastavování je povětšinou dostupné z grafického rozhraní a ne jen prostřednictvím konfiguračních souborů.
WampServer
Osobně se mi osvědčil WampServer.
Po stažení a prostém nainstalování jsou důležité následující údaje.
- Složka pro umístění skriptů
-
C:\wamp\www
- Zobrazení obsahu
-
http://localhost
- Přihlašovací údaje k MySQL
-
- Server:
localhost
- Jméno:
root
- Heslo: (prázdné)
- Server:
Správa MySQL
Pro práci s DB (vytváření tabulek a podobně) je předinstalovaný nástroj phpMyAdmin (http://localhost/phpmyadmin/
).
Osobně ale dávám přednost Admineru. Stačí stáhnout pouze českou versi pro MySQL.
Nastavení serveru
V případě, že se nastavení serveru na našem webhostingu liší od výchozího nastavení WAMPu, není problém si pohodlně zapínat různá rozšíření a moduly.
Veškeré nastavování (stejně jako spouštění/zastavování/restartování služeb) probíhá po kliknutí levým tlačítkem na ikonu WAMPu v hlavním panelu Windows vedle hodin.
Apache
U Apache se dá přímo zaškrtávat moduly, které mají běžet. V dnešní době je prakticky nezbytné například zapnout rewrite_module
pro přepisování adres. Pro cacheování se potom hodí expires_module
.
Ruční nastavování je možné provádět v souboru httpd.conf
(vede na něj odkaz z menu WAMPu).
PHP
PHP má odděleno nastavení a rozšíření (PHP settings a PHP extensions):
Pro získávání obsahu cizích stránek se hodí v nastavení zapnout allow_url_fopen
. K přístupu k serverům běžícím na HTTPS se zase hodí zapnout extenzi php_openssl
a pro pracování s obrázky potom php_gd2
.
Nastavování přes konfigurační soubor se provádí v souboru php.ini
(také na něj vede odkaz z nabídky).
VirtualHosts
Při souběžném provozování více projektů se může hodit používat tzv. virtual hosty.
Díky tomu jde docílit hezčích adres než localhost/projekt
. Třeba v podobě běžné domény – např. projekt.cz
nebo projekt.local
.
Jak na to?
- V souboru
hosts
ve Windows (umístěníC:\Windows\System32\drivers\etc
) přidat na konec souboru:127.0.0.1 projekt.local
To zajistí, že se požadavek na „
projekt.local
“ pošle na lokální umístění (adresa127.0.0.1
), tedy localhost. - V souboru
httpd-vhosts.conf
nastavit umístění souborů pro danou doménu. Khttpd-vhosts.conf
se jde proklikat z nabídky WAMPu v kategorii Apache nebo je umístěn vC:\wamp64\bin\apache\apache2.4.23\conf\extra
. Jednotlivé virtual hosty jdou nastavit následovně:<VirtualHost *:80> ServerName projekt.local DocumentRoot c:/projekt/ <Directory "c:/projekt/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost>
Nyní by se po restartu Apache a zadání projekt.local
do adresního řádku měl zobrazit obsah z c:/projekt
.
Řešení problémů
Obsazený port
Může se stát, že WAMP z ničeho nic přestane fungovat. Typicky po nainstalování nějaké aplikace, která obsadí port 80 (ten používá WAMP ve výchozím nastavením).
V případě, že je blokování portu důvod, proč server neběží, se při testu portu 80 zobrazí název aplikace, která dělá problémy.
Řešení je tedy takovou aplikaci odinstalovat, vypnout, změnit u ní číslo portu nebo totéž změnit u Apache.
Službu Microsoft-IIS/7.5 z obrázku je možné vypnout v Ovládací panely\Systém a zabezpečení\Nástroje pro správu\Správce Internetové informační služby.
Změna portu
WAMP přímo nabízí možnost číslo portu změnit. Po kliknutí pravým tlačítkem na ikonku WAMPu v oznamovací oblasti, je tato možnost pod volbou Tools → Use a port other than 80.
Do zobrazeného dialogu stačí zadat jiné číslo (např. 8080
). Adresa serveru potom nebude localhost
ale localhost:8080
.
Odkazy
- Pehapko.cz: Instalace prostředí pro běh PHP skriptů
- Programujte.com: Samostatná ruční instalace všech služeb
wamp je uzasny nastroj, jen je skoda ze clovek co ho pouzije pak nema ani paru jak to vsechno funguje a jak je to propojene.
Na jednom počítači se mi cokoliv.local překládalo na IP adresu několik vteřin i přesto, že v etc\hosts byl správný záznam.
Nejspíš to bylo právě použitím .local domény. RFC 6762 (Multicast DNS) říká, že jakýkoliv DNS dotaz na cokoliv končící na .local MUSÍ být směrován na adresu 224.0.0.251, což právě mohlo způsobovat tu mou prodlevu. Přešel jsem na cokoliv.test, což je doména vyhrazená v RFC 2606 (Reserved Top Level DNS Names) a všechno je ok.
cokoliv.localhost zase nefunguje když to má v etc/hosts adresu jinou než 127.0.0.1 (třeba 127.0.0.123), Chrome od verze 43 překládá cokoliv.localhost stejně jako localhost, tedy na 127.0.0.1
Na Macu mi při nainstalované php-imap extensioně trvalo každé spuštění CLI přesně 5 vteřin. Bylo to tím, že hostname mého počítače je „macbook.local“ :) Pomohlo přidat do /etc/hosts
127.0.0.1 macbook.local
.macOS má Multicast DNS („Apple began shipping mDNS in Mac OS X 10.2 in 2002“ — http://www.multicastdns.org/), takže to nejspíš posílalo na 224.0.0.251 a čekalo 5sec na timeout. Já mám na Windows nainstalovanou službu Bonjour, která Multicast DNS také „dělá“. Super, že se to vyřešilo úpravou etc/hosts (díky za info!), na Windows to nepomohlo, nejspíš kvůli jinýmu resolveru.
Díky za stručný článek k věci!
Mám ještě takový tip: většinu práce s apache, mod rewrite, hosts a doménami si můžeš ušetřit pomocí lokálního serveru. Ten spustíš v příkažové řádce:
php -S localhost:8080 -t C:\wamp\www
A otevřeš localhost:8080 a jedeš :-)
Port „8080“ můžeš samozřejmě změnit.
Na PHP 5.* to prý jelo pomaleji, ale s PHP 7.* jsem nikdy neměl problém.
Je to univerzální per OS, nezávislé na Apache/Nginx a hosts a nejtěžší je na tom napsat cestu ke složce. Pro začátečníka je tohle velká úleva. Sám si pamatuju, že první instalace PHP byla 5 % času PHP a 95 % času Apache a věci kolem.
Více příkladů viz php local server v dokumentaci
Umí to skoro všechno. Jen ne mapování koncovek. Soubor bez koncovky ok, s koncovkou .php ok. Ale třeba .gif, .jpeg už nefachá (.css, .js si nevybavuju). Testováno na PHP 5.6.
Pred 15 lety jsem na win pouzival php triad. Dneska na linuxu poustim docker
Proč nepoužijete Docker?
Jestli se nepletu, tak na běh aktuální verze Dockeru potřebuju Windows 10. Jinak bych taky použil Docker. Vlastně bych rovnou změnil OS a používal Docker :D
Zřejmě se jedna o článek z minulého století, který se nějakým nedopatřením dostal na titulní stránku.
Zkratka WAMP zní dneska jako solidní retro :-) Pár tipů ze současnosti: Docker, LXD, Vagrant, CoreOS, nebo celkem libovolná distribuce GNU/Linuxu.
WAMP mě štval požadavky na instalaci nějakých microsoftích knihoven před vlastní instalací, potížemi s upgrade a taky dost nabobtnal.
Momentálně používám WPN-XM devstack (nginx, mariadb) – je mnohem menší a zatím spokojenost.