НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Блог Адміну. Уроки W3Schools українською

Встановлення локального сервера Apache 2.4 на комп’ютер з Windows

Original: "Using Apache HTTP Server on Microsoft Windows",
translating by WebSunSey -


Як встановити сервер Apache?

Як встановити локальний сервер Apache 2.4 на комп’ютер з Windows?

Використання Apache HTTP Server в Microsoft Windows

Цей документ пояснює, як встановити, налаштувати і запустити Apache 2.4 під Microsoft Windows. Якщо у вас є питання після перегляду документації (і будь-яких журналів подій та помилок), вам варто звернутися до списку розсилки, що підтримується рівноправними користувачами.

В цьому документі мається на увазі, що ви встановлюєте бінарний дистрибутив Apache. Якщо ви хочите скомпілювати Apache самостійно (можливо, для допомоги в розробці або відстежування помилок), див. Компіляція Apache для Microsoft Windows.

Вимоги до операційної системи

Основною платформою Windows для запуска Apache 2.4 є Windows 2000 або більш пізня версія. Завжди отримуйте і встановлюйте поточний пакет оновлення, щоб уникнути помилок операційної системи.

Версії Apache HTTP Server більш пізні, ніж 2.2, не будуть працювати в жодній операційній системі, що передувала Windows 2000.

Завантаження Apache для Windows

Сам по собі Apache HTTP Server Project не надає бінарні випуски програмного забеспечення, лише початковий код. Окремі комміттери можуть надавати бінарні пакети для зручності, але це не реліз, що підлягає доставці.

Якщо ви не можете скомпілювати Apache HTTP Server самостійно, ви можете отримати бінарний пакет із багаточисельних бінарних дистрибутивів, доступних в Інтернеті.

Популярні варіанти розгортання Apache httpd (і, необов’язково, PHP та MySQL) в Microsoft Windows вміщують в собі:

Налаштування Apache для Windows

Apache налаштовується за допомогою файлів в підкаталозі conf. Це ті самі файли, які використовуються для налаштування версії Unix, але є кілька різних директив для Apache в Windows. Дивіться вказівник директив для всіх доступних директив.

