1. Головна
  2. Колонка автора
  3. Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB

Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB

У ті далекі щасливі часи, коли повсюдно використовувалася операційна система Windows XP, процес установки серверного програмного забезпечення відбувався візуально, користувачам необхідно було запустити файл інсталяції і слідувати інструкціям. Але з часом розробки інсталяційних пакетів програмного забезпечення припинилися, і зараз необхідно самостійно їх компілювати. Розробники залишили тільки вихідний код, який потрібно відредагувати і встановити.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Опишемо процес встановлення вебсервера Apache 2.4 з модулем PHP 8, бази даних MySQL та налаштуємо декілька віртуальних хостів на операційній системі Windows 10.

Встановлення вебсервера Apache 2.4

На момент оновлення статті останньою актуальною версією Apache є Apache 2.4 binaries VS17 (httpd-2.4.57-win64-VS17.zip). Завантажуємо файл архіву на офіційному вебсайті https://www.apachelounge.com/download/. Символи VS17 означають версію компілятора Visual Studio, в якій проводилася компіляція та збирання програми - Visual Studio C++ 2022, тому, для роботи вебсерверу необхідно завантажити відповідний пакет Visual С++, який містить необхідні динамічні бібліотеки.
Збірка з останньою версією Windows® Visual Studio C++ 2022, також відомою як VS17, містить покращення, виправлення та оптимізацію порівняно з VC16 у таких сферах, як продуктивність, керування пам’яттю, нові функції відповідності стандартам, генерація коду та стабільність. VS17 має зворотну сумісність, це означає, що модуль VS16/15/14 можна використовувати в двійковому файлі VS17.
Пакет Visual С++ (vc_redist.x64.exe) завантажується на сторінці "Останні підтримувані пакети Visual C++, доступні для завантаження" офіційного вебсайту Підтримки від Microsoft.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Для встановлення вебсервера будемо дотримуватися наступної структури файлів: в корені диска "C:/" міститься директорія "web_server", всередині якої знаходяться піддиректорії: apache, php і MariaDB.

Після завантаження архіву необхідно розпакувати вміст теки Apache24 скачаного файлу в директорію "C:\web_server\apache". Інсталювати нічого не потрібно.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Далі необхідно в файлі "C:\web_server\apache\conf\httpd.conf" змінити наступні значення:
ServerRoot "C:/web_server/apache"
DocumentRoot "C:/web_server/apache/htdocs"
ServerName localhost:80
Параметр ServerName слід розкоментувати, а саме прибрати символ решітки "#" перед параметром.

Далі знайдіть секцію, яка починається "<Directory диск: />" і закінчується "</ Directory>". За замовчуванням вона виглядає так:
<Directory />
AllowOverride none
Require all denied
</Directory>
Її потрібно замінити на наступну секцію:
<Directory C:/>
Options Indexes Includes
AllowOverride All
Allow from all
</Directory>
Цим ви забезпечите, що в даному блоці будуть зберігатися налаштування для всіх каталогів за замовчуванням (так як "с:/" - кореневий каталог). А саме, для всіх каталогів за умовчанням є можливість автоматично генерувати індекс-список вмісту каталогів при перегляді його в браузері, а також підтримка SSI і дозвіл на виконання файлів ".htaccess" для індивідуальних налаштувань каталогів.

Знайдіть аналогічний блок, який починається "<Directory "${SRVROOT}/htdocs">" і закінчується "</Directory>". Там буде багато коментарів, не звертайте уваги. Цю секцію слід видалити, тобто всі налаштування для каталогу зі сторінками повинні залежати від налаштувань за замовчуванням, які ми вже налаштували.

