Добавить в корзинуПозвонить
Найти в Дзене

Подготовка сервера. OpenAgro

Первый сервер для разработки построен на базе orange pi 3 LTS. Характеристики: В качестве ОС используется armbian (debian 10) upd: ведется перенос сервера "в облако". Возможны изменения, неточности. Установка сервера Создаем и переходим в папку на нашем сервере:
mkdir /mnt/hdd1/OpenAgro
cd /mnt/hdd1/OpenAgro upd: В дальнейшей будет использоваться структура хранения файлов app/*nameapp*/server
app/*nameapp*/client Для серверной части нам понадобится python. По необходимости, устанавливаем python, виртуальное окружение и необходимые дополнения. apt install python3
apt-get install python3-venv Переходим в папку с сервером cd app/*nameapp*/server Инициализируем и активируем виртуальную среду:
python3 -m venv venv
Создастся папка venv в директории /mnt/hdd1/OpenAgro/server
Активируем:
source venv/bin/activate Далее работаем в виртуальном окружении.
Устанавливаем fastapi uvicorn gunicorn и зависимости приложения. pip install fastapi uvicorn gunicorn Выходим из окружения python: deactiva
Оглавление

Первый сервер для разработки построен на базе orange pi 3 LTS. Характеристики:

  1. Процессор 4 х 1,8 Ггц
  2. 2 Gb ОЗУ
  3. 8 Gb eMMC памяти
  4. WI-FI, bluetooth, ethernet, ...

В качестве ОС используется armbian (debian 10)

upd: ведется перенос сервера "в облако". Возможны изменения, неточности.

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

Создаем и переходим в папку на нашем сервере:
mkdir /mnt/hdd1/OpenAgro
cd /mnt/hdd1/OpenAgro

upd: В дальнейшей будет использоваться структура хранения файлов app/*nameapp*/server
app
/*nameapp*/client

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

apt install python3
apt-get install python3-venv

Переходим в папку с сервером

cd app/*nameapp*/server

Инициализируем и активируем виртуальную среду:
python3 -m venv venv
Создастся папка venv в директории /mnt/hdd1/OpenAgro/server
Активируем:
source venv/bin/activate

(Пример)
(Пример)

Далее работаем в виртуальном окружении.
Устанавливаем
fastapi uvicorn gunicorn и зависимости приложения.

pip install fastapi uvicorn gunicorn

Выходим из окружения python:

deactivate

Создание системной службы для управления приложением FastAPI

Переходим в директорию служб

cd /etc/systemd/system/

создаем новый файл:

nano openAgro.service

Добавляем содержимое:

[Unit]
Description= OpenAgro
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/home/app/map/
ExecStart=/home/app/map/server/venv/bin/gunicorn -c gunicorn_conf.py main:app

[Install]
WantedBy=multi-user.target

Создаем конфигурационный файл gunicorn_conf.py в папке с сервером

# gunicorn_conf.py
from multiprocessing import cpu_count
bind = "127.0.0.1:8000"
# Worker Options
workers = cpu_count() + 1
worker_class = 'uvicorn.workers.UvicornWorker'
# Logging Options
loglevel = 'debug'
accesslog = '/mnt/hdd1/OpenAgro/access_log'
errorlog =  '/mnt/hdd1/OpenAgro/error_log'

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

systemctl start openAgro.service
systemctl restart openAgro.service
systemctl status openAgro.service
systemctl stop openAgro.service

Могут сыпаться ошибки. Тогда необходимо в окружение python добавить необходимые зависимости (пакеты). Ошибки смотреть в логах.

NGINX

В качестве прокси сервера используется NGINX.

Добавляем сервис в NGINX (server)

server {
server_name agro.ardbot.ru;
listen      443 ssl;
ssl_certificate /etc/ssl/ardbot.ru/ardbot.ru.crt;
ssl_certificate_key /etc/ssl/ardbot.ru/ardbot.ru.key;
location / {
proxy_pass  http://127.0.0.1:8000;
proxy_read_timeout     60;
proxy_connect_timeout  60;
proxy_redirect         off; }

Статичные файлы добавляем в NGINX отдельно. Это необходимо для разграничения функционала и автономной работы (без интернета) клиента.