mwiacek.comColorColor | Mobile  
Ustaw sobie własnego Apache na Windows (2019, wersja 1.1)
Submitted by marcin on Thu 28-Nov-2019

Polski
Polski blog
dobreprogramy.pl
Windows
OS
x86



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

i (od wersji 7.4 PHP) w pliku httpd.conf dodaję:

LoadFile "d:/apache/php/libsqlite3.dll"

Podobnie należy załadować bibliotekę do PostgreSQL.

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:

image

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 httpd.conf:

  • zmieniam port serwera

    Listen 8081
  • pozwalam na ustawianie własnych dyrektyw w .htaccess (zmieniam AllowOverride None na AllowOverride All w sekcji <Directory "${SRVROOT}/htdocs">)
  • pozwalam na wyświetlanie 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.