Giter VIP home page Giter VIP logo

javatech-4.1's Introduction

javatech-4.1

ДЗ: Инфраструктура web-приложений.

Инструкция по установки и настройки сервера.

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

0. Установка VirtualBox.

Вы можете загрузить последнюю версию VirtualBox с официального сайта: https://www.virtualbox.org/wiki/Downloads в зависимости от вашей операционной системы.

Инструкцию по установки можно найти по ссылке: https://www.virtualbox.org/manual/ch02.html.

1. Скачивание операционной системы сервера.

Windows является широко известной OS среди широких масс, но большинство разработчиков предпочитают Linux из-за стабильности, безопасности и гибкости настройки. Linux - это бесплатная и очень легкая операционная система с открытым исходным кодом.

Существует много различных Linux дистрибутивов, для примера будет использоваться Ubuntu, поскольку это один из самых популярных и известных дистрибутивов Linux, основан на Debian.

Загрузить Ubuntu Server можно по ссылке: https://ubuntu.com/download/server, рекомендуется использовать LTS версию — с долгосрочной поддержкой.

2. Создание новой виртуальной машины в VirtualBox.

  1. Запустите VirtualBox.
  2. Нажмите кнопку создать/new.
  3. Укажите имя новой виртуальной машины; укажите директорию для машины; выберите тип "Linux", версия Ubuntu (64-bit). Нажмите далее/next.
  4. Выдерите объём ОЗУ для виртуальной машины, не рекомендуется выходить за зелёную зону. Нажмите далее.
  5. Выбор жёсткого диска: выдерите пункт "создать виртуальный жёсткий диск". Нажмите далее.
  6. Выберите тип жёсткого диска: "VDI (VirtualBox Disk Image)". Подробнее можно прочитать здесь. Нажмите далее.
  7. Выбор формата хранения: выберите динамический формат хранения. Подробнее можно прочитать здесь. Нажмите далее.
  8. Выберите размер виртуального жёсткого диска. Нажмите создать/create.
  9. Вернувшись в VirtualBox Manager, вы должны увидеть только что созданную виртуальную машину слева в списке.

3. Установка операционной системы на виртуальную машину.

  1. Перейдите в настройки виртуальной машины. Раздел носители. Добавьте ранее скаченный ISO образ в качестве носителя.
  2. Запустите виртуальную машину. Начнётся процесс установки Ubuntu.
  3. Откроется GNU GRUB. У меня версия 2.06. Выберите "Try or Install Ubuntu Server".
  4. Откроется экран приветствия. Выберите предпочитаемый язык.
  5. Откроется экран обновления установщика. Можно выбрать: обновить или игнорировать обновления. Я выбираю обновить.
  6. Откроется меню конфигурации клавиатуры. Вы можете выбрать свою раскладку или выбрать пункт автоматической идентификации.
  7. Выбор типа установки: можно выбрать установку по умолчанию с уже подобранным набором пакетов или выбрать минимизированную версию.
  8. Настройка сетевого соединения. Ubuntu попытается настроить стандартный сетевой интерфейс. Обычно можно принять значения по умолчанию и продолжить.
  9. Настройка Proxy. Если ваша система требует прокси-сервер для подключения к сети, то вы можете указать данные в этом диалоговом окне.
  10. Настройка зеркала Ubuntu. Если вы хотите использовать альтернативное зеркало, то вы можете его указать здесь. Я выбираю зеркало по умолчанию.
  11. Конфигурация хранилища. Установщик может вам помочь разбить весь диск на разделы или вы это можете сделать вручную.
  12. Сводная информация о настройки. Откроется экран, на котором будет отображено всё что вы ранее выбрали. Если вас всё устраивает жмите готово.
  13. Настройка профиля. Заполните данные, как считаете нужным. Ваше имя, имя вашего сервера, имя пользователя, пароль.
  14. Настройка SSH. Здесь у вас есть возможность установить серверный пакет OpenSSH. Также здесь есть возможность импорта SSH ключей.
  15. Подборка серверных Snap пакетов популярных для выбранной системы. Выбирайте на своё усмотрение.
  16. Установщик будет устанавливать Ubuntu выбранной версии. После завершения нажмите "Перезагрузить сейчас".

