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

Если Вам интересно, как настроить сервер для хостинга JVM приложения, то предлагаю вашему вниманию следующую инструкцию. Предположим, вы только что получили доступ к чистому VPS серверу, на котором крутится Ubuntu и вы хотите на нём развернуть полноценное JVM приложение, основанное на Spring. Для полноты картины мы настроим также локальный postgres и доступ извне по http.

Прежде всего обновляем индекс менеджера пакетов apt. У вас должно быть достаточно прав для выполнения sudo, а также ваш сервер должен иметь доступ в Интернет.

sudo apt update

Установка и настройка Java

Для работы нашего jvm-приложения сначала требуется установить виртуальную машину Java. Ставим последнюю LTS (long-term support – длительная поддержка) версию. На данный момент это Java 17.

# если планируем компилировать на сервере, то ставим JDK
sudo apt-get install openjdk- 17 -jdk
# если будем запускать уже скомпилированное приложение, то JRE
sudo apt-get install openjdk- 17 -jre

Как установить программу на сервер ?


# затем проверяем, что по умолчанию установилась нужная версия
java -version

JDK – это Java Development Kit, т.е. версия Java для разработчиков. Включает в себя компилятор. JRE – это Java Runtime Environment, т.е. среда исполнения. Причём JDK включает в себя JRE. На сервере чаще всего достаточно поставить именно JRE.

Опционально можно вручную настроить переменную окружения JAVA_HOME в файле /etc/environment. Добавляем в конце файла на новой строке:

JAVA_HOME= «/usr/bin/java»

Установка и настройка postgres

sudo apt install postgres
# заходим в систему под пользователем postgres
sudo -i -u postgres
# создаём базу данных с нужным именем
createdb имя_базы
# создаём пользователя для этой БД
createuser имя_пользователя —interactive

При создании пользователя вам будет задан только один вопрос. Создать его как суперпользователя? То есть наделить его всей полнотой полномочий для работы с БД. Выбираем yes.

Что касается имени пользователя и базы, то называйте их как-то похожим образом. Например, mydb и mydb_user.

Теперь заходим в сам postgres, выполнив команду psql. По сути psql – это консольный вариант клиента БД, который позволяет выполнять любые sql команды при наличии прав.

Установим для только что созданного пользователя хороший пароль (не забывайте точку с запятой в конце):

alter user имя_пользователя with encrypted password ‘pa$$w0rd’ ;

Кстати, генератор паролей доступен на данном сайте в разделе «Утилиты».

Выходим из psql командой q.

Теперь в конце файла /etc/postgresql/номер_версии/main/pg_hba.conf добавляем:

host база пользователь all password

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

Теперь если нам требуется подключаться к данной БД снаружи, а не только из самого приложения, работающего на этом же хосте, находим в файле /etc/postgresql/номер_версии/main/postgresql.conf

Как установить программу на сервер? Круглосуточная работа программ на серверах vds/vps.


следующую закомментированную строку и раскомментируем её:

# listen_addresses = ‘*’;

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

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

sudo service postgresql restart

Запускаем приложение как linux-сервис

Для начала нам нужно, чтобы имя jar-файла, которое получается в результате компиляции нашего Spring-приложения, не менялось от версии к версии. Задать его в явном виде в gradle можно так:

// файл build.gradle.kts
tasks bootJar archiveFileName.set( «ИМЯ.jar» )
>
>

Если вы используете maven, то используйте следующую настройку:

org.springframework.boot
spring-boot-maven-plugin

ИМЯ

Предположим, у нас уже есть скомпилированное jvm-приложение, которое умеет слушать порт 8080. Чтобы это приложение всё время работало на сервере и автоматически запускалось при старте сервера, нужно зарегистрировать его как linux-сервис.

Для этого с помощью scp копируем jar-файл (если их несколько, копируем тот, который больше) на сервер. Например, в папку /var/имя_приложения/имя_приложения.jar

Читайте также:
Как получить ок в одноклассниках без программ

Затем в папке /etc/systemd/system/ создаём файл имя_приложения.service со следующим содержимым:

[Unit]
Description=описание
After=syslog.target

[Service]
User=имя_пользователя
Environment= «КЛЮЧ=ЗНАЧЕНИЕ»
Environment= «LOGGING_FILE_PATH=/var/log/имя_приложения/»
Environment= «TZ=Europe/Moscow»
ExecStart=/usr/bin/java -jar /var/имя_приложения/имя_приложения.jar

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

В параметрах Environment вы можете задавать различные переменные окружения в формате «ключ=значение». В данном примере уже задан часовой пояс (TZ) и путь до папки с логами (LOGGING_FILE_PATH). Именно здесь вы можете указать профиль приложения test или prod.