Далі включаємо модуль "Rewrite". Для цього досить прибрати "#" перед наступним рядком:
LoadModule rewrite_module modules/mod_rewrite.so
У версії Apache 2.2, управління доступом на основі клієнта, ім’я хоста, IP - адреса та інші характеристики клієнтських запитів виконувалися за допомогою директив Order, Allow, Deny і Satisfy. У версії Apache 2.4 такий контроль доступу здійснюється так само, як і інші перевірки авторизації, з використанням нового модуля mod_authz_host. Старі ідіоми управління доступом слід замінити новими механізмами аутентифікації, хоча для сумісності зі старими конфігураціями надається новий модуль mod_access_compat, тому його необхідно підключити:
LoadModule access_compat_module modules/mod_access_compat.so
Останнє, що потрібно зробити - встановити сервіс "Apache". У командному рядку від імені Адміністратора набираємо рядок:
C:\web_server\apache\bin\httpd.exe -k install
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Під час встановлення, зупинки або запуску вебсервера, можливо відображення вікна оповіщення системи безпеки Windows про заблокування функцій програми. Нам необхідно дозволити доступ:
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Для більш зручного управління вебсервером можна створити на робочому столі ярлик для:
C:\web_server\apache\bin\ApacheMonitor.exe
Перевірте, щоб вебсервер був увімкнений (кнопка "Start" була неактивна):
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Для тестування роботи вебсервера запустіть браузер і наберіть в адресному рядку "http://localhost/". Якщо бачите сторінку з повідомленням "It works!" - значить вам успішно вдалося встановити вебсервер.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB

Установка PHP 8

На офіційному сайті PHP For Windows: Binaries and sources Releases викачуємо останню версію VS16 x64 Thread Safe.
Варіант Thread Safe призначений для безпечного виконання РНР в паралельних потоках в рамках одного системного процесу, наприклад, якщо РНР встановлюється в якості модуля вебсервера Apache.
На момент оновлення статті актуальна версія PHP 8.2 (8.2.8) з назвою файлу: php-8.2.8-Win32-vs16-x64.zip. x64 Thread Safe - 64-бітний варіант для установки в якості модуля вебсервера. Розпаковуємо вміст архіву в директорію "C:\web_server\php". Як у випадку з Apache, інсталювати нічого не потрібно.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
У кінець файлу "C:\web_server\apache\conf\httpd.conf" додаємо рядки:
LoadModule php_module "C:/web_server/php/php8apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/web_server/php/"
Обов’язково необхідно додати в конфігураційний файл Apache директиву "PHPIniDir", яка дозволяє точно вказати місце розташування файлу "php.ini". Після додавання директиви перезавантажте Apache і упевніться, що запуск пройшов успішно.
Зверніть увагу, що під час запису шляху обов’язково використовуйте прямі слеші "/". Apache і PHP спочатку були створені для роботи на Unix-системах, де використовуються саме прямі слеші. Щоб уникнути помилок, які дуже важко знайти, рекомендується використовувати в конфігураційних файлах Apache і PHP прямі слеші в Unix-форматі.
РНР має величезну кількість різноманітних налаштувань, які розміщенні у файлі php.ini. Відразу після установки інтерпретатора PHP замість файлу php.ini можна виявити лише два файли:

- php.ini-production - рекомендований набір параметрів для робочого сервера;

- php.ini-development - рекомендований набір параметрів для робочої станції розробника.

Для локальної розробки файл php.ini-development необхідно перейменувати в php.ini.

Наступною операцією є настройка конфігураційного файлу PHP. Дані налаштування виходять далеко за межі даної статті, але в більшості випадків, значення директив за замовчуванням підходять для розробки більшості додатків.

