Установка nginx и php-fpm в ubuntu 20.04

Введение

Из этой статьи вы узнаете про основные моменты работы с Nginx на системах CentOS, Rocky Linux и любого дистрибутива семейства любое семейство RHEL. Более подробно о работе с Nginx можно узнать на сайте разработчика в разделе документации. Долгое время лидирующие позиции занимал Apach, но новый продукт кардинально изменил подход к обработке команд и позволяет обслуживать высоко нагруженные сайты на бюджетном железе. Более детально узнать про автора Игоря Сысоева и ознакомится с принципами работы вы можете на просторах сети интернет. От себя лишь скажу что теперь это моя основная и любимая связка при организации веб сервера по причине быстроты и удобства работы.

Настраиваем Let’s Encrypt на nginx в Ubuntu

Данный способ несколько раз проверен на PHP-сайтах (в том числе wordpress) и Django-сайтах (через uwsgi).

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

apt update
apt install -y \
    python-software-properties software-properties-common

Добавим программу certbot, которая будет обновлять нам сертификаты. Замечу, что Let’s Encrypt выдаёт сертификаты на 2 месяца, поэтому его надо обновлять автоматически — этим и займётся certbot.

add-apt-repository ppa:certbot/certbot
apt update

Ну и поставим сам certbot — репозиторий его ведь добавили!

apt install -y \
    certbot

Дальше нам понадобиться добавить путь, по которому сервис Let’s Encrypt будет проверять — мы ли это.

server {
    ...

    # Let's Encrypt
    location ^~ /.well-known/acme-challenge/ {
        root /path/to/static/;
        add_header Cache-Control public;
        allow all;
    }
    ...
}

Многие руководства советуют добавлять location , но certbot и letsencrypt используют именно . В связи с этим у меня были определённые трудности, когда я это настраивал для Django-сервиса.

Перезагрузим конфиги nginx:

systemctl reload nginx

И теперь мы можем уже запустить генерацию сертификатов:

certbot certonly -a webroot --webroot-path=/path/to/static/ -d имя-домена.ru -d www.имя-домена.ru

После чего мы можем включить https:

server {
    listen 443 ssl;

    server_name имя-домена.ru
                www.имя-домена.ru;

    # SSL cert
    ssl_certificate /etc/letsencrypt/live/имя-домена.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/имя-домена.ru/privkey.pem;

    # Let's Encrypt
    location ^~ /.well-known/acme-challenge/ {
        root /path/to/static/;
        add_header Cache-Control public;
        allow all;
    }
}

И снова перечитаем конфигурацию nginx:

systemctl reload nginx

Теперь проверяем — работает ли https (заходим на сайт по https).

Ну и чтобы всегда использовать https — настроим перенаправление с http на https:

server {
    listen 80;
    server_name имя-домена.ru
                www.имя-домена.ru;
    return 301 https://имя-домена.ru$request_uri;
    access_log off;
}

В очередной раз перечитаем конфигурацию nginx:

systemctl reload nginx

Теперь должно всё работать.

Забодьтесь о безопасности своих пользователей — теперь это ещё и «бесплатно».

Установка переменных окружения

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

  • — пароль к базе данных WordPress
  • — имя администратора WordPress
  • — пароль администратора WordPress
  • — email администратора WordPress
  • — полный URL сайта WordPress, начиная с .
  • — пустая по-умолчанию, но, выставив значение в 1, вы будете использовать staging сервера Let’s Encrypt, необходимые для частого запроса сертификатов при тестировании ваших настроек, иначе Let’s Encrypt может временно заблокировать ваш ip-адрес из-за большого числа запросов.

Скрипт проверяет, что эти связанные с WordPress переменные выставлены, и завершает работу, если нет.
Строки скрипта 572-576 проверяют значение .

Создание настроек для нескольких сайтов

После настройки основного сайта рекомендуем Вам составить список сайтов и определить, какой сайт должен открываться по IP-адресу сервера (если он один). Затем в директории /etc/nginx/sites-available создать файлы с сайтами, заполнить их настройками и сохранить их. Так как сервер учитывает только настройки из директории /etc/nginx/sites-enabled, то необходимо создать символическую ссылку на файл:

$ ln -s /etc/nginx/sites-available/имя_сайта
/etc/nginx/sites-enabled/имя_сайта

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

$ sudo nginx -t

Если вывод содержит «syntax is ok» и «test is successful», то можно применить настройки, написав команду:

