JavaRush /Курсы /Docker SELF /Установка и настройка веб-сервера (Nginx/Apache)

Установка и настройка веб-сервера (Nginx/Apache)

Docker SELF
7 уровень , 0 лекция
Открыта

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

  1. Обновляем список пакетов:

    sudo apt-get update
    
  2. Устанавливаем Nginx:

    sudo apt-get install nginx
    
  3. Проверяем статус сервера:

    sudo systemctl status nginx
    

    Если всё в порядке, вы увидите что-то вроде: active (running).

  4. Проверяем стандартную страницу: Откройте браузер и введите http://localhost. Вы должны увидеть приветственную страницу Nginx, которая подтверждает, что установка прошла успешно.

Установка Apache

  1. Обновляем список пакетов:

    sudo apt-get update
    
  2. Устанавливаем Apache:

    sudo apt-get install apache2
    
  3. Проверяем статус сервера:

    sudo systemctl status apache2
    

    Аналогично Nginx, статус должен быть «active (running)».

  4. Проверяем стандартную страницу: Открываем в браузере 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

  1. Создаём директорию для сайта:

    sudo mkdir -p /var/www/hello
    sudo nano /var/www/hello/index.html
    

    Напишите в файле следующее (да, всё гениальное – просто):

    <h1>Hello, Nginx Server!</h1>
  2. Настраиваем конфигурацию:

    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;
        }
        }
  3. Активация конфигурации:

    sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
    
  4. Добавьте запись в /etc/hosts, чтобы настроить доменное имя hello.local на локальной машине:

    127.0.0.1 hello.local
    
  5. Проверьте сайт в браузере: http://hello.local.

Важно!

Файл hosts содержит маппинг IP-адресов на доменные имена. Это ваш локальный DNS-сервер. Этот файл есть в каждой операционной системе. В Windows он тоже есть, доступный по адресу C:\Windows\System32\drivers\etc\hosts

Для Apache

  1. Создаём директорию:

    sudo mkdir -p /var/www/hello
    sudo nano /var/www/hello/index.html
    

    Наполните файл:

    <h1>Hello, Apache Server!</h1>
  2. Создаём конфигурацию виртуального хоста:

    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>
  3. Активация конфигурации:

    sudo a2ensite hello.conf
    sudo systemctl reload apache2
    
  4. Добавьте запись в /etc/hosts:

    127.0.0.1 hello.local
    
  5. Проверьте работу: http://hello.local.


После сегодняшней лекции вы уже готовы самостоятельно установить и настроить основной веб-сервер. Ещё немного усилий – и вы сможете разворачивать полноценные сайты и приложения, которые уже не выглядят как детский рисунок. Где-то за углом притаился HTTPS, но о нём позже.

1
Задача
Docker SELF, 7 уровень, 0 лекция
Недоступна
Установка Nginx
Установка Nginx
1
Задача
Docker SELF, 7 уровень, 0 лекция
Недоступна
Установка Apache
Установка Apache
1
Задача
Docker SELF, 7 уровень, 0 лекция
Недоступна
Настройка простого сайта на Nginx
Настройка простого сайта на Nginx
1
Задача
Docker SELF, 7 уровень, 0 лекция
Недоступна
Настройка простого сайта на Apache
Настройка простого сайта на Apache
3
Задача
Docker SELF, 7 уровень, 0 лекция
Недоступна
TODO
TODO
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3577823 Уровень 17
27 августа 2025
сделал все по инструкции, при переходе по ссылке http://hello.local падает ошибка 403 Forbidden
Anonymous #3577823 Уровень 17
27 августа 2025
изменил немного конфигурационный файл и заработало ... location / { try_files $uri/index.html =404; }
11 марта 2025
Открыл другую задачу. Теперь при проверке пишет: Во время проверки возникла ошибка An error occurred: UNKNOWN_ERROR