4. Настройка удалённого доступа по SSH.

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

sudo apt update # обновляет индексы пакетов в системе Linux и списки пакетов (/etc/apt/sources.list)
sudo apt upgrade # обновляет пакеты программного обеспечения до последних версий

*sudo — от имени супер пользователя; *apt — воспользоваться пакетным менеджером Advanced Packaging Tool;

Далее, проверим, что SSH установлен (в случае, если вы выбирали опцию "Установить сервер OpenSSH" во время установки) введя команду:

ssh

Если выдаёт ошибку, вам нужно воспользоваться командой:

sudo apt-get install openssh-server

Настройка сети виртуальной машины.

Перед настройкой нужно выключить машину, введя команду:

poweroff

В VirtualBox Manager выберите только что созданную виртуальную машину и нажмите "Настроить". Перейдите на вкладку "Сеть". Выберите "Адаптер 1". Теперь нужно определиться какой способ подключения будем использовать. Я оставляю исходный интерфейс NAT, буду использовать для подключения по SSH переадресацию портов.

Прописываю параметры пробрасывания портов:
Name: SSH port forwarding, лучше использовать осмысленное название
Protocol: TCP
Host IP: 127.0.0.1
Host Port: 2222
Guest IP: 10.0.2.15, можно узнать командой "ip address"
Guest Port: 22

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

Сеанс SSH.

В терминале вашей основной операционной системы запустите команду ssh в следующем формате:

ssh -p 2222 [email protected]

Далее введите пароль от гостевой OS, затем будет предложено инициировать соединение.

В случае, если команда выдаёт ошибку, введите команду:

# команда актуальна для Linux, в Windows, например, можно воспользоваться Git Bash'ем, там openssh-client предустановлен.
sudo apt install openssh-client

5. Запуск и остановка виртуальной машины в Headless Mode.

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

Для запуска/остановки/приостановки вам нужно знать имя виртуальной машины. Чтобы увидеть список виртуальных машин введите команду:

VBoxManage list vms # отобразит все виртуальные машины, а также их уникальные идентификаторы

Запуск:

VBoxManage startvm "VM Name" --type headless

Приостановка:

VBoxManage controlvm "VM Name" pause --type headless

Перезапуск приостановленной машины:

VBoxManage controlvm "VM Name" resume --type headless

Остановка:

VBoxManage controlvm "VM Name" poweroff --type headless

6. Вход по SSH без ввода пароля.

Ключи SSH могут обеспечить безопасный способ входа на сервер без необходимости ввода пароля.

Для этого нужно сгенерировать пару ключей. Открытый и закрытый. Закрытый — хранится на вашем хостовом компьютере и его нужно тщательно охранять. Открытый ключ копируется на сервер к которому вы хотите подключиться.

Генерация ключей.

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

ssh-keygen

Например, вот так:

ssh-keygen -o -b 4096 -t rsa

-o — хранение закрытого ключа в новом, более безопасном формате; -b 4096 — установка длинны закрытого ключа 4096 бит, вместо 1024 по умолчанию; -t rsa — создание rsa ключей;

Далее, будет предложен указать: где сохранить ключи, какую парольную фразу использовать;

Копирование ключа на сервер

Вам нужно запустить сервер удобным для вас способом. Для копирования ключа я воспользуюсь командой ssh-copy-id, в моём случае в формате:

ssh-copy-id -i ./.ssh/id_rsa.pub -p 2222 [email protected]

-i ./.ssh/id_rsa.pub — путь к созданному публичному SSH ключу; -p 2222 [email protected] данные моего Ubuntu сервера (используется проброс портов);

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

ssh -p 2222 [email protected]

7. Установка JDK.

Java — это язык программирования и вычислительная платформа, впервые выпущенная компанией Sun Microsystems в 1995 году.

JVM — это абстрактная машина, отвечающая за компиляцию и выполнение кода Java. Это часть среды выполнения Java (JRE), которая вызывает основную функцию программы. Поставляется с компилятором JIT (Just-in-Time), который преобразует исходный код Java в машинный код.

