Установка и настройка nginx ubuntu

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

В REG.RU вы можете заказать облачный сервер с установленным шаблоном LEMP на базе операционной системы Ubuntu 16.04. В данной статье описана ручная установка LEMP на Ubuntu 16.04/18.04.

Сравнение серверов Apache и Nginx

  • Разрабатывается с 1995 года, огромное количество пользователей, многочисленные модули, предназначенные для расширения его функциональности.
  • Медленная работа веб-сервера из-за поточно-ориентированного подхода при большой нагрузке. Необходимость создавать новые процессы и увеличивать объём потребляемой памяти.
  • Необходимость устанавливать ограничения по потребляемым ресурсам. При достижении ограничений новые соединения будут отклонены.
  • Веб-сервер с открытым исходным кодом, написанный как аналог Apache для решения проблем с производительностью и масштабируемостью. а-
  • Механизм, управляемый событиями, асинхронный и неблокирующий, не создаёт новые процессы для каждого веб-запроса.

1 этап. Подготовка сервера

Все действия по установке производятся на сервере через подключение по SSH.

Создание пользователя

Все действия по установке LEMP рекомендуем выполнять не через пользователя root. Рекомендуем создать пользователя с sudo-правами. Так вы дополнительно обезопасите свой сервис и избежите случайных ошибок, которые могут сломать вашу операционную систему.

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

Где UserName — имя нового пользователя.

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

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

Где UserName — имя созданного ранее пользователя.

Готово. Новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем.

Обновление операционной системы

Прежде чем установить на Ubuntu LEMP, нужно обновить операционную систему до актуального состояния с помощью команды:

2 этап. Установка Nginx

Для установки Nginx введите команду:

На этом установка закончена. В Ubuntu Nginx настроен на запуск сразу после установки.

Настройка Nginx

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

Чтобы открыть доступ для подключения к серверу по HTTPS, выполните команды:

Если вы планируете использовать SSL-сертификат, для подключения по HTTPS выполните команду:

При переходе по IP-адресу вашего сервера откроется страница Nginx:

Готово. Установка Nginx завершена.

3 этап. Установка MySQL

Далее нам необходимо установить систему управления базами данных MySQL.

В процессе установки вам будет предложено ввести пароль root-пользователя (пароль администратора) для MySQL:

Работа с базой данных

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

После установки MySQL автоматически будет создан root-пользователь. Работать с базой данных под root небезопасно, поэтому необходимо создать нового пользователя и назначить ему права доступа.

Запустите сервер базы данных с помощью команды:

Система запросит пароль, который был указан при установке MySQL.

Как создать пользователя

Создайте пользователя с помощью команды:

Замените значения внутри кавычек:

  • вместо user-name укажите логин пользователя базы данных;
  • вместо password укажите пароль нового пользователя.

Назначьте все права доступа для созданного пользователя:

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

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

Как создать базу данных

Для создания базы данных введите команду:

Где BaseName — это название базы данных.

Готово. Теперь вы можете удалённо подключиться к базе данных или привязать её к вашему проекту. Чтобы завершить работу с MySQL, нажмите Ctrl + D.

4 этап. Установка PHP

Для установки PHP введите команду:

Настройка PHP

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

Для Ubuntu 16.04

Для Ubuntu 18.04

Найдите в файле параметр cgi.fix_pathinfo , раскомментируйте его, убрав точку с запятой перед ним и установите значение «0». В редакторе nano вы можете воспользоваться поиском по файлу клавишей F6.

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

Сохраните изменения в файле и закройте его.

Перезапустите PHP командой:

Для Ubuntu 16.04

Для Ubuntu 18.04

5 этап. Настройка Nginx и связь с PHP

Далее необходимо настроить Nginx для использования обработчика PHP и отображения динамического контента.

Если вы настраивали виртуальные хосты на Apache, то логика примерно одинаковая, только вместо VirtualHost будут блоки server .

Откройте дефолтный файл конфигурации Nginx командой:

В файле вы увидите блок server с примерным содержанием:

В данный файл внесите следующие изменения:

  • В строке, где указана директива index добавьте обработку индексного файла index.php .
  • В директиве server_name вы можете указать имя своего домена (если он привязан к серверу) или IP-адрес сервера.
  • Раскомментируйте блок location

.php$ и строки, которые входят в него, кроме fastcgi_pass 127.0.0.1:9000; . Данный блок отвечает за обработку PHP-запросов.
Раскомментируйте блок location

/.ht и строку внутри, он отвечает за работу с файлами .htaccess.