$ sudo service nginx reload

Шаг 1. Установите HTTP-сервер Nginx

Для работы Moodle требуется веб-сервер, а Nginx — один из самых популярных веб-серверов с открытым исходным кодом, доступных сегодня.

Чтобы установить Nginx в Ubuntu, выполните следующие команды:

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

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

http://localhost

Если вы видите указанную выше страницу в своем браузере, значит, Nginx работает должным образом.

Используйте mvn deploy, чтобы загрузить проект на сервер Nexus.

localRepository: адрес локального репозитория

зеркало: адрес нексуса

серверы: имя для входа и пароль сервера nexus. Можно настроить несколько серверов и назначить им разные разрешения. Например, выпуск и моментальный снимок отличаются

1. Загрузить с помощью cmd

Описание параметра:

-D: передать указанные параметры, соответствующие groupId, artifactId, версии, упаковке в pom файл: путь к локальной банке url: URL-адрес репозитория (выберите URL-адрес, соответствующий выпуску, моментальным снимкам или смешанному) repositoryId: соответствует идентификатору сервера в setting.xml. -s: путь к файлу setting.xml (если вы используете параметр в конфигурации по умолчанию, конфигурация не требуется)

2. Загрузить с помощью IDE

Добавьте файл pom в проект

id: соответствует идентификатору сервера в setting.xml name: nexus Repository name url: nexus Repository url

Следует отметить, что в файле pom.xml проекта Maven, если номер версии содержит SNAPSHOT, он будет автоматически опубликован в репозитории Snapshots, например:

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

Затем используйте развертывание Maven, поставляемое с IDE.

3. Загрузить с помощью веб-страницы

выберите Выберите файл, введите соответствующую информацию и нажмите «Загрузить». После успешной загрузки вы сможете просмотреть его.

Подготовка системы

Для корректной работы нашего веб-сервера необходимо:

  1. Задать имя серверу.
  2. Настроить синхронизацию времени.
  3. Настроить брандмауэр.

Рассмотрим настройку по шагам.

1. Имя сервера

В процессе настройки аутентификации через LDAP нам необходимо будет задать в качестве принципала имя нашего сервера:

hostnamectl set-hostname nginx.domain.local

* предполагается, что в нашем случае имя сервера будет nginx.domain.local (домен domain.local).

2. Настройка времени

Для работы с LDAP нам необходимо, чтобы время на последнем совпадало с временем на нашем веб-сервере. Самый правильный способ этого добиться — настроить синхронизацию.

Для начала настраиваем временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере мы задаем зону по московскому времени. Список все доступных зон можно посмотреть командой timedatectl list-timezones.

Устанавливаем утилиту для синхронизации времени, настраиваем ее, разрешаем запуск демона и стартуем его. Набор команд будет зависеть от дистрибутива Linux.

а) если на системе Ubuntu / Debian:

apt-get install chrony

vi /etc/chrony/chrony.conf


pool domain.local
# pool …
# pool …
# pool …

* в данном примере мы указали в качестве сервера синхронизации любой контроллер домена. Остальные настройки pool необходимо закомментировать.

systemctl enable chrony

systemctl restart chrony

б) если на системе CentOS / Red Hat:

yum install chrony

vi /etc/chrony.conf


server domain.local
# server …
# server …
# server …

* в данном примере мы указали в качестве сервера синхронизации любой контроллер домена. Остальные настройки pool необходимо закомментировать.

systemctl enable chronyd —now

3. Настройка безопасности

Для корректной работы нашего веб-сервера необходимо открыть порты http и https. Действия будут отличаться в зависимости от используемого брандмауэра.

а) Iptables (как правило, на Ubuntu/Debian или ранних версиях CentOS):

iptables -I INPUT -p tcp —match multiport —dports 80,443 -j ACCEPT

Для сохранения правил устанавливаем iptables-persistent и запускаем утилиту:

apt-get install iptables-persistent

netfilter-persistent save

б) Firewalld (как правило, на поздних версиях CentOS):

firewall-cmd —permanent —add-service=http{,s}

firewall-cmd —reload

Также на системах с активированным SELinux (как правило, )

setenforce 0

sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

Шаг 7. Установите сертификаты Let’s Encrypt Wildcard

На шаге 6 Moodle готов к использованию без SSL. Однако, если вы хотите обслуживать веб-трафик через HTTPS, необходимо установить и настроить SSL-сертификат Let’s Encrypt или другие общедоступные сертификаты.

