Для чого потрібний клієнт сервер
Що таке веб-сервер
У цій статті ми дізнаємося, що представляють собою веб-сервери, як вони працюють, і чому вони такі важливі.
| Необхідні знання: | Ви повинні вже знати, як працює Інтернет та розуміти різницю між сторінкою, сайтом, сервером та пошуковою системою. |
|---|---|
| Ціль: | Ви дізнаєтеся, що таке веб-сервер та отримаєте загальне уявлення про те, як він працює. |
Вступ
Поняття «веб-сервер» може стосуватися як апаратної начинки, так і програмного забезпечення. Або навіть до обох частин, які працюють спільно.
- З точки зору "заліза", "веб-сервер" - це комп'ютер, який зберігає файли сайту (HTML-документи, CSS-стилі, JavaScript-файли, картинки та інші) і доставляє їх на пристрій кінцевого користувача (веб-браузер і т.д. .д.). Він підключений до мережі Інтернет і може бути доступний через доменне ім'я, подібне до mozilla.org.
- З точки зору ПЗ, веб-сервер включає кілька компонентів, які контролюють доступ веб-користувачів до розміщених на сервері файлів, як мінімум — це HTTP-сервер. HTTP-сервер - це частина ПЗ, яка розуміє URL-адреси (веб-адреси) і HTTP (протокол, який ваш браузер використовує для перегляду веб-сторінок).
На базовому рівні, коли браузеру потрібен файл, розміщений на веб-сервері, браузер запитує його через протокол HTTP. Коли запит досягає потрібного веб-сервера ("залізо"), сервер HTTP (ПЗ) приймає запит, знаходить запитуваний документ (якщо ні, то повідомляє про помилку 404) і відправляє назад, також через HTTP.
Щоб опублікувати веб-сайт, необхідний статичний або динамічний веб-сервер.
Статичний веб-сервер, або стек, складається з комп'ютера ("залізо") із сервером HTTP (ПЗ).Ми називаємо це "статикою", тому що сервер посилає розміщені файли в браузер "як є".
Динамічний веб-сервер складається зі статичного веб-сервера та додаткового програмного забезпечення, найчастіше сервера програми і бази даних. Ми називаємо його «динамічним», тому що сервер додатків змінює вихідні файли перед відправкою у ваш браузер HTTP.
Наприклад, щоб отримати підсумкову сторінку, яку ви переглядаєте в браузері, сервер додатків може заповнити HTML-шаблон даними з бази даних. Такі сайти, як MDN або Вікіпедія, складаються з тисяч веб-сторінок, але вони не є реальними HTML-документами — лише кілька HTML-шаблонів і гігантські бази даних. Ця структура спрощує та прискорює супровід веб-додатків та доставку контенту.
Активне вивчення
Поринаємо глибше
Щоб завантажити веб-сторінку, як ми вже говорили, ваш браузер відправляє запит до веб-сервера, який починає пошук запитуваного файлу у своєму власному просторі пам'яті. Знайшовши файл, сервер зчитує його, обробляє як це необхідно, і відсилає в браузер. Давайте розглянемо ці кроки докладніше.
Хостинг файлів
Перш за все, веб-сервер повинен містити файли веб-сайту, а саме всі HTML-документи та пов'язані з ними ресурси, включаючи зображення, CSS-стилі, JavaScript-файли, шрифти та відео.
Технічно, ви можете розмістити всі ці файли на своєму комп'ютері, але набагато зручніше зберігати їх на виділеному веб-сервері, який:
- завжди запущений та працює
- завжди підключений до Інтернету
- має постійну IP адресу (не всі провайдери надають статичну IP-адресу для домашнього підключення)
- обслуговується третьою, сторонньою компанією
З усіх цих причин пошук хорошого хостинг-провайдера є ключовою частиною створення вашого сайту. Розгляньте численні пропозиції компаній та виберіть те, що відповідає вашим потребам та бюджету (пропозиції варіюються від безкоштовних до тисяч доларів на місяць). Ви можете знайти подробиці у цій статті.
Як тільки ви вирішили проблему з хостингом, вам знадобиться завантажити свої файли на ваш веб-сервер.
Зв'язок з HTTP
По-друге, веб-сервер забезпечує підтримку HTTP (англ. Hypertext Transfer Protocol - гіпертекстовий транспортний протокол). Як випливає з назви, HTTP вказує, як передавати гіпертекст (тобто пов'язані веб-документи) між двома комп'ютерами.
Протокол є набором правил для зв'язку між двома комп'ютерами. HTTP є текстовим протоколом без збереження стану.
Всі команди є простим людиною текстом.
Ні клієнт, ні сервер не пам'ятають про попередні з'єднання. Наприклад, спираючись лише на HTTP, сервер не зможе згадати введений вами пароль або на якому етапі транзакції ви знаходитесь. Для таких завдань вам знадобиться сервер програми. (Ми зупинимося на цих технологіях у наступних статтях.)
HTTP задає строгі правила взаємодії клієнта та сервера. Ми розглянемо сам протокол HTTP у технічній статті трохи пізніше. Поки що достатньо знати про ці правила:
- Винятково клієнти можуть виробляти HTTP-запити, і лише на сервера. Сервера здатні лише відповідати на HTTP-запити клієнта.
- При запиті файлу на HTTP, клієнт повинен сформувати файловий URL.
- Веб-сервер повинен відповісти на кожен HTTP-запит, принаймні повідомлення про помилку.
На веб-сервері HTTP-сервер відповідає за обробку вхідних запитів та відповідь на них.
- При отриманні запиту HTTP-сервер спочатку перевіряє, чи існує ресурс на даному URL.
- Якщо це так, веб-сервер відправляє вміст файлу назад до браузера. Якщо ні, сервер програми генерує необхідний ресурс.
- Якщо ніщо з цього неможливо, веб-сервер повертає повідомлення про помилку в браузер, найчастіше "404 Not Found". (Це помилка настільки поширена, що багато веб-дизайнерів витрачають багато часу на розробку 404 сторінок про помилки.)
Статичний та Динамічний контент
Грубо кажучи, сервер може віддавати статичне або динамічний вміст. "Статичне" означає "віддається як є". Статичні веб-сайти робляться найпростіше, тому ми пропонуємо вам зробити свій перший сайт статичним.
"Динамічне" означає, що сервер обробляє дані або навіть генерує їх на льоту з бази даних. Це забезпечує більшу гнучкість, але технічно складніше в реалізації та обслуговуванні, через що процес створення сайту дуже ускладнюється.
Візьмемо для прикладу сторінку, яку ви зараз читаєте. На веб-сервері, де вона хоститься, є сервер програми, який витягує вміст статті з бази даних, форматує його, додає HTML-шаблони і надсилає вам результат. У нашому випадку сервер програми називається Kuma, написаний він мовою програмування Python (використовуючи фреймворк Django). Команда Mozilla створила Kuma для конкретних потреб MDN, але є безліч подібних програм, побудованих зовсім на інших технологіях.
Існує так багато серверів додатків, що досить важко запропонувати якийсь один.Деякі сервери програм заточені під певні категорії веб-сайтів, такі як блоги, вікі-сторінки або інтернет-магазини; інші, звані CMSs (системи керування контентом), більш універсальні. Якщо ви створюєте динамічний сайт, витратите трохи часу на вибір інструменту, який відповідає вашим потребам. Якщо ви не хочете вивчати веб-програмування (хоча це цікаво саме по собі!), то вам не потрібно створювати свій власний сервер програми. Це буде винахід чергового велосипеда.
Наступні кроки
Тепер, коли ви познайомилися з веб-серверами, ви можете:
- прочитати наскільки складно робити щось у веб
- дізнатися більше про різноманітність програмного забезпечення, яке може стати в нагоді для створення веб-сайту
- рухатися до практики: наприклад, дізнатися, як завантажувати файли на веб-сервер.