Читайте также:  Bbk smp125hdt2 схема принципиальная

Сохраните изменения и закройте файл. Результат:

Чтобы проверить файл на наличие ошибок, выполните команду:

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

Затем перезагрузите Nginx командой:

Готово. Nginx и связь с PHP настроена. Далее вы можете проверить корректность работы сервера.

Проверка настроек

Для проверки работы PHP введите команду:

Затем перейдите по адресу 123.123.123.123/info.php (где 123.123.123.123 — IP-адрес вашего сервера) или введите домен, который указали на этапе «Настройка Nginx и связь с PHP».

Откроется страница с информацией о настройках веб-сервера PHP:

Важно! После проверки обязательно удалите этот файл, иначе любой пользователь сможет получить доступ к конфиденциальной информации о сервере.

Готово. На этом установка и настройка LEMP Ubuntu завершена.

LEMP — это набор программного обеспечения, который используется для отображения динамических веб-страниц и веб-приложений. Установка NGINX, MySQL и PHP-FPM на вашем сервере c Ubuntu, менее чем за 30 секунд.

На данный момент самую большую популярность набрали два веб-сервера. Это Apache и Ngnix. У каждого из них есть свои плюсы и минусы. Apache был разработан еще в 1995 году и при его разработке учитывались не все возможные потребности пользователей, он потребляет много памяти и ресурсов системы, зато он прост в настройке. Nginx был разработан чуть позже в 2002 году уже учитывая ошибки Apache и ориентируясь на максимальную производительность.

Мы не будем подробно вникать в плюсы и минусы этих обоих веб-серверов. У каждого из них своя область применения. В этой инструкции будет рассмотрена установка Nginx Ubuntu 16.04. Хотя я буду говорить об Ubuntu 16.04, все действия подойдут и для других дистрибутивов. Настройка Nginx везде одинакова, только команда установки отличается.

Установка компонентов

Первым делом нужно установить сам веб-сервер в систему. Программа есть в официальных репозиториях, но ее версия уже немного устарела, поэтому если хотите самую новую версию, нужно добавить PPA:

sudo apt-add-repository ppa:nginx/stable

Сейчас в официальных репозиториях доступна версия 1.10.0, а в стабильной PPA уже доступна 1.10.1. Если для вас версия не нужна можно обойтись и без PPA. Дальше обновите списки пакетов из репозиториев:

sudo apt update

И устанавливаем ngnix:

sudo apt install nginx

После того как установка сервера Nginx будет завершена добавим программу в автозагрузку, чтобы она запускалась автоматически:

sudo systemctl enable nginx

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

Настройка Nginx Ubuntu