Основні відмінності в Apache для Windows:

  • Оскільки Apache для Windows є багатопоточним, він не використовує окремий процес для кожного запиту, як Apache в Unix. Замість цього зазвичай працюють лише два процеса Apache: батьківський процес і дочірній процес, який обробляє запити. Всередині дочірнього процесу кожен запит обробляється окремим потоком.
  • Директиви управління процесом також різні:

    MaxConnectionsPerChild: Як і директива Unix, вона контролює, скільки з’єднань буде обслуговувати один дочірній процес перед виходом. Однак, на відміну від Unix, процес заміны не доступний миттєво. Використовуйте значення за замовчуванням MaxConnectionsPerChild 0, якщо не вказано, як змінити поведінку для усунення втікання пам’яті в сторонніх модулях або внутрішньопроцесних додатках.

    Попередження. Файл конфігурації сервера перечитується при запуску нового дочірнього процесу. Якщо ви змінили httpd.conf, новий дочірній елемент може не запуститись або ви можете отримати неочикувані результати.

    ThreadsPerChild: ця директива є новою. Вона повідомляє серверу, скільки потоків він має використовувати. Це максимальна кількість з’єднань, які сервер може обробити за один раз, тому переконайтесь, що це число достатньо велике для вашого сайта, якщо ви отримаєте багато відвідувань. Рекомендуєме значення за замовчуванням - ThreadsPerChild 150, але його необхідно налаштувати, щоб відобразити найбільш очікувану кількість одночасних з’єднань для прийняття.

  • Директиви, котрі приймають імена файлів в якості аргументів, повинні використовувати імена файлів Windows замість Unix. Однак, оскількі Apache може інтерпретувати зворотній слеш як послідовність «escape-символів», ви повинні постійно використовувати прямий слеш в іменах шляхів, а не зворотній слеш.
  • Хоча в Windows імена файлів зазвичай не чутливі до регістру, URL-адреси, як і раніше, обробляються внутрішньо як регістрозалежні, перш ніж вони зіставляються з файловою системою. Наприклад, усі директиви <Location>, Alias и ProxyPass використовують реєстрозалежні аргументи. З цієї причини особливо важливо використовувати директиву <Directory> при спробі обмежити доступ до контенту у файловій системі, оскільки ця директива застосовується до будь-якого контенту в каталозі незалежно від того, як до нього здійснюється доступ. Якщо ви хочете переконатися, що в URL використовуються лише малі літери, ви можете використовувати щось на зразок:
  • RewriteEngine On
    RewriteMap lowercase int:tolower
    RewriteCond "%{REQUEST_URI}" "[A-Z]"
    RewriteRule "(.*)" "${lowercase:$1}" [R,L]

  • При роботі Apache потрібен доступ до запису тільки в каталог журналів та будь-яке налаштоване дерево каталогів кешу. Через проблему нечутливих до регістру та коротких імен у форматі 8.3 Apache повинен перевірити всі зазначені шляхи. Це означає, що кожен каталог, який оцінює Apache, від кореня диска до аркуша каталогу повинен мати дозволи на читання та перегляд каталогу. Якщо Apache2.4 встановлений у C:\Program Files, то для Apache повинні бути видні кореневий каталог, Program Files та Apache2.4.
  • Apache для Windows містить можливість завантажувати модулі під час виконання без перекомпіляції сервера. Якщо Apache скомпільовано нормально, він встановить кілька додаткових модулів у каталог \Apache2.4\modules. Щоб активувати ті чи інші модулі, потрібно використовувати директиву LoadModule. Наприклад, щоб активувати модуль статусу, використовуйте таке (на додаток до директив з активації статусу в access.conf):
  • LoadModule status_module "modules/mod_status.so"

    Інформація про створення завантажуваних модулів також доступна.

  • Apache також може завантажувати розширення ISAPI (інтерфейс прикладного програмування інтернет-сервера), наприклад, Microsoft IIS та інші сервери Windows. Більше доступно за посиланням докладна інформація. Зверніть увагу, що Apache не може завантажувати фільтри ISAPI, і обробники ISAPI з деякими розширеннями функцій Microsoft не працюватимуть.
  • При запуску сценаріїв CGI метод, що використовується Apache для пошуку інтерпретатора скрипту, налаштовується за допомогою директиви ScriptInterpreterSource.
  • Оскільки у Windows часто складно керувати файлами з такими іменами, як .htaccess, може виявитися корисним змінити ім’я цього файлу конфігурації для кожного каталогу за допомогою директиви AccessFilename.
  • Будь-які помилки під час запуску Apache реєструються в журналі подій Windows під час роботи з Windows NT. Цей механізм діє як резервна копія для тих ситуацій, коли Apache ще готовий використовувати файл error.log. Ви можете переглянути журнал подій додатків Windows за допомогою засобу перегляду подій, наприклад, Пуск - Установки - Панель керування - Адміністрування - Перегляд подій.

Запуск Apache як сервісу

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

Ви можете встановити Apache як службу Windows NT наступним чином з командного рядка в підкаталозі Apache bin:

httpd.exe -k install

Якщо потрібно вказати ім’я служби, яку ви бажаєте встановити, використовуйте наступну команду. Ви повинні зробити це, якщо у вас є кілька різних сервісних установок Apache на вашому комп’ютері. Якщо ви вказуєте ім’я під час встановлення, ви повинні вказати його під час будь-якої іншої -k операції

httpd.exe -k install -n "MyServiceName"

Якщо вам потрібно мати конкретно названі конфігураційні файли для різних сервісів, ви повинні використовувати це:

httpd.exe -k install -n "MyServiceName" -f "c:\files\my.conf"

Якщо ви використовуєте першу команду без будь-яких спеціальних параметрів, крім -k install, служба буде називатися Apache2.4, і передбачається, що конфігурація буде conf\httpd.conf.

Видалити служби Apache легко. Просто використовуйте:

httpd.exe -k uninstall

Ви можете вказати певну службу Apache, яку потрібно видалити за допомогою:

httpd.exe -k uninstall -n "MyServiceName"

