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, но о нём позже.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