JRE — это программное обеспечение, включающее JVM и библиотеки классов для независимого запуска Java-программ. Хотя он может выполнять код. Тем не менее, JRE поставляется в комплекте с Java Development Kit (JDK), чтобы обеспечить полный опыт разработки приложений.

JDK — это полная программная среда для создания приложений и апплетов с использованием языка программирования Java. Это зависит от платформы. Поэтому он имеет разные версии платформы ОС для Windows, Linux, Mac и т.д. Он позволяет читать, писать и выполнять программу Java.

Установка с помощью пакетного менеджера apt.

❗ Обратите внимание, что версия в репозиториях Ubuntu или другой операционной системы могут не совпадать с версиями официальных репозиториев JDK.

Примеры команд для установки:

sudo apt-get install default-jdk # установить последнюю версию Open JDK
sudo apt-get install default-jre # установить последнюю версию Open JRE
sudo apt-get install default-jdk-doc # установить последнюю версию пакета документации

sudo add-apt-repository ppa:webupd8team/java # добавление репозитория от проекта webupd8.org
sudo apt-get update # обновляет индексы пакетов в системе Linux и списки пакетов (/etc/apt/sources.list)
sudo apt-get install oracle-java8-installer # установить java с сайта Oracle

Ручная установка Open JDK.

Перейдите на сайт https://openjdk.org/projects/jdk/ и выберите подходящую версию JDK под вашу операционную систему.

Я выбрал: JDK 19; Linux / x64; sha256;

Загрузка архива на сервер

Выполните команду

wget https://download.java.net/java/GA/... .tar.gz
Проверка подлинности

Выполните команду и сверьте с тем, что находится в sha256.

sha256sum file.tar.gz
Распаковка архива

Выполните команды.

sudo mkdir /usr/lib/jvm # если папка отсутствует
sudo tar -xvf file.tar.gz -C /usr/lib/jvm

x — извлечь файлы из заархивированного файла; v — перечислить файлы, которые извлекает; f — указать файл с которым работать;

tar –tzf file.tar.gz # просмотр содержимого архива
Постоянное изменения переменных окружения $PATH, $JAVA_HOME, $JRE_HOME, $JDK_HOME.

Просмотр содержимого переменных

echo $PATH
echo $JAVA_HOME
echo $JRE_HOME
echo $JDK_HOME

Изменение переменной для текущей сессии.

export PATH=$PATH:/path/to/my/program

Для постоянного эффекта нужно отредактировать файл ~/.profile добавив, например:

# set Java variables
if [ -d "/usr/lib/jvm/jdk-19.0.2" ] ; then
    JAVA_HOME="/usr/lib/jvm/jdk-19.0.2"
    JRE_HOME="$JAVA_HOME"
    JDK_HOME="$JAVA_HOME"
fi

# set PATH jdk
if [ -d "/usr/lib/jvm/jdk-19.0.2/bin" ] ; then
    PATH="$JAVA_HOME/bin:$PATH"
fi

8. Отправка jar-файла на сервер.

Для отправки на сервер можно воспользоваться командой scp. SCP (защищенное копирование) — это утилита командной строки, позволяющая безопасно копировать файлы и каталоги между двумя местоположениями. При передаче данных с помощью scp, как файлы, так и пароль шифруются, поэтому любой, кто отслеживает трафик, не получает ничего конфиденциального.

scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2

Копирование jar файла с локального компьютера на удалённый сервер в моём случае

scp -P 2222 ../javatech-2.1/target/demo-web-0.0.1-SNAPSHOT.jar [email protected]:/home/username/module-2/demo-web-0.0.1-SNAPSHOT.jar

Подробнее о команде можно прочитать здесь.

9. Запуск приложения на сервере.

Так-как я использую проброс портов для подключения к серверу на VirtualBox, то мне нужно прописать ещё один проброс.

Прописываю параметры пробрасывания портов:
Name: port forwarding, лучше использовать осмысленное название
Protocol: TCP
Host IP: 127.0.0.1
Host Port: 8000
Guest IP: 10.0.2.15, можно узнать командой "ip address"
Guest Port: 8000

