вівторок, 7 квітня 2015 р.

Інструкція по встановленню та налаштуванню web-сервера Apache 2.4.x. на Windows 7

  1. Завантажуємо Apache 2.4.x.

    З певного часу на сайті Apache припинили викладати готові msi-дистрибутиви для Windows, але є доступні версії у вигляді zip-архівів, які можна завантажити з інших ресурсів, наприклад з Apache Lounge. На сайті доступні 32- (Win32) та 64-бітні (Win64) версії веб-сервера, зкомпільовані за допомогою різних версій компілятора Visual C++. Нам потрібна версія, зкомпільована за допомогою Visual Studio C++ 2010 SP1 (на сайті позначена як VC10). На момент написання статті останньою версією була Apache 2.4.12.

    Також перед встановленням веб-сервера потрібно завантажити та встановити Visual C++ 2010 SP1 Redistributable Package (x86 або x64, в залежності від версії Apache).

  2. Встановлюємо Apache 2.4.x.

    Встановлення полягає в копіюванні (розпакуванні) папки Apache24 з архіву в корінь диску C:\, тобто шлях до папки Apache24 має виглядати так: C:\Apache24.

    Якщо з тих чи інших міркувань Ви хочете встановити веб-сервер Apache в інше розташування, то необхідно буде, відповідно до нового розташування, відредагувати параметри ServerRoot, DocumentRoot, Directory, ScriptAlias у файлі налаштувань (конфігурації) httpd.conf, який знаходиться у підпапці conf кореневої папки веб-сервера. Надалі в статті буде припускатися, що Apache встановлено за шляхом C:\Apache24.

    Також в цьому ж файлі параметром ServerName слід задати ім’я сервера. Це може бути ім’я комп’ютера, IP-адреса комп’ютера, зареєстроване DNS-ім’я, а також ім’я "localhost" (без лапок) або IP-адреса 127.0.0.1.

  3. Запускаємо Apache 2.4.x.

    Існує два способи запуску веб-сервера Apache: у вигляді консольної програми та як службу (service) Windows.

    Для запуску у вигляді консольної програми слід запустити файл httpd.exe, який знаходиться у підпапці bin кореневої папки веб-сервера. За допомогою командного рядка:

    C:
    cd C:\Apache24\bin
    httpd.exe

    В результаті має з’явитися консольне вікно з чорним тлом. Також можна створити ярлик для httpd.exe та розмістити його в зручному місці.

    Для того, аби веб-сервер Apache працював як служба Windows,слід встановити її, виконавши у командному рядку наступні команди:

    C:
    cd C:\Apache24\bin
    httpd.exe -k install

    Для керування службою Apache можна скористатися програмою ApacheMonitor, яка також знаходиться в папці bin. За її допомогою можна запускати, зупиняти та перезавантажувати службу Apache2.4, а також перевірити її поточний стан.

    Незалежно від обраного способу запуску веб-сервера Apache перевірити правильність установки та працездатність можна ввівши в рядку адреси будь-якого браузера адресу localhost та натиснувши Enter. При успішному встановленні та відсутності інших непередбачуваних проблем повинна відкритися сторінка з єдиними написом: It works!

  4. Можливі проблеми та їх вирішення.

    При встановленні Apache як служби (service) в командному рядку видається наступне повідомлення:

    Errors reported here must be corrected before the service can be started. AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using xxxx::xxxx:xxxx:xxxx:xxxx. Set the 'ServerName' directive globally to suppress this message

    Таке ж (за винятком першого речення) повідомлення видається при запуску в режимі консольної програми. Підказка щодо вирішення проблеми міститься безпосередньо в тексті помилки: не вказане значення параметру ServerName. Для виправлення ще раз уважно прочитайте останній абзац пункту 2 цієї інструкції.

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

    C:\Apache24\bin>httpd.exe
    (OS 10048)╟рчтшўрщ фючтюы ║Є№ё  Є│ы№ъш юфэх тшъюЁшёЄрээ  рфЁхёш ёюъхЄє (яЁюЄюъюы/ьхЁхцэр рфЁхёр/яюЁЄ). : AH00072: make_sock: could not bind to address [::]:80
    (OS 10048)╟рчтшўрщ фючтюы ║Є№ё  Є│ы№ъш юфэх тшъюЁшёЄрээ  рфЁхёш ёюъхЄє (яЁюЄюъюы/ьхЁхцэр рфЁхёр/яюЁЄ). : 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

    Через проблеми з кодуванням українські символи відображаються некоректно, нижче наведений текст помилки у правильному кодуванні:

    C:\Apache24\bin>httpd.exe
    (OS 10048)Зазвичай дозволяється тільки одне використання адреси сокету (протокол/мережна адреса/порт). : AH00072: make_sock: could not bind to address [::]:80
    (OS 10048)Зазвичай дозволяється тільки одне використання адреси сокету (протокол/мережна адреса/порт). : 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

    Щасливих власники англомовних версій Windows бачитимуть таке повідомлення про помилку:

    C:\Apache24\bin>httpd.exe
    (OS 10048)Only one usage of each socket address is normally permitted. : AH00072: make_sock: could not bind to address [::]:80
    (OS 10048)Only one usage of each socket address 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

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

    В більшості випадків простіше переналаштувати Apache. Для цього достатньо змінити у файлі httpd.conf параметр Listen, вказавши там любий вільний порт. Недоліком (на мою думку, не критичним) такого підходу є те, що тепер при звертанні до сервера у браузері треба буде явно вказувати вибраний порт, наприклад localhost:8080.

    Якщо ж прості шляхи не для Вас, то нашою наступною задачею стане пошук програми, яка "провинилася" і зайняла такий потрібний нам 80-й порт. Зробити це можна за допомогою команди:

    netstat -aon | findstr :80

    Ця команда виводить всі з’єднання і порти, які прослуховуються, а також ідентифікатор процесу, який цим займається, після чого відфільтровує результат роботи команди, залишаючи тільки ті записи, які містять рядок ":80". Потім вже вручну можна вибрати ті записи, які використовують порт 80 (нас цікавить 2-га колонка), виписати їх ідентифікатор процесу (остання колонка) і в Диспетчері завдань Windows знайти по цьому ідентифікатору ім’я потрібного нам процесу.

    Ніби не надто складно і можна би було на цьому зупинитися, але все-таки вирішив пошукати в Google якісь цікавіші, тобто простіші і більш автоматизовані рішення. І, як виявилось, вирішив не даремно. На сайті Habrahabr знайшлася ціла стаття, присвячена цій проблемі. І якась світла голова підказала автору швидший спосіб пошуку процесу, який займає порт 80:

    for /f "tokens=1,2,3,4,5*" %i in ('netstat -aon ^| findstr ":80" ^| findstr /i listening') do @echo %j %l & @tasklist | findstr %m

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

    В моєму випадку винуватцем даної помилки був Skype, який використовує 80-й порт "для додаткових вхідних з’єднань". Вимикається так: пункт меню Інструменти, підпункт Налаштування, в лівій панелі вікна, що відкрилося, вибираємо Додатково, далі — З’єднання, після чого в правій частині вікна знімаємо виділення у віконці Використовувати порти 80 та 443 для додаткових вхідних з’єднань, тиснемо Зберегти. Все! Звичайно, дану помилку може викликати не тільки Skype, але я не буду описувати те, з чим не зіткнувся особисто. Ще декілька потенційних джерел виникнення цієї помилки описані у згаданій раніше статті на Habrahabr'і.

Немає коментарів:

Дописати коментар