В ExecStart указыватся команда для запуска приложения. Здесь просто подставьте ваши значения.

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

# активация
sudo systemctl enable имя_сервиса.service
# первичный запуск
sudo service имя_сервиса start

Теперь наш сервис будет запускаться автоматически даже при перезагрузке сервера.

Если будете менять какие-то настройки в service-файле, не забывайте выполнять команду systemctl daemon-reload, чтобы изменения вступали в силу.

Настройка Nginx

Поскольку наш сервис слушает порт 8080, вы уже можете обращаться к нему снаружи, указав имя хоста или ip-адрес и порт 8080. Но как сделать так, чтобы порт не нужно было указывать в явном виде? В этом нам поможет Nginx, который будет проксировать все запросы с дефолтного порта 80 на порт нашего приложения 8080.

# ставим Nginx
sudo apt install nginx

Теперь открываем конфигурацию /etc/nginx/nginx.conf и находим там секцию http. Внутри неё нужно разместить секцию server:

http <

server <
listen 80;
server_name домен;

listen 80 указывает, что мы хотим слушать порт 80. Секция «location /» говорит о том, что все запросы с корня url мы перенаправляем на localhost на порт 8080 (параметр proxy_pass).

# проверяем, что не ошиблись в синтаксисе конфигурации
sudo nginx -t
# перечитываем конфиг
sudo nginx -s reload
# удаляем дефолтную страницу-заглушку — она нам больше не нужна
sudo rm /etc/nginx/sites-enabled/default

Теперь в урле при обращении к нашему сервису порт указывать не нужно.

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

Напоследок было бы неплохо настроить хоть какую-то защиту нашего сервера. Воспользуемся стандартным брандмауэром UFW (Uncomplicated Firewall). По умолчанию он разрешает все подключения изнутри наружу и запрещает все подключения снаружи к серверу. Установка и настройка его предельно проста.

# установка
sudo apt install ufw
# Важно! Разрешаем ssh-подключения!
sudo ufw allow ssh

Команда вида «ufw allow протокол» позволяет разрешить подключения на определённый порт извне. Прежде всего, не забудьте разрешить ssh-подключение. Если вы забудете это сделать, то после активации ufw вы потеряете доступ к серверу.

Разрешим ещё несколько протоколов:

# разрешаем http и https протоколы (порты 80 и 443)
sudo ufw allow http
sudo ufw allow https
# разрешаем postgres на порту 5432
sudo ufw allow postgres
# включаем брандмауэр
sudo ufw enable

После активации брандмауэра все запрещённые порты окажутся недоступны!

Рецепты. Как установить ПО на серверы используя VMmanager и DCImanager

Согласитесь, приятно получить сервер уже готовый к выполнению задач. Установленный ISPmanager позволит сразу приступить к размещению сайта. Teamspeak – организовать тренировку по WoT без траты времени на инсталляцию.
Провайдеры за счет этого повышают доход. Сегодня они предлагают не просто машины с чистой ОС, а бухгалтерские, торговые, игровые серверы. «Предпродажная подготовка» повышает лояльность клиентов и уменьшает нагрузку на техподдержку.

  1. Если устанавливаемое программное обеспечение поддерживает несколько операционных систем, для каждой придётся сделать свой шаблон. Рецепт же может быть один на несколько ОС.
  2. Если речь идёт про KVM или выделенный сервер, то чтобы установить дополнительные пакеты нужно внести изменения в install.cfg (файл ответов). Если про OpenVZ, то нужно пересобрать весь контейнер, добавив в него нужные файлы. А в случае рецепта достаточно открыть через браузер меню в VMmanager или DCImanager и вставить код в поле ввода.

Писать рецепт можно на любом языке, надо только, чтобы в ОС был необходимый интерпретатор. После окончания установки операционной системы и перезагрузки сервера, этот файл копируется по SSH во временную директорию и запускается с правами root.
В рецепте должен быть блок метаданных в начале тела.

Читайте также:
Программа по русскому языку как иностранному базовый уровень

Выглядит это примерно так

#!/bin/sh # # metadata_begin /*Метка начала блока*/ # recipe: Hello! /*Внутреннее имя рецепта. Отображается в списках*/ # tags: centos7,debian8,ubuntu1404,ubuntu1604 /*Набор тэгов. Необходим для контроля совместимости рецепта и операционной системы. Рецепт считается совместимым с ОС, если совпадает хотя бы один тэг в шаблоне ОС и в рецепте*/ # revision: 1 /*Номер версии рецепта*/ # description_ru: Пример рецепта. Приветствие миру, которое будет выводиться при каждом входе в shell. # description_en: Example of recipe. Greetings to world, that will be shown after every login to shell. # /*Выше — описания на соответствующих языках. Отображаются при выборе рецепта в меню установки ОС на выделенном или виртуальном сервере*/ # metadata_end /*Метка конца блока*/ # echo «Hello World!» > /etc/motd

  • “Настройки кластера” → “Рецепты” в VMmanager.
  • “Настройки” → “Рецепты” в DCImanager.

