ProCloud Yandex
28.02.2024
читать 12 минут

Как установить Nginx на Ubuntu

/upload/iblock/62a/wl3jkdqsd5jj2ud9n1wudnr5dz050sab/Sover_opt.jpeg

Nginx — один из наиболее широко используемых веб-серверов по всему миру, который служит для хостинга веб-сайтов. По сути, это самый простой инструмент, который может работать как обратный прокси-сервер или веб-сервер. В этом руководстве мы рассмотрим, как установить Nginx. Помимо процесса установки Nginx Ubuntu server 20.04 изучим настройку брандмауэра, создание серверных блоков и т.д.

  1. Предварительные условия
  2. Установка Nginx
  3. Настройка брандмауэра
  4. Проверка веб-сервера
  5. Управление процессом Nginx
  6. Настройка блоков сервера (опционально)
  7. Важные файлы и каталоги Nginx
  8. Заключение

Предварительные условия

Перед началом работы вам нужно будет создать обычную пользовательскую учетную запись с ограниченными правами (root) и привилегиями администратора (sudo). Также, перед началом шагов, указанных в данной статье, вам, возможно, потребуется зарегистрировать доменное имя для вашего сайта. Затем войдите в систему с использованием вашего аккаунта, если доступна обычная, не обладающая административными привилегиями учетная запись. После этого можно выполнить Ubuntu Nginx install.

Установка Nginx

Он уже находится в репозиториях Ubuntu, поэтому воспользуйтесь командой apt install Nginx. Но прежде чем сделать это, чтобы обновить ваш список пакетов. После того, как вы сделаете это, начинается установка Nginx Ubuntu.

sudo apt update       
sudo apt install nginx

Все нужные элементы будут записаны на сервер Nginx Ubuntu.

Настройка брандмауэра

Установка и настройка Nginx Ubuntu должны быть выполнены правильно, поэтому важно четко придерживаться данному алгоритму.

Прежде чем тестировать сервис Nginx, необходимо разрешить доступ к нему через программный брандмауэр. После завершения установки Nginx автоматически добавляется в список сервисов брандмауэра ufw, упрощая тем самым процесс предоставления доступа к нему.

Набрав sudo ufw app list, можно получить список доступных конфигураций ufwс. Вот список профилей:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Доступны три профиля:

  1. Nginx Full открывает как порт 80 (для обычного незашифрованного веб-трафика), так и порт 443 (для зашифрованного трафика TLS/SSL).
  2. Nginx HTTP открывает только порт 80 для обычного незашифрованного веб-трафика.
  3. Nginx HTTPS открывает только порт 443 для зашифрованного трафика TLS/SSL.

Рекомендуется использовать профиль с самыми строгими ограничениями, но который все равно будет пропускать весь необходимый вам трафик. В данный момент нас интересует только 80 порт.

Вы можете включить это, набрав:

sudo ufw allow 'Nginx HTTP'

Вы можете проверить изменение, набрав:

sudo ufw status

В выводе будет указано, какой HTTP-трафик разрешен:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                 
Nginx HTTP                 ALLOW       Anywhere                 
OpenSSH (v6)               ALLOW       Anywhere (v6)            
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Проверка веб-сервера

В конце процесса установки происходит запуск Nginx Ubuntu.

Для проверки работоспособности используйте:

systemctl status nginx ● nginx.service - A high performance web server and a reverse proxy server
  Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
  Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
    Docs: man:nginx(8)
Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
  Memory: 3.5M
  CGroup: /system.slice/nginx.service
          ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
          └─2380 nginx: worker process

Рекомендуется для проверки работоспособности системы обратиться к веб-серверу Nginx. Для этого достаточно открыть страницу через данный сервер.

Управление процессом Nginx

Ниже приведены наиболее актуальные команды для использования сервера.

Для остановки сервера:

sudo systemctl stop nginx

Чтобы запустить веб-сервер, когда он остановлен, введите:

sudo systemctl start nginx

Чтобы остановить, а затем снова запустить службу, введите:

sudo systemctl restart nginx

Nginx часто может перезагрузиться, не разрывая соединения при внесении изменений в конфигурацию. Для такой перезагрузки используйте команду:

sudo systemctl reload nginx

По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Эту функцию можно отключить, набрав:

sudo systemctl disable nginx

Чтобы снова включить запуск службы при загрузке, вы можете ввести:

sudo systemctl enable nginx

Понимая особенности настройки Nginx Ubuntu, можно размещать на одном сервере несколько доменов.

Настройка блоков сервера (опционально)

Это необходимо для инкапсулирования конфигураций при работе с несколькими сайтами на одном сервере.

Допустим, используем домен под названием your_domain. Согласно базовым настройкам, в Ubuntu 20.04 один серверный блок Nginx. Он настроен на обработку файлов из директории /var/www/html, что подходит для одного вебсайта, но может оказаться недостаточным при работе с несколькими веб-проектами.

Рекомендуется создать каталог /var/www для домена your_domain и оставить /var/www/html как каталог по умолчанию. Если конкретный запрос не соответствует другим веб-сайтам, то будет использоваться данный каталог.

