У цій статті ми розглянемо процес встановлення Apache 2.4.x і PHP 5.6.x на стандартній 64-розрядної версії Windows Server 2012/2008.

Бінарні версії Apache Windows Server у вихідному репозиторії недоступні, і ми змушені звернутися до сторонніх дистрибутивам, таким як apachehaus.com. Я використовую версію httpd-2.4.20-x64-vc11-r2.zip, яку можна завантажити тут. Вона складена з допомогою VC ++ 2012 (VC11). Переконайтеся, що сервер встановлений з застосуванням VC11 64bit. Інакше можуть виникнути помилки, такі як відсутність необхідних модулів, або Apache не буде запускатися. Його можна завантажити прямо з дзеркала Microsoft. Двійкові файли PHP можна завантажити звідси. Я використовую php-5.6.22-Win32-VC11-x64.zip, який скомпільовано з допомогою vc11.

Установка Apache

Спочатку завантажте останню версію Apache HTTP Server win32 і витягніть файли у зручне місце, наприклад «C:Apache». Якщо Apache встановлений в «C: Program Files Apache2.2», скрипти cgi і PHP можуть некоректно знаходити шляхи до файлів через прогалини в іменах каталогів.

У цьому прикладі ми створимо каталог Apache. Використовуючи «Блокнот», відкрийте файл httpd.conf. Цей файл знаходиться в підкаталозі /conf. Зверніть увагу, що в конфігураційних файлах Apache в повних шляхи до файлу повинні використовуватися слеш «/».

Тепер можна спробувати встановити Apache на Windows7. Відкрийте командний рядок і перейдіть у директорію «c:Apache bin» і введіть команду httpd -k install:

c:Apachebin>httpd -k install
Installing the ‘Apache2.4’ service
The ‘Apache2.4’ service is successfully installed.
Testing httpd.conf….
Errors reported here must be corrected before the service can be started.
httpd: Syntax error on line of 39 C:/Apache/conf/httpd.conf: ServerRoot must be
a valid directory

З наведеного вище фрагмента коду видно, що служба була встановлена, але з помилкою. Кореневий каталог сервера потрібно виправити до запуску служби, якщо значення каталогу установки було змінено (за замовчуванням використовується значення /Apache2.4). В даному випадку це / Apache:

Define SRVROOT «/Apache»
ServerRoot «${SRVROOT}»

Після цього двічі кликніть по виконуваного файлу монітора Apache Server або через командний рядок введіть start / stop / restart the service. Приклади команд для CMD наведено в наступному фрагменті коду:

c:Apachebin>httpd -k start
c:Apachebin>httpd -k restart
c:Apachebin>httpd -k stop
The ‘Apache2.4’ service is stopping.
The ‘Apache2.4’ service has stopped.

Якщо при запуску сервера Apache PHP Windows виводиться повідомлення про помилку (наведено нижче), перевірте, чи запущено вже процес httpd, виконується процес IIS і прослуховується порт 80. IIS є встановленим за замовчуванням веб-сервером, він налаштований на порт 80:

c:Apachebin>httpd -k start
(OS 10048)Only one usage of each socket address (protocol/network address/port)
is normally permitted. : AH00072: make_sock: could not bind to address [::]:80
(OS 10048)Only one usage of each socket address (protocol/network address/port)
is normally permitted. : AH00072: make_sock: could not bind to address 0.0.0.0:
80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

Якщо в даний момент IIS запущений, його можна відключити через «Диспетчер серверів». У командному рядку введіть «services.msc». Знайдіть службу «web publishing platform», двічі клацніть на ній мишею, щоб відкрити властивості служби і зупиніть її. Щоб заборонити її запуск при наступному перезавантаженні, можна поміняти тип запуску на ручний. Крім цього, якщо на сервері встановлений Skype, він також конфліктує з портом 80.

Після того, як Apache був запущений і всі налаштування були поставлені вірно, при переході за адресою http://localhost/ у будь-якому браузері повинна відображатися стандартна сторінка http або просто повідомлення «It works«.

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

Спочатку завантажте двійкові файли PHP і розпакуйте в папку «C:php». Потім перейменуйте файл c:phpphp.ini-development в php.ini. Відкрийте його і змініть значення декількох змінних.

Змініть значення змінної «extension_dir» на «C:phpext«. За замовчуванням вона закоментований або для неї встановлено значення «/ext«. Також можна включити в php.ini необхідні розширення, видаливши символ «;» на початку рядка:

;extension=php_mbstring.dll
;extension=php_exif.dll
extension=php_mysql.dll
extension=php_mysqli.dll

Крім цього потрібно задати для змінної sessions.save_path папку тимчасових файлів Windows (тобто C:Temp).

Каталоги PHP та Apache також необхідно додати для змінних шляхів середовища. Відкрийте Панель управління — Система і безпека — Місцезнаходження системи і додайте «;C:php; C:Apachebin» в кінець списку «Системні змінні шляху» і натисніть «ОК», щоб зберегти зміни.

Перед перезапуском служби Apache Windows необхідно вказати у файлі httpd.conf модулі PHP. Додайте наступні рядки в кінець файлу httpd.conf під розділ «Again»:

LoadModule php5_module «c:/php/php5apache2_4.dll»
AddType application/x-httpd-php .php
PHPIniDir «C:/php»

Також потрібно додати «index.php» в розділ DirectoryIndex у файлі httpd.conf, як показано нижче:

DirectoryIndex index.html index.php

Після внесення змін збережіть файл httpd.conf і закрийте його.

Щоб зміни вступили в силу, необхідно перезапустити службу Apache. Зробити це можна через монітор Apache Service або з командного рядка — «httpd -k restart«.

Створіть нову сторінку «index.php» в папці C:Apachehtdocs і помістіть в неї будь-який php-код. Наприклад, я використовував наступний код:

Після збереження змін у файлі відкрийте в браузері http://localhost/index.phpі якщо все в порядку, ви побачите сторінку phpinfo.

Ми завершили встановлення Apache PHP на Windows Server 2012. У файлах httpd.conf і php.ini багато модулі відключені або закомментированы. Їх можна увімкнути, видаливши коментарі і перезапустити служби Apache. Для доступу до сайтів / сторінок із зовнішньої мережі переконайтеся, що до файлу httpd.exe дозволений публічний доступ в Панель управління — Система і безпека — Брандмауер Windows — Дозволені програми.

Переклад статті «Installing Apache and PHP manually in Windows server 2012/2008» дружною командою проекту Сайтостроение від А до Я.