Настройка обработчика услуг

Для создания обработчика нужно зайти под администратором в меню “Интеграция” → “Обработчики услуг” и нажать кнопку “Создать”.

Затем на этапе настройки интеграции установить или снять флажок.

И при создании тарифа выбрать желаемый обработчик.

Как закрыть доступ к рецепту

Выполняем авторизацию в панели под пользователем с правами администратора. Переходим в меню «Настройки кластера» → «Рецепты», выбираем нужный рецепт и нажимаем «Свойства».

Выбираем нужный уровень доступа из выпадающего списка и нажимаем “Ok”.

На случай если клиент часто устанавливает ПО, которое пользуется малой популярностью, и хочет автоматизации процесса, в наших продуктах есть возможность дать конечным пользователям права на создание своих, локальных, рецептов. Для этого нужно зайти /usr/local/mgr5/etc и добавить в файл vmmgr.conf или dcimgr.conf строку Option UserRecipes, после чего перезапустить панель командой /usr/local/mgr5/sbin/mgrctl -m vmmgr exit или /usr/local/mgr5/sbin/mgrctl -m dcimgr exit соответственно.
На уровне пользователя в панели появится пункт меню «Управление” → “Рецепты», а значит возможность создавать собственные рецепты и использовать их при переустановке ОС виртуального или выделенного сервера.

Руководство

Теперь попробуем на практике написать рецепт и дать к нему доступ конечным пользователям. Для примера возьмём развёртывание на VDS продукта BigBlueButton 1.0, платформы для проведения вебинаров. Под спойлером описание процесса со скриншотами.

Создание рецепта

Выполняем авторизацию в панели VMmanager под пользователем с правами администратора, заходим “Настройки кластера”→”Рецепты”.

Нажимаем кнопку “Создать”.

Указываем имя файла, в котором будет находиться рецепт, пишем/вставляем в поле ввода скрипт, заполняем блок метаданных и нажимаем “Ок”.

Созданный рецепт появляется в списке.

Результат — при заказе услуги клиент хостинг-провайдера видит ещё один вариант предустановленного ПО.


Интересующихся исходным кодом приглашаем ещё под один спойлер.
Исходный код рецепта

#!/bin/bash # # metadata_begin # recipe: BigBlueButton # tags: ubuntu1404 # revision: 1 # description_ru: BigBlueButton, платформа для проведения вебинаров. # description_en: BigBlueButton, webinar platform. # metadata_end # # Запускаем логирование. RNAME=BigBlueButton set -x LOG_PIPE=/tmp/log.pipe.$$ mkfifo $ LOG_FILE=/root/$.log touch $ chmod 600 $ tee < $$ $ exec 2> $ killjobs() < jops=»$(jobs -p)» test -n «$» kill $ || : > trap killjobs INT TERM EXIT echo echo «=== Recipe $ started at $(date) ===» echo #Обновляем пакеты, а затем дистрибутив ОС. apt-get update apt-get -y dist-upgrade #Добавляем репозиторий LibreOffice 4.4.

LibreOffice используется для конвертации презентаций в формат PDF. apt-get -y install software-properties-common add-apt-repository -y ppa:libreoffice/libreoffice-4-4 add-apt-repository -y ppa:ondrej/php # Добавляем ключ доступа к репозиторию BigBlueButton и сам репозиторий. wget http://ubuntu.bigbluebutton.org/bigbluebutton.asc -O- | apt-key add — echo «deb http://ubuntu.bigbluebutton.org/trusty-1-0/ bigbluebutton-trusty main» | tee /etc/apt/sources.list.d/bigbluebutton.list # Обновляем список пакетов. apt-get update # Ставим кодеки ffmpeg. apt-get -y install build-essential git-core checkinstall yasm texi2html libvorbis-dev libx11-dev libvpx-dev libxfixes-dev zlib1g-dev pkg-config netcat libncurses5-dev FFMPEG_VERSION=2.3.3 cd /usr/local/src if [ ! -d «/usr/local/src/ffmpeg-$» ]; then wget «http://ffmpeg.org/releases/ffmpeg-$.tar.bz2» tar -xjf «ffmpeg-$.tar.bz2» fi cd «ffmpeg-$» ./configure —enable-version3 —enable-postproc —enable-libvorbis —enable-libvpx make checkinstall —pkgname=ffmpeg —pkgversion=»5:$» —backup=no —deldoc=yes —default # Заранее принимаем с лицензионное соглашение пакета ttf-mscorefonts-installer чтобы во время установки BigBlueButton не появлялось окно и не требовалось участие пользователя. echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections # Ставим сам BigBlueButton. apt-get -y install bigbluebutton # Ставим штатный (по задумке разработчиков BBB, тестовый) пакет для проведения конференций. apt-get -y install bbb-demo # Ставим пакет для тестирования совместимости клиентского браузера с BBB. apt-get -y install bbb-check # Выполняем чистый перезапуск сервера BigBlueButton. bbb-conf —clean