Создайте каталог для вашего домена, используя флаг -p для всех необходимых вышестоящих директорий:

sudo mkdir -p /var/www/your_domain/html

Затем назначьте владельца каталога с помощью $USER:

sudo chown -R $USER:$USER /var/www/your_domain/html

Если вы не меняли значение umask, проверьте, правильно ли установлены права доступа к корневой директории. Чтобы предоставить возможность чтения, записи и запуска владельцу и только чтения другим лицам, введите следующую команду:

curl -4 icanhazip.com

Создайте образец index.html, используя любой редактор:

sudo nano /var/www/your_domain/html/index.html

Внутри добавьте следующий образец HTML:

<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Сохраните и закройте этот файл, нажмите Ctrl+X чтобы выйти. Затем, когда вас спросят сохранить изменения, нажмите ‘Y’ и затем ‘Enter’. Создание серверного блока с корректными директивами — необходимое условие для работы с контентом Nginx. Не будем вносить изменения напрямую в файл конфигурации по умолчанию и создадим вместо него новый: /etc/nginx/sites-available/your_domain

sudo nano /etc/nginx/sites-available/your_domain

Этот блок аналогичен тому, который используется по умолчанию, но обновлен в соответствии с настройками:

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

Обновилась root конфигурация нового каталога и server_name доменного имени.

Далее включим файл, создав из него ссылку на sites-enabled каталог:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Важно. Nginx использует стандартную технику, известную как символические ссылки, чтобы определить, какие серверные блоки активированы. Создание символьной ссылки аналогично созданию ярлыка на вашем жестком диске. Поэтому вы можете удалить ярлык из папки sites-enabled, сохранив при этом сам серверный блок в папке sites-available, на случай если вы захотите его вновь активировать.

Теперь серверные блоки настроены на обработку запросов на основе директив listen и server_name.

your_domain: будет отвечать на запросы для your_domain и www.your_domain.

default: будет отвечать на любые запросы на порту 80, которые не соответствуют двум другим блокам.

Во избежание проблем с памятью хеш-корзины, которая иногда возникает при добавлении серверных имен, стоит сделать некоторые изменения в /etc/nginx/nginx.conf. Откройте файл:

sudo nano /etc/nginx/nginx.conf

Найдите server_names_hash_bucket_size директиву и удалите # символ, чтобы работать со строкой.

Важно. Комментирование строк кода (обычно с использованием символа # в начале строки) также является хорошим способом их отключения и при этом не требует фактического удаления. Во многих файлах конфигурации имеются параметры, которые закомментированы. Их можно включить или выключить, просто переместив их между активной и документационной частями кода.

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Закончив, сохраните изменения. Далее стоит проверить, есть ли в коде синтаксические ошибки:

sudo nginx -t

Если все хорошо, то сделайте перезапуск системы.

sudo systemctl restart nginx

Важные файлы и каталоги Nginx

Зная, как управлять самим сервисом Nginx, стоит разобраться в некоторых дополнительных настройках.

Содержание

  • /var/www/html: контент, который по умолчанию обслуживается из каталога /var/www/html. Эти настройки легко поменять через config файл Nginx.

Конфигурация сервера

  • /etc/nginx — каталог конфигурации Nginx, в котором находятся все файлы этой конфигурации.
  • /etc/nginx/nginx.conf — основной файл настройки Nginx.
  • /etc/nginx/sites-available/ — каталог, где могут храниться серверные блоки для каждого веб-сайта. Nginx не использует конфигурационные файлы из этого каталога, если они не указаны в каталоге sites-enabled. Как правило, вся конфигурация серверных блоков выполняется в этом каталоге и затем активируется, если есть ссылка на другой каталог.
  • /etc/nginx/sites-enabled/ — каталог для хранения активированных серверных блоков для каждого веб-сайта. Они генерируются путем создания ссылки на конфигурационные файлы в каталоге sites-available.
  • /etc/nginx/snippets/ — этот каталог содержит конфигурационные фрагменты, которые могут быть включены в другие места конфигурации Nginx.

Журналы сервера

  • /var/log/nginx/access.log: каждый запрос к веб-серверу записывается в этот файл журнала, если Nginx не настроен на иное действие.
  • /var/log/nginx/error.log: любые ошибки Nginx будут записываться в этот журнал.

Заключение

На этом процесс установки и настройки закончился. Есть возможность использовать сервер по назначению, исходя из текущих бизнес задач.



Хотите узнавать больше о технологиях и наших облачных продуктах? Подписывайтесь на нашу рассылку и следите за новостями: Телеграм и Вконтакте.

Новости
18 апреля 202418.04.2024
читать 2 минутычитать 2 мин
Дайджест обновлений продуктов Q1
5 апреля 202405.04.2024
читать 1 минутучитать 1 мин
ProCloud CPO Диана Беда в рейтинге ИТ-лидеров от Global CIO
28 марта 202428.03.2024
читать 1 минутучитать 1 мин
Запуск новой локации: Казахстан