Звичайний запуск, перезапуск та завершення роботи служби Apache зазвичай виконується через Apache Service Monitor, за допомогою таких команд, як NET START Apache2.4 та NET STOP Apache2.4, або за допомогою звичайного керування службами Windows. Перш ніж запускати Apache як службу будь-яким способом, необхідно перевірити файл конфігурації служби за допомогою:

httpd.exe -n "MyServiceName" -t

Ви також можете керувати сервісом Apache за допомогою перемикачів командного рядка. Для запуску встановленого сервісу Apache необхідно використовувати:

httpd.exe -k start -n "MyServiceName"

Щоб зупинити Apache через ключі командного рядка, використовуйте це:

httpd.exe -k stop -n "MyServiceName"

або

httpd.exe -k shutdown -n "MyServiceName"

Ви також можете перезапустити працюючу службу та змусити її перечитати файл конфігурації за допомогою:

httpd.exe -k restart -n "MyServiceName"

За замовчуванням всі служби Apache зареєстровані для запуску як системного користувача (обліковий запис LocalSystem). Обліковий запис LocalSystem не має прав доступу до мережі через будь-який механізм, захищений Windows, включаючи файлову систему, іменовані канали, DCOM або безпечний RPC. Однак він має широкі привілеї на локальному рівні.

Ніколи не надавайте жодних мережевих привілеїв облікового запису LocalSystem! Якщо вам потрібний Apache для доступу до мережних ресурсів, створіть окремий обліковий запис Apache, як зазначено нижче.

Користувачам рекомендується створити окремий обліковий запис для запуску служб Apache. Якщо вам потрібно отримати доступ до мережних ресурсів через Apache, це необхідно.

  1. Створіть звичайний обліковий запис користувача домену та обов’язково запам’ятайте його пароль.
  2. Надайте щойно створеному користувачеві привілей входити в систему як сервіс та діяти як частину операційної системи. У Windows NT 4.0 ці привілеї надаються через Менеджер користувачів для доменів, але у Windows 2000 і XP ви, ймовірно, захочете використовувати групову політику для поширення цих параметрів. Ви також можете встановити їх вручну за допомогою MMC Local Security Policy.
  3. Переконайтеся, що створений обліковий запис є членом групи «Користувачі».
  4. Надайте обліковий запис права на читання та виконання (RX) всім папкам документів та скриптів (наприклад, htdocs та cgi-bin).
  5. Надайте права на зміну облікового запису (RWXD) в директорії logs Apache.
  6. Надайте облікового запису права на читання та виконання (RX) двійкового виконуваного файлу httpd.exe.

Зазвичай рекомендується надавати користувачеві доступ до служби Apache в режимі читання та виконання (RX) для всього каталогу Apache2.4, за винятком підкаталогу logs, де користувач повинен мати права як мінімум на зміну (RWXD).

Якщо ви дозволяєте обліковому запису входити в систему як користувач і як служба, то ви можете увійти в систему з цим обліковим записом і перевірити, чи має обліковий запис привілею для виконання скриптів, читання веб-сторінок і що ви можете запустити Apache в вікно консолі. Якщо це працює, і ви виконали кроки, описані вище, Apache має працювати як сервіс без проблем.

Код помилки 2186 є гарною ознакою того, що вам необхідно переглянути конфігурацію "Вхід до системи" для служби, оскільки Apache не може отримати доступ до необхідного мережного ресурсу. Також зверніть увагу на привілеї користувача, налаштованого для запуску Apache.

Під час запуску Apache як служби ви можете отримати повідомлення про помилку з диспетчера керування службами Windows. Наприклад, якщо ви спробуєте запустити Apache за допомогою аплету Services на панелі керування Windows, ви можете отримати таке повідомлення:

Не слід запускати Apache2.4 послуги на \\COMPUTER
Error 1067; The process terminated unexpectedly.

(Не вдалося запустити службу Apache2.4 на \\ COMPUTER
Помилка 1067; Процес несподівано завершився.)

Ви отримаєте цю загальну помилку, якщо виникнуть проблеми із запуском служби Apache. Щоб побачити, що справді викликає проблему, ви повинні дотримуватися інструкцій із запуску Apache для Windows з командного рядка.

Якщо у вас виникли проблеми зі службою, рекомендується виконати наведені нижче інструкції, щоб спробувати запустити httpd.exe з вікна консолі, та усунути помилки, перш ніж намагатися запустити його як службу знову.