Читайте также:
Как установить программу oculus на другой диск

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

Желающим воспользоваться нашими продуктами и рецептами в частности, напоминаем ссылки на VMmanager и DCImanager, а также на документацию по рецептам.

Довольных вам клиентов!

P.S. В статье использована иллюстрация Антона Курятникова.
Ссылка на источник

  • vmmanager
  • dcimanager
  • programming
  • bash scripting
  • программное обеспечение

Источник: habr.com

Деплой Python-приложения на сервер

Деплой ( deploy ) – это процесс публикации (развёртывания) вашего приложения на сервере для того, чтобы оно было доступно в интернете или другой сети.

В этой статье мы рассмотрим туториалы по развертыванию Flask- и Django -приложений на сервере от Timeweb Cloud и облачной платформе PythonAnywhere.

В качестве примера мы будем использовать простейшее приложение, которое выводит на экран приветствие “Hello, world!”

Деплой приложения на сервере

Когда вы разворачиваете приложения на облачном сервере , кроме непосредственного запуска контейнера может потребоваться настройка реверс-прокси ( например nginx) и SSL. Docker — инструмент, который упрощает создание, развертывание и запуск приложений с использованием контейнеров.

Контейнер docker — это набор зависимостей и кода, организованный в виде программного обеспечения, которое позволяет приложениям быстро и эффективно работать в различных вычислительных средах.

В первую очередь мы устаналиваем Docker с официального сайта.

Приложение Flask

Опубликуем приложение Flask .

Настройка Dockerfile

Создаём файл и называем его Dockerfile. Добавим в него код:

# Docker позволяет наследовать существующие образы, поэтому в качестве базового образа устанавливаем образ Python.
FROM python:3.8-slim-buster

# Меняем рабочую директорию внутри контейнера. Все оставшиеся операции будут запускаться внутри /app контейнера.
WORKDIR /app

# Устанавливаем все зависимости из файла requirements.txt внутри контейнера.
RUN pip install -r requirements.txt

# Копируем все остальные файлы из текущей директории (та, в которой находится файл Dockerfile) в директорию /app внутри образа.
COPY . /app

# Запускаем интерпретатор python
ENTRYPOINT [ «python» ]

# Добавляем список параметров к ENTRYPOINT. для выполнения команды, которая запускает приложение. Это похоже на то, как вы бы запустили его Python на своем терминале, используя команду python name_.py
CMD [«name_app.py» ]

Создание образа контейнера

Создадим образ для только что созданного контейнера:

docker build -t flask-docker .

Запуск контейнера

Для запуска контейнера выполняем код :

docker run -d -p 5000:5000 flask-docker

-d – для запуска контейнера в автономном режиме

-p – для указания порта, который будет открыт

Запустив localhost:5000 в браузере, увидим приложение.

Приложение Django

Деплой Django-приложения на Docker мало чем отличается от деплоя Flask-приложения.

Создадим виртуальное окружение и Dockerfile, в который добавим код:

FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . /app
CMD [«python3», «manage.py», «runserver», «0.0.0.0:5000»]
venv

Создадим образ контейнера и запустим контейнер, используя команды build и run:

docker build —tag django-docker .
docker run —publish 8000:8000 django-docker

Запустив в браузере http://localhost:5000/, увидим приложение.

Деплой на облачной платформе PythonAnywhere

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

Установка Git и создание Git-репозитория

Вначале необходимо подготовить проект для Github. В своей учетной записи Github создайте новый репозиторий во вкладке Repositories. Назовите его по своему усмотрению и нажмите Create repository.

Дальше вам нужно подключить проект к Github с помощью Git. Установить Git можно с официального сайта git-scm.com .

Создадим локальный репозиторий на нашем компьютере. Внутри рабочего каталога вашего проекта (там, где находится manage.py) в консоли запускаем команду:

git init

Она инициализирует новый репозиторий git для вашего проекта.

Создание файла .gitignore

Необходимо создать файл в корневом каталоге проекта с именем .gitignore , который используется для указания git, какие файлы и папки игнорировать. Откройте редактор и внесите:

*.log
*.pot
*.pyc
__pycache__/
db.sqlite3
db.sqlite3-journal
media
static

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru