Rozchození Apache serveru na Windows serveru 2019 je poměrně jednoduché, trochu složitější je vystavení certifikáru pro https a jeho podpis certifikační autoritou Let’s Encrypt. V tomto návodu se dozvíte, jak jsem to dělal.

Nastavení sítě a DNS

Windows server 2019 se bude jmenovat wsrv.jr.lixis.cz, bude mít veřejné IPv4 i IPv6 adresy 46.253.99.39 a 2a0e:5340:4:1::2ab1

Nastavení IPv4

VirtualBox WinSrv2019 25 12 2024 00 12 40

Nastavení IPv6

VirtualBox WinSrv2019 25 12 2024 00 10 55

Nastavení profilu sítě

VirtualBox WinSrv2019 25 12 2024 00 13 33

Do zónového souboru domény jr.lixis.cz musíme přidat A a AAAA záznamy pro stroj wsrv.

Zápis do zónového souboru /var/nsd/zones/master/jr.lixis.cz.zone
$ORIGIN jr.lixis.cz.
$TTL 3600

jr.lixis.cz.    IN      SOA     dizzy.jr.lixis.cz.      jirka.lixis.cz. (
                        2024012448; serial (1)
                        3600 ; refresh
                        900 ; retry
                        1209600 ; expire
                        43200 ; default_ttl
                        )

; ....
wsrv            IN      A       46.253.99.39
wsrv            IN      AAAA    2a0e:5340:4:1::2ab1
; ....
1 Nesmíme zapomenout zvýšit sériové číslo zóny.

Nastavení firewallu

Ve firewallu musíme povolit příchozí připojení na TCP port 80 pro http provoz a na TCP port 443 pro šifrovaný https provoz. Port 80 musíme povolit hlavně kvůli verifikaci certifikátu, který musíme vystavit.

Nastavení Windows firewallu

VirtualBox WinSrv2019 25 12 2024 00 16 11

Přidání pravidla

VirtualBox WinSrv2019 25 12 2024 00 16 38

Otevřeme TCP port 80 pro http a 443 pro https

VirtualBox WinSrv2019 25 12 2024 00 17 06

Http provoz musíme povolit kvůli získání certifikátu.

Povolíme připojení

VirtualBox WinSrv2019 25 12 2024 00 17 29

Povolíme na libovolném síťovém profilu

VirtualBox WinSrv2019 25 12 2024 00 17 47

Nastavíme název pravidla

VirtualBox WinSrv2019 25 12 2024 00 18 10

Pokud nechceme hledat Windows firewall stačí do prohledávacího řádku (lupa) napsat wf.msc a stisknout Enter. Voila, máme k dispozici okno firewallu.

Instalace httpd serveru Apache

Apache HTTP SERVER PROJECT neposkytuje binární soubory pro instalaci web serveru Apache, pouze zdrojové soubory. Bylo by možné sestavit nejnovější verzi Apache http serveru ze zdrojových souborů, ale to je pracná záležitost. Použil jsem snadnější cestu a stáhnul jsem si sestavený server XAMPP (Apache a MariaDB a PHP a Perl) z webu https://www.apachefriends.org/ a instaloval z binárek.

Spuštění setupu xampp-windows-x64-8.2.12-0-VS16-installer.exe

VirtualBox WinSrv2019 25 12 2024 01 57 21

Varování před instalací do "C:\Program Files"

VirtualBox WinSrv2019 25 12 2024 01 58 38

Průvodce instalací

VirtualBox WinSrv2019 25 12 2024 01 59 05

Budu instalovat jenom základ: Apache, MySQL a PHP

VirtualBox WinSrv2019 25 12 2024 02 00 21

Instalační adresář c:\xampp

VirtualBox WinSrv2019 25 12 2024 02 00 36

Rozbalování souborů

VirtualBox WinSrv2019 25 12 2024 02 01 03

Spuštění řídícího panelu XAMPP Control panel

VirtualBox WinSrv2019 25 12 2024 02 04 45

Potřebuji, aby mi Apache a MySQL běžely jako služba. Nastavení služby se provede tak, že se klikne na červený křížek ve sloupci Service.

Řídící panel

VirtualBox WinSrv2019 25 12 2024 02 05 42

Instalace služby

VirtualBox WinSrv2019 25 12 2024 02 10 04

Konfigurace Apache

Konfigurační soubory Apache se nacházejí v adresáři c:\xampp\apache\conf\ a podadresářích, prostor pro html stránky je v adresáři c:\xampp\htdocs\. Apache server je programován pro operační systém Linux a různé jiné Unixy, kde se používá jako oddělovač adresářů v cestě k souboru znak lomítko /, znak zpětné lomítko \ je escape znak. V konfiguračních souborech Apache proto budeme psát cestu třeba takto: c:/xampp/htdocs a Apache tomu bude rozumět. Pokud se budeme držet hloupých Windowsích zvyklostí a budeme používat ve jménech souborů a adresářů znak mezera a různá háčkovaná a čárkovaná písmenka, tak se zcela jistě dostaneme do problémů.

Hlavní konfigurační soubor je c:/xampp/conf/httpd.conf, pro šifrovaný web je to c:/xampp/conf/extra/httpd-ssl.conf. V konfiguračním souboru musíme změnit pár věcí (jméno webu a správce), ostatní věci necháme na pokoji. Konfigurační soubor httpd.conf je obyčejný textový soubor, který se dá upravovat Notepadem, já mám mnohem raději Notepad++. Doporučuji, abyste si ho nainstalovali, bude se vám pracovat mnohem lépe. Před každou úpravou konfiguračního souboru doporučuji udělat zálohu. Pokud uděláte někde chybu, služba nebude fungovat a můžete se vrátit k předchozímu funkčnímu stavu.

