Встановлюємо свій маленький локальний веб-сервер - selenium - автоматизація веб-додатків
Нерідко виникає ситуація, коли вам знадобився ваш особистий веб-сервер для тестових цілей. Наприклад, ви вибираєте баг-трекер, але публічної демо-версії немає - треба його кудись встановити, щоб спробувати. Або ви хочете навчитися користуватися яким-небудь інструментом для навантажувального тестування - не варто відразу "нацьковувати" його навіть на загальнодоступний тестовий стенд, не кажучи вже про продуктивної системі, цим ви створите масу проблем оточуючим.
На всіх наших тренінгах з домашніми завданнями (програмування для тестувальників. Курси по Selenium різного рівня складності. Курси з тестування продуктивності і захищеності веб-додатків) найпершим завданням для учнів є підготовка навчального тестового стенда. Для цієї мети я підготував інструкцію, розширений варіант якої (з картинками!) Представляю вашій увазі.
Звичайно, платформ для розробки веб-додатків існує чимало - ASP.Net, Ruby on Rails, Java EE і інші, для розробки використовуються найрізноманітніші мови програмування, і в жодній інструкції абсолютно неможливо охопити все це різноманітність. Тому я вирішив обмежитися найбільш шірокораспространённим випадком:
- сервер призначений для додатків, розроблених на PHP,
- встановлюється на операційну систему Windows, як найбільш часто зустрічається на робочих станціях.
Типова інфраструктура для розгортання сучасних веб-додатків включає в себе як мінімум три складових елементи:
- власне платформа розробки, умовно кажучи - інтерпретатор мови програмування (PHP, Python, Ruby. Net, Java.),
- база даних, в якій додаток зберігає дані (MySQL, Postgress, MS SQL Server, Oracle.),
- веб-сервер, який приймає запити від клієнтів і перенаправляє їх з додатком (Apache, Nginx, IIS.)
Для кожного елемента інфраструктури є вибір з цілого ряду альтернатив, і комбінувати їх можна різними способами.
Але є історично сформовані популярні зв'язки, з яких особливо можна виділити дві комбінації: Apache + MySQL + PHP і Nginx + MySQL + PHP. Для них існують готові "інсталяційні пакети", які дозволяють встановлювати компоненти не окремо, а всі разом, що дуже зручно для "локального веб-сервера" - швидко і просто.
З безлічі подібних пакетів я вибрав WampServer. тому що він найбільш тісно інтегрується з операційною системою Windows - "нативний" інсталятор, компоненти встановлюються як сервіси Windows, зручний механізм зупинки, запуску і конфігурації через меню в треї.
Частина 1: роби раз, роби два, роби три!
Отже, встановлюємо і запускаємо WampServer.

2. Вибираємо, який з дистрибутивів завантажити. Зверніть увагу на бітность (32 або 64) - вона повинна збігатися з Бітність вашої операційної системи.


У підсумку ви повинні завантажити два файли:
Тут ніяких картинок не буде, тому що процедура інсталяції стандартна - досить просто весь час натискати кнопку Next в Візард. Звичайно, при бажанні ви можете змінити директорію, в яку буде проинсталлировать WAMP Server, але в подальшому буде передбачатися, що він встановлений в директорію, пропоновану за замовчуванням, тобто C: \ wamp
5. WampServer встановлений, йдемо в меню Start (Пуск), шукаємо там папку WampServer, в ній пункт start WampServer, і запускаємо його.

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


Тепер можна туди встановлювати веб-додатки, але це вже інша історія.
Частина 2. Щось не вийшло ...
Що може завадити сервера нормально працювати?
Варіантів всього три:
1. сервер неправильно встановився
2. правильно встановився, але не запускається якийсь із компонентів
3. все запустилось, але сервер недоступний з браузера
Зараз ми послідовно розглянемо симптоми різних проблемних ситуацій, і для кожної з них буде вказана причина проблеми і спосіб її усунення.
F1. WampServer не запускається, або запускається, але будь-які дії з WampManager призводять до появи системного повідомлення про помилку приблизно такого вигляду:
Картинка - діалог помилка (пошукати в форумі)
F2. WampServer начебто запустився, але ікона залишилася червоною, або стала помаранчевою, а зеленої не стає.
WampServer встановлює в систему два сервісу - wampapache і wampmysqld.

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

Чому якийсь із цих сервісів може не стартувати? У цього явища може бути дві причини
- "Неправильно встановилося", або
- "Щось заважає запустити".
Проти "неправильно встановилося" є тільки один спосіб боротьби - встановити заново. Але для цього не потрібно знову проганяти весь візард-інсталятор. Зазвичай просто при установці невдало встановлюються сервіси Windows. Тому WampManager (який сидить в треї) має спеціальні команди для видалення і повторної установки цих сервісів:

Більш того, найчастіше невдало встановлюється сервіс apache, тому зазвичай досить оновити його. Спочатку видаляємо сервіс, потім повторно його інсталюємо. Після чого зупиняємо всі сервіси WampServer і знову запускаємо їх:

Якщо ці маніпуляції не допомогли усунути проблему, значить, причина в іншому - "щось заважає запустити сервіс". Якийсь інший додаток зайняло цінний ресурс. І цей ресурс - мережевий порт.
Mysql використовує порт 3306, веб-сервер Apache використовує порт 80. Обидва ці порту повинні бути вільні, інакше відповідний компонент не запуститься.
Малоймовірно, що якийсь додаток займе порт 3306, якщо тільки на вашому комп'ютері не встановлено ще один екземпляр Mysql. А ось порт 80 запросто може бути зайнятий.
Як дізнатися, яка програма зайняло потрібний порт?
Спосіб перший - через консоль з використанням утиліти netstat.
Запускаємо консоль і в ній виконуємо команду netstat -ao | find / i "listening"
У другій колонці шукаємо 0.0.0.0:80 - і в останній колонці тієї ж рядки буде вказано ідентифікатор процесу, який займає 80-й порт.

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



Спосіб другий - з використанням утиліти Sysinternals TCPView.
Це, загалом, те ж саме, але в більш зручній формі - з використанням графічного, а не консольного інтерфейсу.

Після того, як заважає додаток виявлено, потрібно прийняти рішення, як вирішити конфлікт - або переналаштувати це додаток, щоб вона не використала порт 80, або переналаштувати WampServer на який-небудь інший, ніким не зайнятий, порт.
Як це не дивно звучить, порт 80 часто займає Skype (саме це можна бачити вище на скріншотах), причому цей порт йому зазвичай буває абсолютно не потрібен. Йдемо в налаштування Skype, відключаємо, після чого перезапускаємо скайп - і порт не зайнятий.

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

Знаходимо в ньому рядок Listen 80 і міняємо номер порту на який-небудь інший, бажано досить великий (принаймні більше 1024, так як всі порти з меншими номерами мають "стандартні" призначення) і ніким не зайнятий (перевірте це, використовуючи netstat або TCPView, як описано вище). Наприклад, вказуємо номер порту 8080.

Зберігаємо файл, перезапускаємо WampServer - і на цей раз він таки повинен позеленіти!

F3. Іконка WampServer зелена, але сайт в браузері не відкривається.
- система не знає, що означає мережеве ім'я localhost, або
- в браузері вказані налаштування проксі, які не дозволяють встановлювати з'єднання з локальним сервером.



Після цього браузер повинен знайти локальний сервер і відкрити його вітальну сторінку.
Ось і все, тепер вже точно сервер працює і можна переходити до установки додатків!