Запуск Apache як консольної програми

Запуск Apache як служби зазвичай є рекомендованим способом його використання, але іноді простіше працювати з командного рядка, особливо під час початкового налаштування та тестування.

Щоб запустити Apache з командного рядка як консольну програму, використовуйте таку команду:

httpd.exe

Apache виконається і буде працювати доти, доки не буде зупинено натисканням Control-C.

Ви також можете запустити Apache за допомогою ярлика "Запуск Apache" у консолі, розташованій в меню Пуск -> Програми -> Apache HTTP Server 2.4.xx -> Управління сервером Apache під час встановлення. Це відкриє вікно консолі та запустить Apache всередині нього. Якщо у вас не встановлено Apache як службу, вікно буде відображатися доти, доки ви не зупините Apache, натиснувши Control-C у вікні консолі, в якому працює Apache. Сервер закриється за кілька секунд. Однак, якщо у вас встановлено службу Apache, ярлик запускає службу. Якщо службу Apache вже запущено, ярлик нічого не робить.

Якщо Apache працює як служба, ви можете зупинити його, відкривши інше вікно консолі та ввівши:

httpd.exe -k shutdown

Запуску в якості служби слід віддавати перевагу перед запуском у вікні консолі, тому що це дозволяє Apache завершувати будь-які поточні операції та коректно очищатися.

Але якщо сервер працює у вікні консолі, ви можете зупинити його тільки натиснувши Control-C у тому ж вікні.

Ви також можете перезапустити Apache. Це змушує його перечитати конфігураційний файл. Будь-які операції можна виконувати без перерви. Щоб перезапустити Apache, натисніть Control-Break у вікні консолі, яке ви використовували для запуску Apache, або введіть

httpd.exe -k restart

якщо сервер працює як сервіс.

Примітка для людей, знайомих з версією Apache для Unix: ці команди надають Windows-еквівалент для kill -TERM pid та kill -USR1 pid. Опція командного рядка -k, що використовується, була обрана як нагадування про команду kill, яка використовується в Unix.

Якщо вікно консолі Apache закривається відразу або несподівано після запуску, відкрийте командний рядок у меню Пуск -> Програми. Перейдіть до папки, в яку ви встановили Apache, введіть httpd.exe та прочитайте повідомлення про помилку. Потім перейдіть до папки logs і перегляньте файл error.log щодо помилок конфігурації. Припускаючи, що httpd встановлено C:\Program Files\Apache Software Foundation\Apache2.4\, ви можете зробити наступне:

c:
cd "Program Files\Apache Software Foundation\Apache2.4\bin"
httpd.exe

Дочекайте зупинки Apache або натисніть Control-C. Потім введіть наступне:

cd ..\logs
more < error.log

Під час роботи з Apache важливо знати, як він знайде файл конфігурації. Ви можете вказати файл конфігурації у командному рядку двома способами:

  • -f вказує абсолютний або відносний шлях до файлу конфігурації:
  • httpd.exe -f "c:\my server files\anotherconfig.conf"

    або

    httpd.exe -f files\anotherconfig.conf

  • -n вказує встановлену службу Apache, файл конфігурації якої використовуватиметься:
  • httpd.exe -n "MyServiceName"

В обох випадках правильний ServerRoot повинен бути встановлений у файлі конфігурації.

Якщо ви не вкажете файл конфігурації за допомогою -f або -n, Apache використовуватиме ім'я файлу, скомпільоване на сервері, наприклад conf\httpd.conf. Цей шлях відноситься до каталогу установки. Ви можете перевірити ім'я скомпільованого файлу за значенням, позначеним як SERVER_CONFIG_FILE, під час виклику Apache з ключем -V, наприклад:

httpd.exe -V

Потім Apache спробує визначити свій ServerRoot, виконавши такі дії у такому порядку:

  1. Директива ServerRoot через ключ командного рядка -C.
  2. Ключ -d у командному рядку.
  3. Поточний робочий каталог.
  4. Запис реєстру, який було створено, якщо ви виконали бінарну установку.
  5. Корінь сервера скомпільований на сервер. За замовчуванням це /apache, ви можете перевірити це за допомогою httpd.exe -V і знайти значення, позначене як HTTPD_ROOT.