Чтобы установить Let’s Encrypt, выполните следующие команды.

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

Let’s Encrypt предлагает множество способов проверить, что вы владеете доменом, для которого хотите предоставить сертификаты SSL. Вы не сможете создавать сертификаты, если не сможете доказать, что владеете доменом, который хотите защитить.

Для сертификатов с подстановочными знаками единственный метод запроса, который принимает Let’s Encrypt, — это запрос DNS, который мы можем вызвать с помощью  флага предпочтительных вызовов = dns .

Итак, чтобы сгенерировать сертификат с подстановочными знаками для домена * .example.com , вы выполните следующие команды:

Параметры команды выше описаны ниже:

  • certonly:                                     Obtain or renew a certificate, but do not install
  • –manual:                                    Obtain certificates interactively
  • –preferred-challenges=dns:      Use dns to authenticate domain ownership
  • –server:                                      Specify the endpoint to use to generate
  • –agree-tos:                                 Agree to the ACME server’s subscriber terms
  • -d:                                               Domain name to provide certificates for

После выполнения приведенной выше команды Let’s Encrypt предоставит текстовую строку для добавления текстовой записи в вашу запись DNS

Пример:

Перейдите на портал своего поставщика DNS, добавьте текстовую запись для строки выше и сохраните.

Подождите несколько минут, прежде чем продолжить из командной строки.

Некоторые поставщики DNS используют хитрость для распространения изменений, поэтому это может зависеть от платформы вашего провайдера.

После внесенных выше изменений, и Let’s encrypt сможет подтвердить, что вы являетесь владельцем домена, вы должны увидеть успешное сообщение, как показано ниже:

Подстановочный сертификат создан и готов к использованию.

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

Это должно отобразить аналогичный экран, как показано ниже:

Теперь сертификаты Let’s Encrypt действительны в течение 90 дней … Вы захотите настроить задание crob для автоматизации процесса обновления … Для этого откройте crontab и добавьте запись ниже:

Затем добавьте строку ниже и сохраните.

Сохраните, и все готово!

После установки Let’s Encrypt повторно откройте созданный выше файл VirtualHost Nginx и добавьте конфигурации Let’s Encrypt для защиты вашего сайта.

Шаг 5: Важные файлы и директории Nginx

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

Контент

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

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

  • : директория конфигурации Nginx. Все файлы конфигурации Nginx находятся в этой директории.
  • : основной файл конфигурации Nginx. Этот файл используется для внесения изменений в глобальную конфигурацию Nginx.
  • : директория, в которой хранятся “серверные блоки” для каждого сайта (серверные блоки являются приблизительным аналогом виртуальных хостов в Apache). Nginx не будет использовать конфигурационные файлы в этой директории, если они не имеют соответствующих ссылок в директории (см. ниже). Обычно все настройки серверного блока осуществляются в этой директории, а затем сайт активируется путём создания ссылки в другой директории.
  • : в этой директории хранятся серверные блоки для активированных сайтов. Обычно это достигается путём создания ссылок на конфигурационные профили сайтов, расположенные в директории .
  • : в этой директории хранятся фрагменты конфигурации, которые можно использовать при конфигурации любых сайтов. Фрагменты конфигурации, которые потенциально могут быть использованы в нескольких файлах конфигурации, являются прекрасными кандидатами для создания этих сниппетов.

Логи сервера

  • : каждый запрос к вашему веб-серверу записывается в этот файл лога, если иное не задано настройками Nginx.
  • : любые ошибки Nginx будут записываться в этот файл.

После установки Let’s Encrypt повторно откройте созданный выше файл VirtualHost Nginx и добавьте конфигурации Let’s Encrypt для защиты вашего сайта.

Выполните команды ниже, чтобы открыть файл.

Затем добавьте выделенные строки в файл VirtualHost, как показано ниже:

После вышеуказанного перезапустите Nginx и PHP 7.4-FPM.

Затем откройте браузер и перейдите к доменному имени сервера. Вы должны увидеть завершение работы мастера установки WordPress. Пожалуйста, внимательно следуйте указаниям мастера.

https://example.com/

Затем следуйте инструкциям на экране… Выберите язык установки и нажмите «Продолжить».

Прежде чем продолжить, вам необходимо знать следующее…. Используйте информацию о подключении к базе данных, которую вы создали выше….

  • Имя базы данных
  • Имя пользователя базы данных
  • Пароль базы данных
  • Хост базы данных
  • Префикс таблицы (если вы хотите запустить более одного WordPress в одной базе данных)