Інтерпретатор РНР будується за модульним принципом. Мова складається з ядра, до якого при необхідності можуть підключатися розширення - бібліотеки, що доповнюють мову новими можливостями. Наприклад, для обробки зображень можна підключити розширення GDLib, для зв’язку з базами даних - розширення PDO, для підтримки мультибайтних рядків (UTF-8) - mbstring. Для того щоб зменшити обсяг споживаної оперативної пам’яті, більшість розширень не включаються до складу ядра РНР. Замість цього вони компілюються у вигляді зовнішніх динамічних бібліотек (*.dll для Windows).
У дистрибутивах для операційної системи Windows розширення, оформлені у вигляді динамічних бібліотек, скомпільовані, але не підключені. Знайти їх можна в підкаталозі "ext" основного каталогу РНР-дистрибутиву. Для того щоб підключити одне з таких зовнішніх розширень, необхідно відредагувати конфігураційний файл php.ini. У файлі конфігурації слід знайти директиву extension_dir і вказати в ній шлях до директорії з розширеннями, після чого можна його активувати його, скориставшись директивою extension. У файлі конфігурації php.ini, як правило, вже додані закоментовані директиви для всіх розширень з директорії ext. Потрібне розширення необхідно активувати, прибравши крапку з комою з початку рядка. Особливу увагу приділіть бібліотеці "php_mbstring.dll", яка містить функції для роботи з багатобайтними кодуваннями, до яких відносяться кодування східних мов (японська, китайська, корейська), Юнікод (UTF-8) та інші. Бібліотека "php_mbstring.dll" має бути присутня в директорії "C:\web_server\php\ext\".
У кінці файлу конфігурації "php.ini" необхідно встановити такі значення:
upload_tmp_dir = "C:/Windows/Temp"
session.save_path = "C:/Windows/Temp"
error_log = "C:/Windows/temp/php-errors.log"
extension_dir = "C:/web_server/php/ext"
memory_limit = 512M
post_max_size = 50M
upload_max_filesize = 50M
sys_temp_dir = "C:/Windows/Temp"
У файлі конфігурації php.ini діють пріоритети правил. Правило, написане нижче буде перекривати правило, набране вище. Тому немає необхідності всі вище описані значення змінювати порядково, досить їх написати останніми рядками в файлі конфігурації, і дані правила будуть мати більш високий пріоритет.
Далі необхідно розкоментувати (прибрати крапку з комою попереду) розширення, які повинні бути підключені.
extension=bz2
extension=curl
extension=gd
extension=gettext
extension=gmp
extension=imap
extension=mbstring
extension=exif
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
extension=soap
extension=sqlite3
extension=tidy
extension=fileinfo
Аналогічно можна розмістити ці розширення у кінці файлу php.ini.
Перезапускаємо Apache використовуючи ApacheMonitor.

