Установка сервера nginx linux

Как установить Nginx на Ubuntu: пошаговая инструкция

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

В данной статье мы подробно расскажем, как установить Nginx на Ubuntu и произвести его базовую настройку.

Установка Nginx

Для установки сервера Nginx понадобится локальная машина либо облачный сервер с установленной операционной системой Ubuntu. Программа доступна в официальных репозиториях Ubuntu по умолчанию. Установить её можно непосредственно из них, используя систему управления пакетами apt .

sudo systemctl enable nginx
  1. Теперь нужно проверить, что веб-сервер успешно установлен и работает, а также добавлен в автозагрузку. Проверим статус работы веб-сервера:
sudo service nginx status

Строка «Active: active (running). » указывает на успешную работу сервера. Есть и другой способ проверить его работу. Нужно вставить IP-адрес сервера в адресную строку браузера. Если результат будет таким же, как на картинке ниже, то веб-сервер работает успешно.

sudo systemctl is-enabled nginx

Если в ответ на выполненную команду получаем «enabled», значит веб-сервер добавлен в автозагрузки.

Для работы с установленным веб-сервером пригодятся базовые команды управления. Они приведены в таблице ниже.

sudo systemctl start nginx

sudo systemctl stop nginx

sudo systemctl restart nginx

sudo systemctl reload nginx

Проверка состояния службы

sudo systemctl status nginx

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

Установка и настройка брандмауэра позволит закрыть все порты, кроме необходимых нам — 22 (SSH), 80 (HTTP), 443 (HTTPS). Первый протокол необходим для подключения к удаленному серверу. Второй и третий необходим для связи между клиентом и сайтом. Главное их отличие в том, что HTTPS — это зашифрованный HTTP. Шифрование данных происходит благодаря SSL-сертификату.

После успешной установки добавим веб-сервер в список доступных приложений брандмауэра:

sudo nano /etc/ufw/applications.d/nginx.ini

Заполним файл следующим образом:

[Nginx HTTP]
title=Web Server
description=Enable NGINX HTTP traffic
ports=80/tcp

[Nginx HTTPS] \
title=Web Server (HTTPS) \
description=Enable NGINX HTTPS traffic
ports=443/tcp

[Nginx Full]
title=Web Server (HTTP,HTTPS)
description=Enable NGINX HTTP and HTTPS traffic
ports=80,443/tcp

Проверим список доступных приложений:

Если среди них есть веб-сервер, значит всё сделано верно. Теперь нужно запустить брандмауэр и разрешить передачу трафика по вышеуказанным портам:

sudo ufw enable
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'

Чтобы проверить изменения, вводим команду:

Если всё сделано правильно, то в статусе будут перечислены все порты, которые нам необходимы.

Настройка Nginx

Администрирование веб-сервера представляет из себя изменение и поддержку конфигурационных файлов. Среди них 1 файл конфигурации и 2 каталога. Это nginx.conf , sites-available и sites-enabled соответственно. Все они лежат в директории /etc/nginx .

Читайте также:  Роса линукс последние новости

Файл nginx.conf — это главный конфигурационный файл. Каталог sites-available содержит файлы конфигураций виртуальных хостов. Каждый отдельный файл хранит информацию об определенном сайте. Это его имя, IP-адрес и другие данные. Каталог sites-enabled , в свою очередь, состоит только из конфигураций активных сайтов. Только из директории sites-enabled читаются файлы конфигурации для виртуальных хостов. Также в ней хранятся ссылки на sites-available . Такая структура позволяет временно отключать сайты без потери их конфигураций.

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

sudo nano /etc/nginx/nginx.conf

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

Каждый отдельный модуль — это директива, которая отвечает за определенные настройки веб-сервера. Они бывают простыми и блочными. Блочные директивы, помимо имени и параметров, хранят набор дополнительных инструкций, размещенных внутри фигурных скобок.