Настройка Nginx Ubuntu намного сложнее чем Apache. Здесь мы не будем рассматривать все опции и возможности программы, а поговорим только об основном. Есть различные конфигурации, в которых Nginx используется в качестве прокси сервера, а основной сервер Apache, но нас это интересовать не будет. Нам нужна установка Nginx как самостоятельного веб-сервера.

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

  • /etc/nginx/nginx.conf – главный файл конфигурации
  • /etc/nginx/sites-available/* – файлы конфигурации для виртуальных хостов, проще говоря для каждого сайта.
  • /etc/nginx/sites-enabled/* – файлы конфигурации активированных сайтов.

На самом деле файлы конфигурации для виртуальных хостов читаются только из директории sites-enabled, но здесь содержаться ссылки на sites-available. Такая система была придумана, чтобы дать возможность отключать на время те или иные сайты, не стирая их конфигурацию. Все остальные файлы содержат только объявления переменных и стандартные настройки, которые изменять не нужно. Что же касается nginx.conf, то в него включаются все файлы из sites-enables, а поэтому они могут содержать все точно такие же инструкции. А теперь давайте рассмотрим главный файл конфигурации:

sudo vi /etc/nginx/nginx.conf

Как видите файл разделен на секции. Общая структура такова:

глобальные опции
events <>
http <
server <
location<>
>
server <>
>
mail <>

  • глобальные опции отвечают за работу всей программы.
  • events – эта секция содержит настройки для работы с сетью.
  • http – содержит настройки веб-сервера. Должна содержать секцию servier для тонкой настройки каждого сайта.
  • server – в этой секции содержится настройка каждого размещенного на веб-сервере сайта.
  • location – секция location может находиться только внутри секции server и содержит настройки только для определенного запроса.
  • mail – содержит настройки почтового прокси.

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

параметр значение дополнительное_значение. ;

Строка должна обязательно заканчиваться ";", а все открытые скобки < должны быть закрыты.

Теперь, когда вы немного изучили глобальную структуру, можно переходить к рассмотрению самих параметров. Глобальных опций не так уж много:

  • user – пользователь, от имени которого будет работать программа.
  • worker_processes – устанавливает сколько процессов нужно запускать для параллелизации работы программы, нужно запускать не больше процессов, чем у вас есть ядер. Можно установить параметр auto и тогда программа определит это число сама.
  • p >С глобальными опциями закончили, их было не так много и они не такие интереснее. Куда интереснее в плане оптимизации опции с секции events:
  • worker_connections – количество соединений, которые программа может обрабатывать одновременно на одном процессе. Если умножить worker_process на этот параметр, то мы получим максимальное количество пользователей, которые могут подключиться к серверу одновременно. Рекомендуется устанавливать значение от 1024 до 4048.
  • multi_accept – разрешить принимать много подключений одновременно, установите параметр on или off.
  • use – способ работы с сетевым стеком. По умолчанию используется poll, но для Linux эффективнее использовать epoll.

Дальше переходим самой главной секции – http. Здесь опций намного больше:

  • sendfile – использовать метод отправки данных sendfile. Значение on.
  • tcp_nodelay, tcp_nopush – отправлять заголовки и начало файла одним пакетом. Значение on.
  • keepalive_timeout – таймаут ожидания, перед тем как keepalive соединение будет разорвано, по умолчанию 65, но можно уменьшить до 10 секунд.
  • keepalive_requests – максимальное количество keepalive соединений от одного клиента, рекомендовано 100.
  • reset_timedout_connection – разрывать соединения после таймаута. Значение on.
  • open_file_cache – кэшировать информацию об открытых файлах. Строчка настройки выглядит вот так: open_file_cache max=200000 inactive=20s; max – максимальное количество файлов в кэше, время кэширования.
  • open_file_cache_valid – указывает по истечении какого времени нужно удалить информацию из кэша. Например: open_file_cache_valid 30s;
  • open_file_cache_min_uses – кэшировать информацию о файлах, которые были открыты как минимум указанное количество раз.
  • open_file_cache_errors – кэшировать информацию об отсутствующих файлах, значение on.
Читайте также:  Хлебопечь daewoo di 3207s

Основные параметры рассмотрели. Эти настройки помогут вам получить большую производительность от nginx. Секцию server и location мы рассмотрим в настройке виртуальных хостов.

Настройка сжатия Gzip

Сжатие контента необходимо, чтобы уменьшить размер загружаемых браузером данных. Это ускоряет загрузку сайта, но добавляет дополнительную нагрузку на процессор сервера. Чтобы включить сжатие в секции http нужно добавить параметр:

gzip on

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

  • gzip_min_length – минимальная длина страницы в байтах, при которой нужно использовать сжатие, например, 1000 (1 кб)
  • gzip_proxied – нужно ли сжимать проксированые запросы, any говорит, что нужно сжимать все.
  • gzip_types – типы файлов, которые нужно сжимать, например: text/plain application/xml application/x-javascript text/javascript text/css text/json;
  • gzip_disable "msie6" – в IE 6 сжатие не поддерживается, поэтому отключаем.
  • gzip_comp_level – уровень сжатия, доступны варианты от 1 до 10. 1 – минимальное, 10 – максимальное сжатие.

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

Как вы знаете, на сервере может размещаться несколько сайтов. Все запросы приходят на ip сервера, а nginx уже определяет на основе домена какой контент нужно выдать. Для того чтобы nginx знал что к какому домену относится нужно настроить виртуальные хосты. Каждый хост принято размещать в отдельном файле. Настройка хоста находится в секции server, но поскольку все файлы из sites-enabled импортируются в секцию http, то логика структуры конфигурационного файла не нарушается.

Рассмотрим пример настройки:

  • listen 80 – указывает, что нужно ожидать подключения на порту 80, может также содержать опцию default-server, которая означает, что этот домен будет открывается если домен не был задан в запросе.
  • root /var/www/html – директория, в которой находятся файлы сайта.
  • index index.html – страница, которая будет открываться по умолчанию.
  • server_name – доменное имя сайта.
  • access_log – файл для записи лога запросов к серверу, может использоваться как глобально в секции http, так и для определенного типа файлов в location.
  • error_log – лог ошибок веб-сервера, может принимать дополнительный параметр, указывающий подробность лога. warn – максимум, crit – только критические ошибки.

Это все основные настройки виртуального хоста, после них он уже будет работать. Но тут есть еще секция location, которая позволяет настроить поведение сервера для определенных директорий и файлов. Синтаксис location такой:

location адрес <>

В качестве адреса может использоваться как прямой запрос относительно корня сервера, так и регулярные выражения. Для использования регулярных выражений перед ним ставится символ "

". Примеры рассмотрим ниже, а пока рассмотрим возможные директивы:

  • allow – разрешить доступ к местоположению для пользователей, all – всех, также можно указать ip или подсеть.
  • deny – запретить доступ к местоположению, all – для всех.
  • try-files – пытается открыть файлы в определенном порядке, открывает первый обнаруженный файл. Например, такая конструкция: $uri $uri/index.html $uri.html =404; сначала пытается открыть $uri, затем index.html, если не найден $uri.html, и аж потом, если ни одного из предложных файлов не существует, выдает ошибку 404.
  • expires – задает время кэширования браузером отданного элемента, например, 1d – один день, 2h – два часа, 30s – 30 секунд.

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

Не выполнять логирование для favicon:

location = /favicon.ico <
log_not_found off;
access_log off;
>

Запретить доступ к файлам, начинающимся с точки:

Кэшировать обычные файлы на 90 дней:

* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ <
access_log off; log_not_found off; expires 90d;
>

После того, как установка и настройка nginx будет завершена проверяем конфигурацию на ошибки:

Затем перезагружаем сервер:

sudo service nginx reload

sudo service nginx restart

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

Просмотр статистики

Просмотр статистики работы веб-сервера очень важен. Установка nginx, должна содержать настройку возможности получения статистики. Для того чтобы это сделать добавьте такие строки к вашему хосту в секцию server:

location /basic-staus <
stats_stub;
allow 127.0.0.1
deny all;
>

Статистика будет доступна только с локального ip:

wget localhost/basic-status -O –

Выводы

Установка Nginx Ubuntu 16.04 завершена и теперь вы немного представляете как его настроить. Конечно, есть еще много вещей, которые мы не упомянули в статье, например, настройка обработки динамического контента php или настройка nginx Ubuntu в качестве прокси-сервера для apache. Возможно, это будет рассмотрено в следующих статях.

В этой статье мы пошагово рассмотрим установку веб-сервера Nginx на Ubuntu Server 18.04. Научимся управлять его процессами. Настроим файрвол UFW для Nginx, проверим работу веб-сервера, разберемся с основными директориями, логами и посмотрим часто используемые команды.

Читайте также:  Программы для создания схем и планов

Шаг 1. – Подготовка

На этапе подготовки мы убеждаемся что у нас есть всё необходимое для выполнения дальнейшей инструкции:

  • Нам нужна установленная ОС Ubuntu Server 18.04 – Вам в помощь статья – Установка Ubuntu Server 18.04 LTS
  • Ubuntu Server 18.04 должна иметь статический IP-адрес и доступ в интернет – Настройка сети в Ubuntu Server 18.04 [Netplan]
  • Необязательно, но желательно включить фаервол UFW – Первоначальная настройка Ubuntu Server 18.04

Посмотрим свой IP-адрес, командой ifconfig.(Рис.1)

Рис.1 – Командой ifconfig узнаём IP-адрес нашего сервера.

Адрес моего сервера – 192.168.3.9, в этой статье я буду вводить его в браузере на другом ПК, для проверки работоспособности Nginx. Вы должны будете ввести свой IP-адрес.

Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере -"localhost" или IP-адрес – 127.0.0.1

Всё! На этом подготовка завершена.

Шаг 2. – Установка Nginx

Первым делом обновляем список пакетов репозитория.

Nginx доступен в стандартном репозитории. Приступаем к установке.(Рис.2)

Рис.2 – Устанавливаем веб-сервер Nginx на Ubuntu 18.04.

После установки сразу же посмотрим статус веб-сервера.(Рис.3)

Рис.3 – Смотрим статус веб-сервера Nginx.

Как видим Nginx после установки сразу же сам запустился. [Об этом свидетельствует строчка – "Active: active (running) " , также отсутствуют серьёзные ошибки.]

Nginx добавлен в автозагрузку. [Это мы понимаем по слову "enabled;" В строке "Loaded: loaded (/lib/systemd/system/nginx.service; enabled; ".]

Посмотреть версию установленного Nginx можно с помощью команды nginx -v.(Рис.4)

Точная версия: nginx/1.14.0.

Рис. 4 – Смотрим версию веб-сервера Nginx.

Если у вас Nginx не запустился, запустите его командой:

Добавить Nginx в автозагрузку, можно командой:

Если вдруг он вам не нужен в автозагрузке, то удалить Nginx из автозагрузки можно командой:

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

Шаг 3. – Настройка файрвола UFW

Для тех кто файрвол не включил и не собирается включать – Переходите к Шаг 4. – Проверка Nginx

Напомню! файрвол UFW мы включили в этой статье – Первоначальная настройка Ubuntu Server 18.04

Посмотрим профили приложений в файрволе UFW.(Рис.5)

Рис.5 – Просматриваем профили приложений UFW.

Видим три профиля Nginx:

  • Nginx Full – открывает два порта 80http [ нешифрованный веб-трафик ] и 443https [ TLS / SSL – зашифрованный веб-трафик ]
  • Nginx HTTP – открывает стандартный 80 порт – http[ нешифрованный веб-трафик ]
  • Nginx HTTPS – открывает только 443 порт – https [TLS / SSL – зашифрованный веб-трафик ]

Для того чтобы применить какой-либо профиль можно воспользоваться командой – sudo ufw allowИмя_профиля

Мы применим первый профиль – Nginx HTTP.(Рис.6)

Рис.6 – Применяем профиль Nginx в файволе UFW.

Правило применилось!

Шаг 4. – Проверка Nginx

На этапе Шаг 1. – Подготовка мы выяснили IP-адрес сервера, Я с другого компьютера, который находится в той же локальной сети, что и сервер, ввожу его в браузере.(Рис.7)

Для тех кто в танке. Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере – localhost или IP-адрес – 127.0.0.1 © Шаг 1. – Подготовка

Если вы тоже увидели страницу "Welcome to nginx!", значит вы всё сделали правильно! Веб-сервер работает!

Рис.7 – Вводим IP-адрес сервера в браузере. Страница "Welcome to nginx!".

Каталоги и файлы конфигураций Nginx

/etc/nginx/ – Главный каталог веб-сервера Nginx.

  • /etc/nginx/nginx.confГлавный конфигурационный файл Nginx.

/var/www/ – Каталог хранит папки сайтов.

Изначально в нём содержится папка html, в которой лежит файл index.html [index.html – стартовая страница Nginx – "Welcome to nginx!", которую мы увидели на Шаг 4. – Проверка Nginx]

Для примера покажем, как может выглядеть содержимое каталога "/var/www/" у более опытных пользователей:

  • /var/www/
  • /html
  • index.html
  • /itdeer.ru
    • /files
    • /img
    • index.html
    • /yandex.ru
      • /search.yandex.ru
        • index.html
        • /photo.yandex.ru
          • index.html
          • Хосты:

            • /etc/nginx/sites-available/ – В директории хранятся файлы доступных виртуальных хостов.[Изначально в ней хранится файл "default" – Виртуальный хост по умолчанию.]
            • /etc/nginx/sites-enabled/ – В директории хранятся активированныевиртуальные хосты.

            Nginx не использует файлы виртуальных хостов[sites-available], если они не активированы в директории "sites-enabled". Активация происходит путем создания символической ссылки в каталоге "sites-enabled", при помощи команды [пример для виртуального хоста с именем "itdeer.ru"]:

            Логи веб-сервера Nginx

            Логи веб-сервера Nginx хранятся в каталоге /var/log/nginx/.(Рис.8)

            Рис.8 – Просмотр папки с логами /var/log/nginx/.

            Приведены команды для чтения логов с помощью "tail", "tail -10" – выводит последние 10 строк лога, можете подобрать цифру удобную вам.

            /var/log/nginx/access.log – журнал всех запросов к серверу Nginx.

            /var/log/nginx/error.log – журнал всех ошибок Nginx.

            Часто используемые команды

            Запустить Nginx:

            Остановить Nginx:

            Статус Nginx:

            Добавить Nginx в автозагрузку:

            Удалить Nginx из автозагрузки:

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

            Проверка конфигурации Nginx на ошибки [В ответ вы получите "сообщение об ошибке" или "nginx: the configuration file /etc/nginx/nginx.conf syntax is ok и nginx: configuration file /etc/nginx/nginx.conf test is successful" – отсутствие ошибок и синтаксисе файла /etc/nginx/nginx.conf и успешное выполнение конфигурации /etc/nginx/nginx.conf]:

            Версия Nginx:

            Добавить комментарий

            Ваш адрес email не будет опубликован. Обязательные поля помечены *

            Adblock detector