Для того, щоб протестувати, як працює вебсервер в зв’язці з інтерпретатором PHP, перейменуйте файл "index.html" на "index.php" у директорії "C:\web_server\apache\htdocs" і заповніть його таким змістом:
<?php
phpinfo();
?>
Запустіть браузер. Наберіть в адресному рядку "http://localhost/". Якщо ви побачили кілька файлів у вікні браузера, то натисніть на "index.php". В результаті повинні побачити сторінку зі службовою інформацією про вебсервер та інтерпретатор PHP.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Також слід зауважити, що деякі модулі можуть не завантажитися, про що можна переконатися у файлі "C:/Windows/Temp/php-errors.log":
[21-Jul-2023 08:13:09 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' (tried: C:/web_server/php/ext\curl (The specified module could not be found), C:/web_server/php/ext\php_curl.dll (The specified module could not be found)) in Unknown on line 0
[21-Jul-2023 08:13:09 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: C:/web_server/php/ext\pdo_pgsql (The specified module could not be found), C:/web_server/php/ext\php_pdo_pgsql.dll (The specified module could not be found)) in Unknown on line 0
[21-Jul-2023 08:13:09 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: C:/web_server/php/ext\pdo_sqlite (The specified module could not be found), C:/web_server/php/ext\php_pdo_sqlite.dll (The specified module could not be found)) in Unknown on line 0
[21-Jul-2023 08:13:09 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'sqlite3' (tried: C:/web_server/php/ext\sqlite3 (The specified module could not be found), C:/web_server/php/ext\php_sqlite3.dll (The specified module could not be found)) in Unknown on line 0
[21-Jul-2023 08:13:09 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:/web_server/php/ext\curl (The specified module could not be found), C:/web_server/php/ext\php_curl.dll (The specified module could not be found)) in Unknown on line 0
[21-Jul-2023 08:13:09 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_pgsql' (tried: C:/web_server/php/ext\pdo_pgsql (The specified module could not be found), C:/web_server/php/ext\php_pdo_pgsql.dll (The specified module could not be found)) in Unknown on line 0
[21-Jul-2023 08:13:09 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: C:/web_server/php/ext\pdo_sqlite (The specified module could not be found), C:/web_server/php/ext\php_pdo_sqlite.dll (The specified module could not be found)) in Unknown on line 0
[21-Jul-2023 08:13:09 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'sqlite3' (tried: C:/web_server/php/ext\sqlite3 (The specified module could not be found), C:/web_server/php/ext\php_sqlite3.dll (The specified module could not be found)) in Unknown on line 0
Для того, щоб завантаження модулів пройшло успішно, а команда РНР була доступна в будь-якій точці файлової системи, шлях до РНР-інтерпретатора слід прописати в змінній оточення РАТН. Більш детально у публікації: Налаштування системної змінної PATH.

Змінна PATH являє собою системну змінну, за допомогою якої операційна система знаходить потрібні виконувані об’єкти в командному рядку або вікні терміналу. У параметрі змінної міститься список (через крапку з комою;) директорій, в яких відбуватиметься пошук виконуваного файлу при виклику команди з консолі.

В операційній системі Windows 10 системну змінну PATH можна задати за допомогою системної утиліти у панелі керування Windows. Для цього послідовно у меню "Пуск" виконуємо команду "Система" ⇨ "Додаткові параметри системи" ⇨ "Змінні оточення". У розділі "Системні змінні" вибираємо змінну середовища PATH та натискаємо Редагувати. Якщо змінної PATH не існує, натискаємо Створити. У вікні "Редагувати змінну оточення" необхідно додати значення змінної середовища PATH "c:\web_server\php".
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB

Вбудований вебсервер PHP

Інтерпретатор PHP також містить у собі вбудований сервер. Якщо вам необхідно використовувати PHP без необхідності використання спеціалізованого вебсерверу, можна використовувати вбудований Non Thread Safe СGI-варіант дистрибутиву. Вам лише необхідно розпакувати архів у будь-яку директорію, наприклад C:/php і виконати наступну команду (з правами адміністратора):
php -S localhost:80
Для запуску вашого скрипта необхідно звернувшись у вебпереглядачі за адресою http://localhost. Порт 80 можна не вказувати, оскільки вебпереглядач автоматично звертатиметься до 80 порта, закріпленому за протоколом http.

По замовчуванню кореневим каталогом є поточна директорія, саме в ній буде проведений пошук індексного файлу index.php. Однак за допомогою параметра -t можна вказати довільну директорію:
php -S localhost:80 -t site
Журнальні записи або логи сервера виводяться безпосередньо в консоль, в якій він був запущений. Зупинити сервер можна, натиснувши комбінацію клавіш <Ctrl> + <C>.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Втім, вбудований сервер призначений лише для розробки, для забезпечення роботи повноцінного вебсайту краще скористатися промисловими серверами, такими як Apache або nginx.

Створення віртуальних хостів Apache

Проблема віртуальних хостів (окремих вебсайтів) стає досить гострою, коли ви працюєте одночасно над двома і більше проєктами. Для їх адміністрування звичайним "localhost" не обійтися. За допомогою віртуальних хостів і сервера Apache цю проблему цілком можна вирішити.

Створимо віртуальні хости з використанням однієї загальної IP-адреси. Наприклад, створимо віртуальний хост "mysite". Для установки необхідно зробити деякі зміни у файлі конфігурації Apache "C:\web_server\apache\conf\httpd.conf", а також в деяких файлах Windows.

Створюємо директорію "localhost" в кореневому каталозі диска (C:\localhost\). Далі створюємо в ній каталог віртуального хоста - "mysite" (C:\localhost\mysite\). Саме в цій директорії і будуть міститися файли віртуального хоста. Далі необхідно включити підтримку віртуальних хостів. Відкрийте файл "C:\web_server\apache\conf\httpd.conf" і додайте наступні рядки в самому кінці файлу після всіх коментарів:
<VirtualHost *:80>
ServerName localhost:80
DocumentRoot "C:/web_server/apache/htdocs"
ErrorLog "c:/web_server/apache/htdocs/error.log"
CustomLog "c:/web_server/apache/htdocs/access.log" common
</VirtualHost>
# mysite
<VirtualHost *:80>
ServerName mysite
DocumentRoot "C:/localhost/mysite"
ErrorLog "c:/localhost/mysite/error.log"
CustomLog "c:/localhost/mysite/access.log" common
</VirtualHost>
Наступний крок створення віртуального хоста - це зміна файлу "C:\WINDOWS\system32\drivers\etc\hosts" операційної системи. Відкрийте даний файл і додайте в нього рядки:
127.0.0.1 localhost
127.0.0.1 mysite
Якщо у Вас вже є запис "localhost", то другий додавати не потрібно. Тепер перезапустіть сервер Apache, відкрийте браузер, введіть в адресному рядку "http://mysite/" і ви опинитеся в своєму віртуальному хості.

Встановлення MariaDB

Для початку необхідно завантажити останню версію дистрибутиву MariaDB (https://mariadb.com/downloads/). На момент оновлення статті назва файлу інсталяції була "mariadb-11.0.2-winx64".
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
На відміну від попередніх операцій встановлення вебсервера Apache та модуля PHP, файл встановлення MariaDB є інсталяційним, тому потрібно його запустити та слідувати інструкціям.
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Під час інсталяції необхідно змінити шлях розміщення "C:\web_server\MariaDB\":
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
У наступному вікні необхідно двічі ввести пароль до облікового запису Root і підтверджуємо пункт використання UTF8 як набір символів сервера за замовчуванням:
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
У наступних вікнах залишаємо все по замовчуванню та завершуємо інсталяцію програми.

Після установки на робочому столі з’явиться ярлик HeidiSQL. Програма HeidiSQL являє собою дуже потужну програму для роботи з базами даних MySQL, Microsoft SQL і PostgreSQL. Має дуже зрозумілий і простий інтерфейс, високу швидкість виконання операцій і безліччю вбудованих функцій, таких як створення бази даних, її наповнення, редагування і збереження.

При запуску програми нам необхідно підключиться до бази даних. Для цього вводимо нову назву підключення і пароль:
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Далі можна виконувати будь-які операції, які допустимі з базами даних:
Встановлення вебсервера Apache 2.4 з модулем PHP 8 та бази даних MariaDB
Після інсталяції вищеописаного програмного забезпечення ви можете повноцінно локально розробляти власні вебсайти.
Для роботи із зображеннями вам необхідно встановити модуль PHP Imagick. Детальніше тут: Встановлення бібліотеки для роботи із зображеннями Imagick в PHP.
Редакція «КовельPost» може не поділяти думку блогерів або дописувачів. За зміст публікацій і їх достовірність відповідальність несуть автори.

Коментарі

  • Сергій
    Дуже вдячний за допомогу зі змінною РАТН. Встановив Apache та PHP, текст "It works!" успішно відобразився, а CMS не працювали, оскільки підключення декількох важливих модулів відбувалося з помилками (не могло знайти файл). Дуже довго мучився з вирішенням цієї проблеми, змінював багатьма варіантами шляхи до модулів, а виявилося все дуже просто, адже декілька модулів вимагають встановлення змінної РАТН для їхнього підключення.
    Відповісти
  • Костя
    У старій версії PHP7 модулі (extension) вказувалися з розширенням *.dll. У PHP8 - без! Дякую за допомогу, зробив так, як описано у статті, все працює.
    Відповісти
  • Юра
    Вирішив вивчати PHP, і вперше встановлюю веб-сервер. В мене Windows 8.1, зробив все точно по вашій інструкції, все працює! Версія Apache 2.4.47, PHP 8.0.5. Дякую!
    Відповісти
  • Артем
    Неодноразово встановлюю вебсервер чітко за цією інструкцією, все чудово працює, ідентично хостингу. Щойно помітив, що оновилася інформація стосовно версій програмного забезпечення, добавилися деякі примітки. Дякую автору за актуальність.
    Відповісти
  • Віталій
    Через рік знову повернувся до цієї статті і її актуальність та легкість не втратились! Дякую!
    Відповісти
  • Олексій
    Дуже дякую за статтю! Шкода що відразу на неї не попав, так би зекономив багато часту на встановлення. Зробив все згідно інструкції. На момент написанння коментаря встановив: Apache 2.4.63, PHP 8.2.28, Mariadb 11.4.7. Автору респект, стаття написана понад 4 роки тому, а актуальна і досі!
    Відповісти

Підписуйтесь на наш канал у Telegram! 🚀

@kovelpost