Перечислим некоторую часть директив главного конфигурационного файла:

  • user — это пользователь, от которого осуществляются все рабочие процессы.
  • worker_processes — число рабочих процессов сервера. Оно должно быть не больше, чем количество ядер процессора. Параметр auto установит число автоматически.
  • pid — файл с номером главного процесса.
  • include — отвечает за подключение иных файлов конфигурации, удовлетворяющих заданной маске.
  • events — контекст, состоящий из директив, влияющих на работу сетевого соединения.
    • worker_connections — максимальное число одновременно работающих соединений одного рабочего процесса.
    • multi_accept — флаг, который может быть как включен (on), так и выключен (off). Если он включен, то рабочий процесс будет принимать все новые соединения, иначе только одно.
    • use — указывает метод обработки соединений. По умолчанию сервер выбирает наиболее подходящий и эффективный.
    • sendfile — включает (on) или отключает (off) метод отправки данных sendfile().
    • tcp_nopush , tcp_nodelay — параметры, влияющие на производительность. Первый заставляет сервер отправлять заголовки HTTP-ответов одним пакетом, а второй позволяет не буферизировать данные и отправлять их короткими очередями.
    • keepalive_timeout — параметр, отвечающий за время ожидания keep-alive соединения до его разрыва со стороны сервера.
    • keepalive_requests — максимальное число запросов по одному keep-alive соединению.
    • error_log — лог ошибок веб-сервера. Для сбора ошибок в определенной секции (http, server и т.д.) необходимо разместить директиву внутри нее.
    • gzip — сжатие контента.

    Настройка виртуальных хостов

    На сервере может быть расположено множество сайтов. Все запросы приходят на его IP-адрес, а после веб-сервер определяет, какой дать ответ, в зависимости от домена. Виртуальные хосты предназначены для того, чтобы сервер понимал, что и к какому домену относится. В качестве примера создадим сайт testsite.dev.

    sudo mkdir -p /var/www/testsite.dev/html

    После добавим индексный файл:

    sudo nano /var/www/testsite.dev/html/index.html

    Заполним его минимальными данными для отображения сайта:

    После создадим конфигурационный файл сайта в папке sites-available :

    sudo nano /etc/nginx/sites-available/testsite.dev.conf

    Заполним его простейшей конфигурацией:

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

    server_name testsite.dev www.testsite.dev;
    root /var/www/testsite.dev/html;
    index index.html index.xml;
    >

    Последнее, что осталось сделать, — это создать ссылку в директории sites-enabled на конфигурацию сайта testsite.dev, чтобы добавить его из доступных во включенные:

    sudo ln -s /etc/nginx/sites-available/testsite.dev.conf /etc/nginx/sites-enabled/

    После создания виртуального хоста проведем тестирование конфигурации:

    Отключим сайт по умолчанию, удалив запись о дефолтном виртуальном хосте:

    sudo rm /etc/nginx/sites-enabled/default

    Стоит уточнить, что после того, как мы отключим сайт по умолчанию, Nginx будет использовать первый встреченный серверный блок в качестве резервного сайта (то есть по IP-адресу сервера будет открываться самый первый сайт из конфигурации Nginx).

    sudo systemctl restart nginx

    Проверим, что всё было сделано верно и сайт работает. Для этого можно вставить IP-адрес сервера или домен, если он зарегистрирован, в адресную строку браузера:

    Другой вариант — воспользоваться командой curl :

    Заключение

    В данной статье мы разобрали процесс установки Nginx на Linux , а именно на дистрибутив Ubuntu. С помощью этой инструкции можно провести базовую настройку веб-сервера и развернуть на нем свой первый сайт. Кроме этого, сервер подготовлен к переходу на зашифрованный протокол данных. Для этого нужно получить SSL-сертификат и настроить переадресацию с HTTP-протокола на HTTPS. Для настройки защищенного соединения вам будет необходимо сертификат SSL — заказать его можно в панели управления в разделе « SSL-сертификаты ».

    Источник

    Install¶

    Most Linux distributions and BSD variants have NGINX in the usual package repositories and they can be installed via whatever method is normally used to install software ( apt on Debian, emerge on Gentoo, ports on FreeBSD, etc).

    Be aware that these packages are often somewhat out-of-date. If you want the latest features and bugfixes, it’s recommended to build from source or use packages directly from nginx.org.

    Official Red Hat/CentOS packages¶

    To add NGINX yum repository, create a file named /etc/yum.repos.d/nginx.repo and paste one of the configurations below:

    [nginx] name=nginx repo baseurl=https://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 
    [nginx] name=nginx repo baseurl=https://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1 

    Due to differences between how CentOS, RHEL, and Scientific Linux populate the $releasever variable, it is necessary to manually replace $releasever with either 5 (for 5.x) or 6 (for 6.x), depending upon your OS version.

    Official Debian/Ubuntu packages¶

    The available NGINX Ubuntu release support is listed at this distribution page. For a mapping of Ubuntu versions to release names, please visit the Official Ubuntu Releases page.

    Append the appropriate stanza to /etc/apt/sources.list . If there is concern about persistence of repository additions (i.e. DigitalOcean Droplets), the appropriate stanza may instead be added to a different list file under /etc/apt/sources.list.d/ , such as /etc/apt/sources.list.d/nginx.list .

    ## Replace $release with your corresponding Ubuntu release. deb https://nginx.org/packages/ubuntu/ $release nginx deb-src https://nginx.org/packages/ubuntu/ $release nginx

    e.g. Ubuntu 20.04 (Focal Fossa):

    deb https://nginx.org/packages/ubuntu/ focal nginx deb-src https://nginx.org/packages/ubuntu/ focal nginx

    To install the packages, execute in your shell:

    sudo apt update sudo apt install nginx

    If a W: GPG error: https://nginx.org/packages/ubuntu focal InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY $key is encountered during the NGINX repository update, execute the following:

    ## Replace $key with the corresponding $key from your GPG error. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key sudo apt update sudo apt install nginx

    You have now nginx installed on your server but not ready to serve web pages. you have to start the nginx. You can do this by using this command:

    sudo systemctl start nginx

    Append the appropriate stanza to /etc/apt/sources.list .

    deb https://nginx.org/packages/debian/ squeeze nginx deb-src https://nginx.org/packages/debian/ squeeze nginx

    Ubuntu PPA¶

    This PPA is maintained by volunteers and is not distributed by nginx.org. It has some additional compiled-in modules and may be more fitting for your environment.

    You can get the latest stable version of NGINX from the NGINX PPA on Launchpad: You will need to have root privileges to perform the following commands.

    For Ubuntu 20.04 and newer:

    sudo -s nginx=stable # use nginx=development for latest development version add-apt-repository ppa:nginx/$nginx apt update apt install nginx

    If you get an error about add-apt-repository not existing, you will want to install python-software-properties . For other Debian/Ubuntu based distributions, you can try the lucid variant of the PPA which is the most likely to work on older package sets:

    sudo -s nginx=stable # use nginx=development for latest development version echo "deb http://ppa.launchpad.net/nginx/$nginx/ubuntu lucid main" > /etc/apt/sources.list.d/nginx-$nginx-lucid.list apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C apt update apt install nginx

    Official Win32 Binaries¶

    As of NGINX 0.8.50, NGINX is now available as an official Windows binary.

    cd c:\ unzip nginx-1.2.3.zip ren nginx-1.2.3 nginx cd nginx start nginx
    nginx -s [ stop | quit | reopen | reload ] 

    For problems look in c:nginxlogserror.log or in EventLog.

    In addition, Kevin Worthington maintains earlier Windows builds of the development branch.

    Source Releases¶

    There are currently two versions of NGINX available: stable (1.20.x) , mainline (1.21.x) . The mainline branch gets new features and bugfixes sooner but might introduce new bugs as well. Critical bugfixes are backported to the stable branch.

    In general, the stable release is recommended, but the mainline release is typically quite stable as well. See the FAQ .

    Источник

Оцените статью
Adblock
detector