Все процессы в системе, за исключением at и batch, завершаются, когда вы выходите из системы. Если вы хотите, чтобы после вашего выхода из системы процесс в фоновом режиме продолжал выполняться, то вам необходимо использовать команду nohup. Завершить команду nohup можно командой kill.

В моё случае запуск приложения на сервере выполнит команда:

nohup java -jar ./module-2/demo-web-0.0.1-SNAPSHOT.jar >> ./module-2/log &

>> — перенаправление stdout (стандартный поток вывода) в файл. Создает новый файл, если он отсутствовал, иначе - дописывает в конец файла. & — запуск процесса в фоновом режиме.

Посмотреть запущенные процессы можно командой:

ps af

10. Работа с Tomcat на сервере.

В целях безопасности Tomcat не следует запускать под пользователем root. Создаём нового системного пользователя и группу с домашним каталогом /opt/tomcat, который будет запускать службу Tomcat.

sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat

Установка Tomcat

Загрузите подходящую вам версию с сайта: https://downloads.apache.org/tomcat. Команда имеет вид:

wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz -P /tmp

-P /tmp — указываем директорию загрузки;

Выполним проверку на подлинность командой:

sha512sum /tmp/apache-tomcat-9.0.71.tar.gz # сопоставить с тем, что находится по адресу: https://downloads.apache.org/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz.sha512

Распаковка архива в каталог /opt/tomcat:

sudo tar -xvf /tmp/apache-tomcat-9*.tar.gz -C /opt/tomcat

Создание символической ссылки для лучшего контроля версий:

sudo ln -s /opt/tomcat/apache-tomcat-9.0.71 /opt/tomcat/latest

Изменение владельца каталога пользователю и группе tomcat:

sudo chown -RH tomcat: /opt/tomcat/latest

Скрипты внутри bin каталога помечаем флагом, как исполняемые:

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

Запуск Tomcat как службу

Чтобы запустить Tomcat как службу, вам нужно создать новый модульный файл. Создаём файл tomcat.service в каталоге /etc/systemd/system/.

sudo touch /etc/systemd/system/tomcat.service

Прописываем конфигурацию. Пример:

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jdk-19.0.2"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Сообщение systemd о том, что была создана новая служба:

sudo systemctl daemon-reload

Запуск службы Tomcat:

sudo systemctl start tomcat

Проверка статуса службы:

sudo systemctl status tomcat

Включение авто запуска во время загрузки:

sudo systemctl enable tomcat

Разрешение движений через порт:

sudo ufw allow 8080/tcp

!!! Если вы в VirtualBox используйте проброс портов, не забудьте прописать проброс для порта 8080.

Настройка веб-интерфейса управления Tomcat

Пользователи и роли Tomcat определяются в tomcat-users.xml файл. Этот файл представляет собой шаблон с комментариями и примерами, описывающими, как настроить пользователя или роль.

Создание файла:

sudo touch /opt/tomcat/latest/conf/tomcat-users.xml

Прописываем конфигурацию:

<tomcat-users>
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>

Для настройки доступа редактируйте файл: /opt/tomcat/latest/webapps/manager/META-INF/context.xml.

Перезапуск службы tomcat:

sudo systemctl restart tomcat

Деплой war файла можно произвести, например, через веб интерфейс.

11. Проксирование.

Файл hosts.

Файл hosts — это текстовый документ, который содержит в себе информацию о домене и IP-адресе, который ему соответствует. Располагается hosts на локальных машинах.

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

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

Расположение файла:

  • Windows: C:\windows\system32\drivers\etc\hosts;
  • Linux, Unix, BSD: /etc/hosts;
  • MacOS: /private/etc/hosts;

Файл hosts — это системный файл, для его редактирования нужны права администратора.

Внесение изменения в конец файла в формате: ip-address domain;

Работа с NGINX.

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

Установка.

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

sudo apt update
sudo apt install nginx

Проверьте, что NGINX был зарегистрирован как ufw служба, введя:

sudo ufw app list
Output
Available applications:
  Nginx — этот профиль открывает как порт 80 (обычный незашифрованный веб-трафик), так и порт 443 (зашифрованный трафик TLS/SSL).
  Nginx HTTP — этот профиль открывает только порт 80 (обычный незашифрованный веб-трафик). 
  Nginx HTTPS — этот профиль открывает только порт 443 (зашифрованный трафик TLS/SSL).
  OpenSSH