Мастер будет использовать информацию из базы данных для создания файла wp-config.php в корневой папке WordPress….

Если по какой-либо причине это автоматическое создание файла не работает, не беспокойтесь… Все, что нужно сделать, это заполнить информацию из базы данных в файле конфигурации. Вы также можете просто открыть wp-config-sample.php в текстовом редакторе, ввести свою информацию и сохранить ее как wp-config.php .

Затем введите информацию о подключении к базе данных и нажмите Отправить.

После этого нажмите кнопку « Запустить установку» , чтобы WordPress завершил установку.

Затем создайте имя сайта WordPress и учетную запись бэкэнд-администратора…. затем нажмите Установить WordPress

Когда вы закончите, WordPress должен быть установлен и готов к использованию

Поздравляю! Вы успешно установили WordPress CMS в Ubuntu 18.04 | 20.04. Если вы обнаружите какую-либо ошибку выше, пожалуйста, используйте форму комментария ниже, чтобы сообщить об этом.

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

  • Все файлы конфигурации Nginx находятся в каталоге.
  • Основной файл конфигурации Nginx — это .
  • Чтобы упростить поддержку конфигурации Nginx, рекомендуется создать отдельный файл конфигурации для каждого домена. У вас может быть столько файлов блоков сервера, сколько вам нужно.
  • Файлы блоков сервера Nginx хранятся в каталоге. Файлы конфигурации, найденные в этом каталоге, не используются Nginx, если они не связаны с каталогом.
  • Чтобы активировать серверный блок, вам необходимо создать символическую ссылку (указатель) с сайта конфигурационного файла в каталоге на каталог.
  • Рекомендуется следовать стандартному соглашению об именах, например, если ваше доменное имя, то ваш файл конфигурации должен быть назван
  • Каталог содержит конфигурационные фрагменты , которые могут быть включены в блок сервера файлов. Если вы используете повторяющиеся сегменты конфигурации, вы можете преобразовать эти сегменты в сниппеты и включить файл сниппета в серверные блоки.
  • Файлы журнала Nginx ( и ) находятся в каталоге. Рекомендуется иметь разные файлы журналов и журналов для каждого блока сервера.
  • Вы можете установить корневой каталог документов домена в любое место. Наиболее распространенные места для webroot:

Шаг 2: настройка файрвола

Теперь нужно внести несколько изменений в файрвол.

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

$ sudo ufw app list

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

Available applications:

...

  Nginx Full

  Nginx HTTP

  Nginx HTTPS

...

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

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

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

Для этого нужно выполнить команду:

$ sudo ufw allow 'Nginx HTTP'

Затем проверьте состояние UFW:

$ 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) 

Running NGINX Plus in a Docker Container

Docker can also be used with NGINX Plus. The difference between using Docker with NGINX Open Source is that you first need to create an NGINX Plus image, because as a commercial offering NGINX Plus is not available at Docker Hub.

Creating NGINX Plus Docker Image

To generate an NGINX Plus image:

  1. Create the Docker build context, or a Dockerfile:

  2. As with NGINX Open Source, default NGINX Plus image has the same default settings:

    • access and error logs are linked to the Docker log collector
    • no volumes are specified: a Dockerfile can be used to create base images from which you can create new images with volumes specified, or volumes can be specified manually:

    no files are copied from the Docker host as a container is created: you can add COPY definitions to each Dockerfile, or the image you create can be used as the basis for another image

  3. Log in to MyF5 Customer Portal and download your nginx-repo.crt and nginx-repo.key files. For a trial of NGINX Plus, the files are provided with your trial package.

  4. Copy the files to the directory where the Dockerfile is located.

  5. Create a Docker image, for example, (note the final period in the command).

    The option tells Docker to build the image from scratch and ensures the installation of the latest version of NGINX Plus. If the Dockerfile was previously used to build an image without the option, the new image uses the version of NGINX Plus from the previously built image from the Docker cache.

  6. Verify that the image was created successfully with the command:

  7. Create a container based on this image, for example, container:

  8. Verify that the container is up and running with the command:

NGINX Plus containers are controlled and managed in the same way as NGINX Open Source containers.

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

Для тех кто файрвол не включил и не собирается включать — Переходите к

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

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

sudo ufw app list

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

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

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

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

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