Změny v httpd.conf
# ...
ServerAdmin jirka@lixis.cz
# ...
ServerName wsrv.jr.lixis.cz:80

Konfiguraci šifrovaného webu pro https necháme na později, až se nám podaří vystavit certifikát. Po každé změně konfiguračních souborů je potřeba v řídícím panelu XAMPP službu zastavit a znova nastartovat.

Uděláme si jednoduchý html soubor, který umístíme do kořene webu.

c:/xampp/htdocs/index.html
<!DOCTYPE html>
<html lang="cs">
<head>
	<meta charset="utf-8">
	<title>Funguje to.</title>
	<style>
		body {
			background-color: #96d7d7;
			}
	</style>
</head>
<body>
	<h1>Funguje to.</h1>
	<p>
	Index.html pro testovací web.
	</p>
</body>
</html>

Přejmenujeme c:\xampp\htdocs\index.php na něco jiného a můžeme testovat. V prohlížeči by měla být k dispozcici naše testovací html stránka po zadání http:/wsrv.jr.lixis.cz/ do příkazového řádku prohlížeče.

Některé debilní prohlížeče na Windows nechtějí zobrazovat nešifrované stránky, protože je to údajně nebezpečné. Pokud na takový narazíme, tak musíme zjistit (třeba pomocí strejdy Google), jak ho k zobrazení nešifrované stránky donutit.

Funguje nám http

http hotovo

Vystavení certifikátu a podepsání

Budu používat certifikát s platností 3 měsíce a nechám si ho podepsat certifikační autoritou Let’s Encrypt. Výhoda je, že podepsání cetifikátu je zadarmo a certifikační autorita Let’s Encrypt je považována za důveryhodnou skoro všude (kromě prastarých systémů). Nevýhoda spočívá v tom, že musíme vymyslet, jak automaticky po 3 měsících prodloužit platnost certifikátu.

Pro generování certifikátu jsem použil jednoduchého ACMEv2 klienta win-acme. Z webu stáhneme verzi 2.2.9.1 s podporou pluginů a rozbalíme v adresáři "c:\Program Files".

Při vystavování certifikátu nám musí Apache běžet.

Generování certifikátu pomocí wacs.exe v PowerShellu
.\wacs.exe --source manual --host wsrv.jr.lixis.cz --validation filesystem --webroot "C:\xampp\htdocs\" --store pemfiles --pemfilespath C:\xampp\apache\conf\ssl.crt\

V konfiguračním souboru c:\xampp\apache\conf\httpd-ssl.conf zapíšeme certifikát a klíč a nastavíme jméno webu a admina.

Změny v http-ssl.conf
<VirtualHost _default_:443>
DocumentRoot    "C:/xampp/htdocs"
ServerName      wsrv.jr.lixis.cz:443                            (1)
ServerAdmin     jirka@lixis.cz                                  (2)

SSLEngine       On

SSLCertificateFile    "conf/ssl.crt/wsrv.jr.lixis.cz-crt.pem"   (3)
SSLCertificateKeyFile "conf/ssl.key/wsrv.jr.lixis.cz-key.pem"   (4)

</VirtualHost>
1 Nastavení jména serveru.
2 Nastavení administrátora serveru.
3 Sem dáme náš vystavený a podepsaný certifikát. Celá cesta je: c:\xampp\apache\conf\ssl.crt\wsrv.jr.lixis.cz-crt.pem
4 Toto je privátní klíč k certifikátu, vygenerovaný soubor wsrv.jr.lixis.cz-key.pem přesuneme z adresáře c:\xampp\apache\conf\ssl.crt\ do adresáře c:\xammp\apache\conf\ssl.key.

A pokud všechno dopadlo dobře, tak nám bude fungovat https.

Funguje nám https

https hotovo

Program wcas.exe nám při vystavení certifikátu také naplánoval jeho obnovu, o čemž se můžeme přesvědčit v Plánovači úloh.

Plánovač úloh

VirtualBox WinSrv2019 25 12 2024 20 05 54

Alternativní instalace (jenom Apache)

Stáhneme Visual C++ Redistributable Visual Studio 2015-2022 a nainstalujeme. Potom stáhneme Apache 2.4.62-240904 Win64, rozbalíme zip a obsah nakopírujeme do c:\Apache24. V adresáři c:\Apache24\bin se nacházejí binárky.

Test funkce (cmd.exe) — ukončíme pomocí Ctrl+C
C:\Windows\system32> cd c:\Apache24\bin
c:\Apache24\bin> httpd.exe

Serverů Apache můžeme instalovat více, jenom nesmí poslouchat na stejném portu a každá služba se musí jmenovat jinak.

Instalace služby
C:\Windows\system32> cd c:\Apache24\bin
c:\Apache24\bin> httpd.exe -D jmeno_serveru -k install -n jmeno_sluzby  (1)
1 Služba bude instalována pod jménem jmeno_sluzby.

Zda program Apache běží, můžeme zjistit třeba programem netstat.exe

c:\> netstat -a -b

Podrobnosti jsou zde.

Nastartování a ukončení služby Apache
C:\Windows\system32> cd c:\Apache24\bin
c:\Apache24\bin> httpd.exe -D jmeno_serveru -n jmeno_sluzby -k start (1)
c:\Apache24\bin> httpd.exe -D jmeno_serveru -n jmeno_sluzby -k stop (2)
c:\Apache24\bin> httpd.exe -h (3)
1 Nastartování Apache.
2 Ukončení Apache.
3 Nápověda k volbám.

Zdroje a odkazy