UFW (Uncomplicated Firewall или «простой брандмауэр») представляет собой интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра. Хотя iptables — надежный и гибкий инструмент, начинающим бывает сложно научиться использовать его для правильной настройки брандмауэра.

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

Используем:

sudo ufw allow 'Nginx HTTP'
sudo ufw status # проверка

Проверка, что служба запущена:

systemctl status nginx

!!! Если вы используйте проброс портов в VirtualBox, то не забудьте прописать проброс:

Прописываю параметры пробрасывания портов:
Name: port forwarding, лучше использовать осмысленное название
Protocol: TCP
Host IP: 127.0.0.1
Host Port: 80
Guest IP: 10.0.2.15, можно узнать командой "ip address"
Guest Port: 80
Управление процессом.

Остановка сервера:

sudo systemctl stop nginx

Запуск сервера, когда он приостановлен:

sudo systemctl start nginx

Перезапуск сервера:

sudo systemctl restart nginx

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

sudo systemctl reload nginx

По умолчанию сервер настроен на автоматический запуск, можно изменять:

sudo systemctl disable nginx
sudo systemctl enable nginx
Настройка серверных блоков (дополнительно).

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

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

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

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

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

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

Проверка разрешений:

sudo chmod -R 755 /var/www/your_domain

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

sudo touch /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;
        }
}

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

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 файл. Найди server_names_hash_bucket_size директиву и удалить # символ, чтобы раскомментировать строку.

Проверка, что в файлах NGINX нет ошибок:

sudo nginx -t

Нужен перезапуск NGINX, чтобы изменения вступили в силу:

sudo systemctl restart nginx
Конфигурации сервера.
  • /etc/nginx/: каталог конфигурации Nginx;
  • /etc/nginx/nginx.conf: основной файл конфигурации (глобальная конфигурация);
  • /etc/nginx/sites-available/: каталог, в котором могут храниться серверные блоки для каждого сайта, связаны с site-enabled каталогом;
  • /etc/nginx/sites-enabled/: каталог, в котором хранятся включенные серверные блоки для каждого сайта. Как правило, они создаются путем ссылки на файлы конфигурации, найденные в sites-available каталоге;
  • /etc/nginx/snippets/: каталог содержит фрагменты конфигурации, которые можно включить в другое место в конфигурации Nginx;
Журнал сервера.
  • /var/log/nginx/access.log: каждый запрос к вашему веб-серверу записывается в этот файл журнала, если Nginx не настроен иначе;
  • /var/log/nginx/error.log: любые ошибки Nginx будут записываться в этот журнал;
Директивы.
http.

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

include.

Это сообщает NGINX, где можно найти файлы конфигурации веб-сайта.

listen.

Сообщает NGINX об имени хоста/IP-адресе и TCP - порте, поэтому он распознает, где он должен прослушивать HTTP-соединения.

server_name.

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

location.

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

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

Настройка местоположения — это еще одна переменная с собственным блоком аргументов.

Когда NGINX определяет директиву местоположения, которая лучше всего подходит для конкретного запроса, его ответ будет основан на содержимом связанного блока директивы местоположения.

  • root: корнева директория;
Пример настройки location.

/etc/nginx/nginx.conf

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;

        location /tomcat/ {
                proxy_pass http://127.0.0.1:8080/; # / - отрезаем префикс при передачи в tomcat
        }

        location /tomcat/files {
                proxy_pass http://127.0.0.1:8080/demo-web-1.0-SNAPSHOT/files;
        }

        location /spring/ {
                proxy_pass http://127.0.0.1:8000/;
        }
}

Полезные команды:

sudo systemctl reload nginx # перезагрузка без разрыва соединения
systemctl status nginx # проверка статуса службы сервера
sudo nginx -t # проверка наличия ошибок в файле конфигурации

! при возникновении конфликта путей попробуйте удалить файл: /etc/nginx/sites-enabled/default;

javatech-4.1's People

Contributors

egorov-m avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.