1. Що таке веб-сервер?
Сьогодні ми будемо говорити про Nginx і Apache, два найпопулярніших веб-сервера. Наприкінці лекції ваш сервер зможе гордо вітати нічого не підозрюючих користувачів в інтернеті.
Перш ніж занурюватися в команди, давайте розберемось, чого ми взагалі намагаємось досягти. Веб-сервер – це програма, яка приймає HTTP-запити (наприклад, коли користувач вводить у браузері адресу сайту), обробляє їх та відповідає відповідним контентом (HTML-сторінка, файл або навіть помилка «404 Not Found»). Він служить зв’язуючою ланкою між користувачами й вашим контентом.
Nginx vs Apache: битва веб-серверів
Якщо Nginx і Apache зустрілися би в кафе, то:
- Nginx замовив би лавандовий латте і відразу вирішив би всі справи асинхронно: «Ти мені дай запит, а я через хвилинку тобі файл поверну, не відволікай!».
- Apache, навпаки, був би більш традиційним, створив би потік під кожне завдання і відповідав би ввічливо, хоча й повільніше на великій кількості запитів.
Короткі відмінності:
| Особливість | Nginx | Apache |
|---|---|---|
| Архітектура | Асинхронна | Потоково-орієнтована |
| Продуктивність | Висока на великих навантаженнях | Підходить для динаміки (PHP/Perl) |
| Простота | Простота конфігурації, але свої нюанси | Більш універсальний, але складніший |
Коли що вибрати?
- Якщо ваш сайт – це жменька статичних файлів (наприклад, блог або лендинг), то Nginx – ваш друг.
- Якщо ви працюєте з динамічними веб-додатками (наприклад, PHP-сайт), Apache надасть більше гнучкості.
2. Установка веб-сервера
Тепер, коли ти зрозумів, навіщо це потрібно, пора почати встановлення. Ми розглянемо встановлення як Nginx, так і Apache. Обери, що тобі більше до вподоби, або встанови одразу обидва, щоб відчути себе профі.
Установка Nginx
Оновлюємо список пакетів:
sudo apt-get updateВстановлюємо Nginx:
sudo apt-get install nginxПеревіряємо статус сервера:
sudo systemctl status nginxЯкщо все гаразд, ти побачиш щось типу:
active (running).Перевіряємо стандартну сторінку: Відкрий браузер і введи
http://localhost. Ти маєш побачити вітальну сторінку Nginx, яка підтверджує, що встановлення пройшло успішно.
Установка Apache
Оновлюємо список пакетів:
sudo apt-get updateВстановлюємо Apache:
sudo apt-get install apache2Перевіряємо статус сервера:
sudo systemctl status apache2Так само, як і з Nginx, статус має бути «active (running)».
Перевіряємо стандартну сторінку: Відкрий у браузері
http://localhost. Тепер там буде дефолтна сторінка Apache.
3. Базова конфігурація веб-сервера
Де сховані налаштування?
У Nginx головний конфігураційний файл знаходиться за адресою:
/etc/nginx/nginx.confУ Apache:
/etc/apache2/apache2.conf
Спробуйте відкрити конфігураційні файли за допомогою вашого улюбленого редактора (наприклад, nano):
sudo nano /etc/nginx/nginx.conf
Тут починається ваша перша пригода: можливо, зараз ви нічого не зрозумієте, тому що конфігураційні файли виглядають як заклинання з рольової гри. Але не бійтеся – ми це розберемо.
Запуск, зупинка та перезапуск серверів
Якщо знаєте, як керувати службами в Linux, то «половина справи зроблена». Ось основні команди для керування нашими веб-генераторами:
Для Nginx:
sudo systemctl start nginx # Запуск
sudo systemctl stop nginx # Зупинка
sudo systemctl restart nginx # Перезапуск
sudo systemctl reload nginx # Перезавантаження конфігурації
Для Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
Перевірка конфігурації
Перед тим як перезапускати сервер, завжди перевіряйте, чи не зробили ви помилок:
Для Nginx:
sudo nginx -tДля Apache:
sudo apachectl configtest
Будь-яка помилка в конфігурації буде показана – ви не зможете випадково зламати сервер.
4. Демонстрація: запускаємо наш перший сайт
Зараз ми зробимо те, що веб-розробники дуже люблять – створимо сайт з неймовірно креативною назвою «Hello Server».
Для Nginx
Створюємо директорію для сайту:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.htmlНапишіть у файлі наступне (так, все геніальне – просте):
<h1>Hello, Nginx Server!</h1>Налаштовуємо конфігурацію:
sudo nano /etc/nginx/sites-available/helloОсь приклад простого конфігу:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }Активація конфігурації:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginxДодайте запис у
/etc/hosts, щоб налаштувати доменне ім'яhello.localна локальній машині:127.0.0.1 hello.localПеревірте сайт у браузері: http://hello.local.
Файл hosts містить мапінг IP-адрес на доменні імена. Це ваш локальний DNS-сервер. Цей файл є в кожній операційній системі. У Windows він також є, доступний за адресою C:\Windows\System32\drivers\etc\hosts
Для Apache
Створюємо директорію:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.htmlЗаповніть файл:
<h1>Hello, Apache Server!</h1>Створюємо конфігурацію віртуального хоста:
sudo nano /etc/apache2/sites-available/hello.confОсь приклад конфігу:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>Активація конфігурації:
sudo a2ensite hello.conf sudo systemctl reload apache2Додайте запис у
/etc/hosts:127.0.0.1 hello.localПеревірте роботу: http://hello.local.
Після сьогоднішньої лекції ви вже готові самостійно встановити та налаштувати основний веб-сервер. Ще трохи зусиль – і ви зможете розгортати повноцінні сайти та додатки, які вже не виглядають як дитячий малюнок. Десь за рогом причаївся HTTPS, але про нього пізніше.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