Якщо ви не виконували бінарну установку, Apache у деяких випадках скаржиться на відсутній розділ реєстру. Це попередження можна ігнорувати, якщо сервер інакше зміг знайти свій конфігураційний файл.

Значенням цього ключа є каталог ServerRoot, який містить підкаталог conf. Коли Apache запускається, він читає httpd.conf файл з цього каталогу. Якщо цей файл містить директиву ServerRoot, яка містить каталог, відмінний від каталогу, отриманого з ключа реєстру вище, Apache забуде ключ реєстру та використовує каталог із файлу конфігурації. Якщо ви копіюєте каталог Apache або конфігураційні файли в нове розташування, дуже важливо оновити директиву ServerRoot у файлі httpd.conf, щоб відобразити нове розташування.

Тестування установки

Після запуску Apache (у вікні консолі або в якості служби) він прослуховуватиме порт 80 (якщо тільки ви не змінили директиву Listen в файлах конфігурації або не встановили Apache тільки для поточного користувача). Щоб підключитися до сервера та отримати доступ до сторінки за замовчуванням, запустіть браузер і введіть URL-адресу:

http://localhost/

Apache має відповісти з вітальною сторінкою, і ви повинні побачити "It Works!". Якщо нічого не відбувається або ви отримуєте повідомлення про помилку, перегляньте файл error.log у підкаталозі logs. Якщо ваш хост не підключений до мережі або у вас є серйозні проблеми з конфігурацією DNS (служби доменних імен), вам, можливо, доведеться використовувати цю URL-адресу:

http://127.0.0.1/

Якщо ви використовуєте Apache на альтернативному порту, вам потрібно вказати це в URL:

http://127.0.0.1:8080/

Як тільки ваша базова установка запрацює, ви повинні правильно налаштувати її, відредагувавши файли в підкаталозі conf. Знову ж таки, якщо ви зміните конфігурацію служби Windows NT для Apache, спробуйте спочатку запустити її з командного рядка, щоб переконатися, що служба запускається без помилок.

Оскільки Apache не може використовувати той же порт разом з іншим додатком TCP/IP, вам може знадобитися зупинити, видалити або переналаштувати деякі інші служби перед запуском Apache. Ці конфліктуючі служби включають інші WWW-сервери, деякі реалізації брандмауера і навіть деякі клієнтські програми (такі як Skype), які будуть використовувати порт 80, щоб спробувати обійти проблеми брандмауера.

Налаштування доступу до мережних ресурсів

Доступ до файлів по мережі можна вказати за допомогою двох механізмів, що надаються Windows:

Mapped drive letters
           e.g., Alias "/images/" "Z:/"
UNC paths
           e.g., Alias "/images/" "//imagehost/www/images/"

Порівняні літери дисків дозволяють адміністратору підтримувати зіставлення з конкретним комп'ютером та шляхом поза конфігурацією Apache httpd. Однак ці зіставлення пов'язані лише з інтерактивними сеансами і не доступні безпосередньо для Apache httpd, коли він запускається як служба. Використовуйте лише шляхи UNC для мережних ресурсів httpd.conf, щоб до ресурсів можна було звертатися послідовно незалежно від того, як запущено Apache httpd. (Таємні та схильні до помилок процедури можуть обійти обмеження на зіставлені літери дисків, але це не рекомендується.)

Приклад DocumentRoot с UNC-путем
DocumentRoot "//dochost/www/html/"

Приклад DocumentRoot с IP-адресом в UNC-пути
DocumentRoot "//192.168.1.50/docs/"

Приклад Alias і відповідний каталог з UNC-шляхом
Alias "/images/" "//imagehost/www/images/"
<Directory "//imagehost/www/images/">
#...
</Directory>

Під час запуску Apache httpd як служба необхідно створити окремий обліковий запис для доступу до мережевих ресурсів, як описано вище.

Налаштування Windows

  • Якщо в екземплярі операційної системи використовується більше кількох десятків конвеєрних реєстраторів, часто необхідно збільшити "desktop heap". Для отримання більш детальної інформації зверніться до документації журналу.