Ustaw sobie własnego Apache na Windows
28.11.2019 | aktual.: 03.01.2020 20:47
Uwaga (styczeń 2020): nowsza wersja artykułu dostępna jest pod adresem http://mwiacek.com/www/?q=node/380, rozwiązana została np. kwestia instalacji PHP 7.4.x
Pojawił się stabilny PHP 7.4 i ponieważ to jest blog, to zdecydowałem się zwerbalizować swoje notatki i krótko opisać procedurę instalacji Apache, PHP i PostgreSQL, którą używam w jednej z moich instalacji Windows do przygotowania środowiska do zabaw z PHP.
Celowo sięgnę tutaj do źródeł (tzn. łączenia każdego z trzech komponentów) zamiast bawić się w jeden z gotowych pakietów.
Apache
Na stronie https://httpd.apache.org/download.cgi szukam ostatniej stabilnej wersji (obecnie 2.4.41), klikam na Files for Microsoft Windows, następnie klikam na pierwszy link (ApacheHaus) i pobieram wersję 64‑bit skompilowaną z najwyższą wersją Visual Studio i OpenSSL (obecnie httpd-2.4.41-o111c-x64-vc15-r2.zip).
Oczywistą oczywistością jest sprawdzenie sumy kontrolnej:
certutil -hashfile httpd-2.4.41-o111c-x64-vc15-r2.zip SHA1
Pakiet rozpakowywuję do jakiegoś katalogu (np. d:\apache\apache) i w katalogu d:\apache\apache\conf w pliku httpd.conf ustawiam ścieżkę:
Define SRVROOT "d:\apache\apache"
PHP
Przechodzę do https://www.php.net/downloads.php, klikam na "Windows downloads" i pobieram wersję "VC15 x64 Thread Safe" (Zip).
Potem sprawdzam sumę kontrolną i rozpakowywuję do katalogu d:\apache\php.
W katalogu z PHP zmieniam nazwę pliku php.ini-development na php.ini, następnie w katalogu d:\apache\apache\conf w pliku httpd.conf dodaję na początku linijki:
LoadModule php7_module "d:/apache/php/php7apache2_4.dll" AddHandler application/x-httpd-php .php # ścieżka do php.ini PHPIniDir "d:/apache/php"
W pliku php.ini ustawiam odpowiednią ścieżkę do katalogu z rozszerzeniami:
extension_dir = "d:/apache/php/ext"
Ponieważ czasami zamiast PostgreSQL używam SQLite, w pliku php.ini dodatkowo usuwam komentarz w odpowiedniej linii:
extension=sqlite3
Start W katalogu d:\apache tworzę plik startowy runit.bat:
cd apache cd bin start httpd
Po jego uruchomieniu powinno być możliwe otworzenie adresu "localhost" w przeglądarce:
PostgreSQL
Przechodzę do https://www.postgresql.org/download/windows/, klikam na "zip archive" i pobieram ostatnią wersję (12.1).
Całość rozpakowywuję do katalogu d:\apache\pgsql.
Przechodzę do d:\apache\pgsql\bin\ i wykonuję komendę
initdb -D ../data -E UTF8 -U postgres
W pliku runit.bat dodaję linijki
cd pgsql cd bin start pg_ctl -D ../data -l d:\apache\pgsql\logfile start cd .. cd ..
W pliku httpd.conf dodaję linijkę
LoadFile "d:/apache/pgsql/bin/libpq.dll"
a w php.ini usuwam komentarz z linijek
extension=pdo_pgsql extension=pgsql
Dodatki W pliku php.ini zmieniam port serwera
Listen 8081
i pozwalam na ustawianie własnych dyrektyw w httpd.conf (zmieniam AllowOverride None na AllowOverride All w sekcji <Directory "${SRVROOT}/htdocs">), jak również pozwalam na wyświelanie pliku index.php: DirectoryIndex index.html index.php.
Podsumowanie Procedura aktualnie nie pozwala powiązać ostatniego Apache z ostatnim PHP - ten pierwszy nie znajduje poprawnie dodatków, co ciekawe ostatni Apache z PHP 7.3.12 działa wyśmienicie.
Zdaję sobie sprawę, że ten wpis może wyglądać jak notatki studenta pierwszego roku informatyki, ale... jest to blog i warto spisywać również takie drobiazgi.