sudo ufw allow 'Nginx HTTP'

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

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

Шаг 3 — Проверка веб-сервера

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

Используйте команду init system, чтобы проверить работу службы:

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

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

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

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

Если вы находитесь на этой странице, ваш сервер работает корректно и готов к управлению.

Шаг 2 — Настройка брандмауэра

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

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

Необходимо получить список профилей приложений:

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

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

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

Для активации можно ввести следующую команду:

Для проверки изменений введите:

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

Настройка NGINX Unit

Скрипт настраивает NGINX Unit для запуска PHP и обработки путей WordPress, изолируя пространство имен процессов PHP и оптимизируя настройки производительности

Тут есть три функции, на которые стоит обратить внимание:

  • Поддержка пространств имен определяется по условию, основана на проверке запуска скрипта в контейнере. Это нужно, поскольку большинство настроек контейнеров не поддерживают вложенный запуск контейнеров.
  • Если есть поддержка пространств имен, отключается пространство имен network. Это нужно, чтобы позволить WordPress одновременно подключаться и к endpoints и быть доступным в интернете.
  • Максимальное число процессов определяется следующим образом: (Доступная память для запущенных MariaDB и NGINX Uniy)/(предел по оперативной памяти в PHP + 5)
    Это значение устанавливается в настройках NGINX Unit.

Также это значение подразумевает, что всегда есть как минимум два запущенных процесса PHP, что важно, поскольку WordPress делает много асинхронных запросов к самому себе, а без дополнительных процессов запуск, к примеру, WP-Cron, сломается. Вы, возможно, захотите увеличить или уменьшить эти ограничения, основываясь на ваших локальных настройках, потому что созданные настройки здесь — консервативные

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

Шаг 4: работа с nginx

Наконец, несколько основных команд, которые позволяют управлять nginx.

Остановить веб-сервер:

$ sudo systemctl stop nginx

Заново запустить после остановки:

$ sudo systemctl start nginx

Остановить и запустить:

$ sudo systemctl restart nginx

Если вы вносите изменения в настройки, можно перезагрузить nginx без остановки процессов и обрыва соединений:

$ sudo systemctl reload nginx

По умолчанию nginx будет запускаться вместе с сервером. Выключить эту настройку можно командой:

$ sudo systemctl disable nginx

Если же вам нужно включить автозапуск nginx, то введите:

$ sudo systemctl enable nginx

Miscellaneous ¶

Scope

By default, the controller watches Ingress objects from all namespaces. If you want to change this behavior, use the flag or check the Helm chart value to limit the controller to a single namespace.

See also for more details.

Webhook network access

Warning

The controller uses an admission webhook to validate Ingress definitions. Make sure that you don’t have Network policies or additional firewalls preventing connections from the API server to the service.

Certificate generation

Attention

The first time the ingress controller starts, two Jobs create the SSL Certificate used by the admission webhook.

THis can cause an initial delay of up to two minutes until it is possible to create and validate Ingress definitions.

You can wait until it is ready to run the next command:

Running on Kubernetes versions older than 1.19

Ingress resources evolved over time. They started with , then moved to and more recently to .

Here is how these Ingress versions are supported in Kubernetes: — before Kubernetes 1.19, only Ingress resources are supported — from Kubernetes 1.19 to 1.21, both and Ingress resources are supported — in Kubernetes 1.22 and above, only Ingress resources are supported

And here is how these Ingress versions are supported in NGINX Ingress Controller: — before version 1.0, only Ingress resources are supported — in version 1.0 and above, only Ingress resources are

As a result, if you’re running Kubernetes 1.19 or later, you should be able to use the latest version of the NGINX Ingress Controller; but if you’re using an old version of Kubernetes (1.18 or earlier) you will have to use version 0.X of the NGINX Ingress Controller (e.g. version 0.49).

The Helm chart of the NGINX Ingress Controller switched to version 1 in version 4 of the chart. In other words, if you’re running Kubernetes 1.19 or earlier, you should use version 3.X of the chart (this can be done by adding to the command).

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

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

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

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

ifconfig

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

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

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

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

Настройка серверных блоков NGINX

Если вы хотите разместить несколько веб-сайтов на одном веб-сервере NGINX, то вам нужно будет настроить серверные блоки. Серверные блоки также называются виртуальными хостами (в основном в Apache).

NGINX предварительно сконфигурирован только с одним блоком сервера. И именно там хранятся сведения о конфигурации для веб—сайта по умолчанию (/etc/nginx/sites-available) (/var/www/html).

