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

Вступление

Nginx является одним из самых популярных веб-серверов в мире и отвечает за размещение некоторых из самых крупных сайтов с наибольшим трафиком в Интернете. В большинстве случаев он более дружественен к ресурсам, чем Apache, и его можно использовать в качестве веб-сервера или обратного прокси-сервера.

В этом руководстве мы обсудим, как установить Nginx на ваш сервер Ubuntu 18.04.

Предпосылки

Перед тем, как вы начнете это руководство, на вашем сервере должен быть настроен обычный пользователь без полномочий root с привилегиями sudo. Вы можете узнать, как настроить учетную запись обычного пользователя, следуя нашимinitial server setup guide for Ubuntu 18.04.

Если у вас есть доступная учетная запись, войдите в систему как пользователь без полномочий root, чтобы начать.

[[step-1 -–- install-nginx]] == Шаг 1. Установка Nginx

Поскольку Nginx доступен в репозиториях Ubuntu по умолчанию, его можно установить из этих репозиториев, используя систему упаковкиapt.

Поскольку это наше первое взаимодействие с системой упаковкиapt в этом сеансе, мы обновим наш локальный индекс пакета, чтобы у нас был доступ к самым последним спискам пакетов. После этого мы можем установитьnginx:

sudo apt update
sudo apt install nginx

После принятия процедурыapt установит Nginx и все необходимые зависимости на ваш сервер.

[[step-2 -–- adjust-the-firewall]] == Шаг 2 - Настройка брандмауэра

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

Перечислите конфигурации приложений, с которыми умеет работатьufw, набрав:

sudo ufw app list

Вы должны получить список профилей приложения:

OutputAvailable applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Как видите, для Nginx доступны три профиля:

  • Nginx Full: этот профиль открывает порт 80 (обычный, незашифрованный веб-трафик) и порт 443 (трафик с шифрованием TLS / SSL).

  • Nginx HTTP: этот профиль открывает только порт 80 (обычный, незашифрованный веб-трафик)

  • Nginx HTTPS: этот профиль открывает только порт 443 (зашифрованный трафик TLS / SSL)

Рекомендуется включить наиболее ограничивающий профиль, который будет по-прежнему разрешать настроенный вами трафик. Поскольку мы еще не настроили SSL для нашего сервера в этом руководстве, нам нужно будет только разрешить трафик через порт 80.

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

sudo ufw allow 'Nginx HTTP'

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

sudo ufw status

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

OutputStatus: active

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

[[step-3 -–- verify-your-web-server]] == Шаг 3 - Проверка вашего веб-сервера

В конце процесса установки Ubuntu 18.04 запускает Nginx. Веб-сервер уже должен быть запущен.

Мы можем проверить с помощью системы инициализацииsystemd, чтобы убедиться, что служба запущена, набрав:

systemctl status nginx
Output● 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 2018-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

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

Вы можете получить доступ к целевой странице Nginx по умолчанию, чтобы убедиться, что программное обеспечение работает правильно, перейдя по IP-адресу вашего сервера. Если вы не знаете IP-адрес вашего сервера, вы можете получить его несколькими различными способами.

Попробуйте ввести это в командной строке вашего сервера:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Вы вернетесь на несколько строк. Вы можете попробовать каждый из них в своем веб-браузере, чтобы увидеть, работают ли они.

В качестве альтернативы вы можете набрать этот, который должен дать вам ваш публичный IP-адрес, как видно из другого места в Интернете:

curl -4 icanhazip.com

Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера:

http://your_server_ip

Вы должны увидеть целевую страницу Nginx по умолчанию:

Nginx default page

Эта страница включена в Nginx, чтобы показать вам, что сервер работает правильно.

[[step-4 -–- management-the-nginx-process]] == Шаг 4. Управление процессом 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

[[step-5 -–- setting-up-server-blocks-recommended]] == Шаг 5 - Настройка серверных блоков (рекомендуется)

При использовании веб-сервера Nginxserver blocks (аналогично виртуальным хостам в Apache) можно использовать для инкапсуляции деталей конфигурации и размещения более одного домена с одного сервера. Мы создадим домен под названиемexample.com, но вы должныreplace this with your own domain name. Чтобы узнать больше о настройке доменного имени в DigitalOcean, см. НашIntroduction to DigitalOcean DNS.

В Nginx в Ubuntu 18.04 по умолчанию включен один серверный блок, который настроен на обслуживание документов из каталога в/var/www/html. Хотя это хорошо работает для одного сайта, он может стать громоздким, если вы размещаете несколько сайтов. Вместо изменения/var/www/html, давайте создадим структуру каталогов в/var/www для нашего сайтаexample.com, оставив/var/www/html в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не выполняет не соответствует любым другим сайтам.

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

sudo mkdir -p /var/www/example.com/html

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

sudo chown -R $USER:$USER /var/www/example.com/html

Разрешения ваших корневых веб-сайтов должны быть правильными, если вы не изменяли значениеumask, но вы можете убедиться, набрав:

sudo chmod -R 755 /var/www/example.com

Затем создайте образец страницыindex.html с помощьюnano или вашего любимого редактора:

nano /var/www/example.com/html/index.html

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

/var/www/example.com/html/index.html


    
        Welcome to Example.com!
    
    
        

Success! The example.com server block is working!

Сохраните и закройте файл, когда вы закончите.

Чтобы Nginx обслуживал этот контент, необходимо создать блок сервера с правильными директивами. Вместо того, чтобы напрямую изменять файл конфигурации по умолчанию, давайте создадим новый в/etc/nginx/sites-available/example.com:

sudo nano /etc/nginx/sites-available/example.com

Вставьте следующий блок конфигурации, который похож на стандартный, но обновлен для нашего нового каталога и имени домена:

/etc/nginx/sites-available/example.com

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

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

        server_name example.com www.example.com;

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

Обратите внимание, что мы обновили конфигурациюroot для нашего нового каталога иserver_name для нашего доменного имени.

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

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Два серверных блока теперь включены и настроены для ответа на запросы на основе их директивlisten иserver_name (вы можете узнать больше о том, как Nginx обрабатывает эти директивыhere):

  • example.com: ответит на запросыexample.com иwww.example.com.

  • 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;
    ...
}
...

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

sudo nginx -t

Сохраните и закройте файл, когда вы закончите.

Если проблем нет, перезапустите Nginx, чтобы изменения вступили в силу:

sudo systemctl restart nginx

Nginx теперь должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя кhttp://example.com, где вы должны увидеть что-то вроде этого:

Nginx first server block

[[шаг-6 -–- ознакомление-с-важными-файлами-и-каталогами nginx]] == Шаг 6. Знакомство с важными файлами и каталогами Nginx

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

содержание

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

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

  • /etc/nginx: каталог конфигурации Nginx. Все конфигурационные файлы Nginx находятся здесь.

  • /etc/nginx/nginx.conf: основной файл конфигурации Nginx. Это можно изменить, чтобы внести изменения в глобальную конфигурацию 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 будут записаны в этот журнал.

Заключение

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

Если вы хотите создать более полный стек приложений, ознакомьтесь с этой статьей оhow to configure a LEMP stack on Ubuntu 18.04.

Related