1 Wprowadzenie


W tym poradniku dowiesz się jak pobrać oraz skonfigurować serwer apache2, wraz z PHP 7.2 na systemie windows. 

2 Pobieranie potrzebnych plików


Z poniższych plików pobierz wszystkie potrzebne pliki, uwzględniając wersję systemu 64/32 bit.

  1. Visual C++ Redistributable for Visual Studio 2015 (Jeśli nie posiadasz zainstalowanego.)
  2. httpd-2.4.33-[WERSJA SYSTEMU]-VC15.zip
  3. mod_fcgid-2.3.9-[WERSJA SYSTEMU]-VC15.zip
  4. VC15 x64 Thread Safe (Możesz śmiało wybrać wersję php, od góry masz zawsze najnowszą.)

3 Wypakowanie oraz utworzenie folderu serwera


Utwórz folder C:\Server (zmień jeśli chcesz mieć w innym miejscu, lecz pamiętaj by w dalszych częściach również pozmieniać ścieżki), po czym wypakuj do niego zawartość archiwum httpd-2.4.33-[WERSJA SYSTEMU]-VC15.zip (folder Apache24). Z archiwum mod_fcgid-2.3.9-[WERSJA SYSTEMU]-VC15.zip skopiuj plik mod_fcgid.so do C:\Server\Apache24\modules.
Otwórz archiwum VC15 x64 Thread Safe i zawartość skopiuj do C:\Server\php-7.2.3 (Możesz zmienić nazwe folderu na wersję php jaką pobrałeś, lecz pamiętaj by w dalszej części poradnika również uwzględnić tę zmianę).

4 Konfiguracja serwera Apache2


Odnajdź główny plik konfiguracyjny serwera apache2, który jest w katalogu C:\Server\Apache24\conf i nazywa się httpd.conf.
Otwórz go edytorem tekstu a ukarze Ci się cała konfiguracja serwera. Wszystkie linie poprzedzone # odpowiadają za komentarze i podczas działania serwera nie są brane pod uwagę.
Odnajdź blok konfiguracji zaczynający się od LoadModule i na samym jego końcu dodaj
LoadModule fcgid_module modules/mod_fcgid.so
Teraz po dodaniu modułu FastCGI należy dodać do serwera informacje gdzie znajduje się jego konfiguracja. Aby tego dokonać należy na samym końcu pliku httpd.conf dodać następującą dyrektywę:
<IfModule fcgid_module>
Include conf/extra/httpd-fcgi.conf
</IfModule>
Skoro już dodaliśmy wczytywanie dodatkowej konfiguracji, to wypadałoby utworzyć ten plik. W tym wypadku tworzymy plik o nazwie httpd-fcgi.conf w folderze C:\Server\Apache24\conf\extra a do jego zawartości wrzucamy następującą treść i zapisujemy po odpowiednim podmienieniu (jeżeli wymaga) ścieżek:
FcgidInitialEnv PATH "C:\Server\php-7.2.3;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/WINDOWS/Temp"
FcgidInitialEnv TMP "C:/WINDOWS/Temp"
FcgidInitialEnv windir "C:/WINDOWS"
FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 1000 
FcgidMaxProcesses 50 
FcgidMaxRequestLen 8131072
# Location php.ini:
FcgidInitialEnv PHPRC "C:/Server/php-7.2.3"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000

<Files ~ "\.php$">
  AddHandler fcgid-script .php
  FcgidWrapper "C:/Server/php-7.2.3/php-cgi.exe" .php
</Files>
Teraz wracamy do naszego pliku httpd.conf i szukamy ServerRoot gdzie podaje ścieżkę do naszego serwera, w moim wypadku jest to ServerRoot "C:\Server\Apache24". Następnie szukamy DirectoryIndex i ustawiamy priorytet w jakim ma czytać pliki po wejściu bezpośrednio na domenę. Ja ustawiłem DirectoryIndex index.php index.html.

Na koniec konfiguracji apache pozostało nam utworzenie katalogu gdzie znajdywać będą się nasze wirtualne hosty. W tym celu odnajdujemy DocumentRoot i ustawiamy podobnie do mnie:
DocumentRoot "C:\Server\vhosts"
<Directory "C:\Server\vhosts">
   Options FollowSymLinks
   AllowOverride All
   Order deny,allow
   Allow from all
   Require all granted
</Directory>
Po tej czynności należy utworzyć katalog C:\Server\vhosts.
Teraz pozostało nam odblokować vhosty poprzez znalezienie w httpd.conf liniki #Include conf/extra/httpd-vhosts.conf i odkomentowanie jej, a zawartość pliku C:\Server\Apache24\conf\extra\httpd-vhosts.conf usuwamy i podmieniamy na poniższą treść odpowiednio ją modyfikując (jeżeli wymaga modyfikacji).
<VirtualHost *:80>
   ServerName test.local  
   DocumentRoot "C:/Server/vhosts/test.local"
   ErrorLog "logs/test.local-error.log"
   CustomLog "logs/test.local-access.log" common
   <Directory "C:/Server/vhosts/test.local">
       Options Indexes FollowSymLinks MultiViews Includes ExecCGI
       AllowOverride All
       Order deny,allow
       Allow from all
   </Directory>
</VirtualHost>
Następnie tworzymy nowy folder w którym będą się znajdywać pliki naszej strony (ścieżka taka, jaką podałeś w pliku httpd-vhosts.conf: D:/Server/vhosts/test.local.

Teraz aby możliwe było uruchomienie naszej domeny test.local, należy w pliku C:\Windows\System32\drivers\etc\hosts dopisać:
127.0.0.1     test.local
Jeżeli masz problem z edycją, to skopiuj plik hosts na pulpit, tam go edytuj, a następnie podmień.

5 Pierwsze uruchomienie serwera Apache2


W konsoli (zalogowany jako administrator) przejdź do ścieżki C:\Server\Apache24\bin i wykonaj polecenie
httpd.exe -t
W ten sposób sprawdziłeś poprawność konfiguracji, jeśli wyświetlił Ci się napis Syntax OK to znaczy że wykonałeś wszystko prawidłowo.

Skoro konfiguracja jest prawidłowa to śmiało możemy dodać serwer Apache do usług windows za pomocą następującej komendy:
httpd.exe -k install

Teraz aby uruchomić/wyłączyć/zrestartować serwer używaj następujących komend:
httpd.exe -k start
httpd.exe -k restart
httpd.exe -k stop

Możesz również uruchomić plik ApacheMonitor.exe. Program się uruchomi w zasobniku, a Ty za jego pomocą będziesz mógł łatwo startować i zatrzymywać serwer www.

Aby sprawdzić czy nasza konfiguracja odniosła pożądany efekt utwórz plik index.php w D:\Server\vhosts\test.local\ i dodaj w nim
<?php
phpinfo();

Teraz po przejściu pod adres test.local powinieneś otrzymać domyślną stronę z informacjami o zainstalowanym PHP.


6 Konfiguracja PHP


Wejdź do folderu php-7.2.3 i zmień nazwę pliku php.ini-development na php.ini.
Następnie go otwórz i odkomentuj linijkę # extension_dir = "ext".
Na samym dole pliku dodaj następujące linijki które odblokują Ci najważniejsze dodatki:
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_intl.dll
extension=php_mbstring.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_mysqli.dll

Po wykonaniu tych zmian restartujemy nasz serwer Apache.

7 Podsumowanie


W ten oto sposób znalazłeś się na końcu poradnika, oraz powinieneś czegoś nowego się nauczyć. Jeżeli Ci się spodobał ten poradnik, lub jakakolwiek moja inna praca pozostaw plusika na profilu :D