Давайте посмотрим:

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

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

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

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

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

Создать корень сайта

Далее вам нужно будет создать корневую папку в разделе /var / www . Это делается для хранения содержимого вашего дополнительного веб-сайта. Например, я собираюсь создать папку с именем domain1.com.

Создание индексного файла

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

В этом примере я использую nano, но вы можете использовать свой любимый текстовый редактор. Вы можете скопировать и вставить следующий HTML код для тестирования.

Сохраните изменения и закройте текстовый редактор.

Создание серверного блока

Следующим шагом является создание файла серверного блока. Предназначен он для хранения сведений о конфигурации дополнительного веб-сайта. Выполните следующую команду.

Скопируйте пример конфигурации виртуального хоста сохраненного ранее и вставьте его в новый файл. Начиная со строки «server», убедитесь, что вы удалили все символы #. Чтобы раскомментировать директивы. Кроме того, не забудьте заменить “domain1” на ваше собственное зарегистрированное доменное имя соответственно.

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

Включить серверный блок

Чтобы NGINX знал, что дополнительный веб-сайт доступен, выполните следующую команду для создания символической ссылки на файл блока сервера.

Проверьте свою конфигурацию

Запустите sudo nginx-t, чтобы проверить конфигурацию блока сервера. Вы должны увидеть сообщение, указывающее, что все в порядке.

Вы можете запустить sudo service nginx reload, чтобы перезагрузить файлы конфигов.

Протестируйте свой новый сайт

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


Хостинг дополнительного сайта с использованием серверного блока

Шаг 6. Настройте Nginx

Ниже вы настраиваете файл Nginx VirtualHost для создаваемого сайта Moodle. Этот файл определяет, как обрабатываются и обрабатываются клиентские запросы.

Выполните приведенные ниже команды, чтобы создать новый файл VirtualHost с именем moodleв каталоге/etc/nginx/sites-available/

Ниже приведены очень хорошие настройки конфигурации для большинства сайтов Moodle на сервере Nginx. Эта конфигурация должна отлично работать.

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

Сохраните файл и выйдите.

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

На этом этапе Moodle готов и его можно запустить, перейдя на IP-адрес сервера или имя хоста.

http://localhost

Однако, если вы хотите включить SSL или принимать веб-трафик через HTTPS, вы можете продолжить ниже, чтобы установить и настроить бесплатные SSL-сертификаты Let’s Encrypt.

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

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

sudo apt update

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

sudo apt install nginx

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

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

sudo service nginx status

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

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

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

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

nginx -v

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

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

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

sudo service nginx start

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

sudo systemctl enable nginx

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

sudo systemctl disable nginx

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

sudo service nginx reload

Шаг 3. Установите PHP 7.4 и связанные модули

Joomla — это приложение на основе PHP, и для его запуска требуется PHP. Поскольку в некоторых версиях Ubuntu нет последних версий PHP, вы можете добавить сторонний репозиторий PPA для установки PHP оттуда.

Приведенная ниже команда добавит сторонний PPA в Ubuntu.

Затем обновите и обновите до PHP 7.4.

Затем выполните приведенные ниже команды, чтобы установить PHP 7.4 и связанные модули

После установки PHP 7.4 перейдите и настройте некоторые базовые параметры, которые могут потребоваться для правильной работы Joomla.

Выполните команды ниже, чтобы открыть PHP

Ниже приведены хорошие настройки для большинства веб-сайтов Joomla.

При этом должен быть установлен PHP 7.4 с некоторыми базовыми настройками, чтобы Joomla могла работать.

Настройка Certbot для сертификатов от Let’s Encrypt и их автоматическое продление

Certbot — бесплатный инструмент от Electronic Frontier Foundation (EFF), с помощью которого можно получать и автоматически обновлять сертификаты TLS от Let’s Encrypt. Скрипт выполняет следующие действия, приводящие к настройке Certbot для обработки сертификатов от Let’s Encrypt в NGINX:

  • Останавливает NGINX
  • Скачивает рекомендуемые параметры TLS
  • Запускает Certbot, чтобы получить сертификаты для сайта
  • Перезапускает NGINX для использования сертификатов
  • Настраивает ежедневный запуск Certbot в 3:24 ночи для проверки необходимости обновления сертификатов, а также, при необходимости, скачивания новых сертификатов и перезагрузки NGINX.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: