From fda1fece49408da6ade5a69574bd76068d5bf788 Mon Sep 17 00:00:00 2001 From: "Galina A. Basargina" Date: Thu, 15 Feb 2024 23:42:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D1=8E=20=D0=BF=D0=BE=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B5=20?= =?UTF-8?q?python=203.6=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=20=D0=B4=D1=80=D0=BE=D0=BD=D0=BE=D0=B2=20(?= =?UTF-8?q?=D0=B8=D0=BD=D0=B0=D1=87=D0=B5=20=D0=BE=D0=BD=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B2=20=D0=BD=D0=BE=D0=B2=D1=8B=D1=85=20Linux=20?= =?UTF-8?q?=D0=B4=D0=B8=D1=81=D1=82=D1=80=D0=B8=D0=B1=D1=83=D1=82=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D1=85)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/INSTALL.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++ server/README.md | 4 ++ 2 files changed, 102 insertions(+) create mode 100644 server/INSTALL.md diff --git a/server/INSTALL.md b/server/INSTALL.md new file mode 100644 index 00000000..818f5354 --- /dev/null +++ b/server/INSTALL.md @@ -0,0 +1,98 @@ +# Подготовка среды и установка сервера в Linux + +Следующая инструкция написана для сборки проекта и для запуска его с помощью Python 3.6. + +К сожалению, инструкция по установке зависимостей из файла [README.md](README.md) с помощью лишь только `pip install` не работает в современных Linux с версиями python значительно выше требуемой 3.6 (например, в Ubuntu 23 стандартным пакетом, на начало 2024 года, является Python 3.11). Проблема возникает с устаревшими зависимостями, например пакет Quamash [не поддерживается](https://pypi.org/project/Quamash/) версиями python выше 3.7. + +Для запуска и сборки сервера нам потребуется [локальная версия](https://www.cherryservers.com/blog/install-python-on-ubuntu#option-2-install-python3-from-source) python 3.6, локальная версия virtual environment и подготовка их к работе по следующей инструкции. Системные файлы Linux трогать не будем, во избежание проблем с совместимостью с другими программами и актуальными пакетами Ubuntu. Соберём комплект в отдельной папке. + +## Сборка Python 3.6 + +Собираем Python 3.6 в Linux из исходных кодов. + +```bash +# переходим в папку, в которой соберём среду для запуска сервера дронов +cd /path/to/your/directory + +# создадим в ней директорию для python3.6 +mkdir python3.6 +cd python3.6 + +# установим зависимости +sudo apt install build-essential software-properties-common libssl-dev \ + libffi-dev python3-dev libgdbm-dev libc6-dev libbz2-dev libsqlite3-dev \ + tk-dev libffi-dev zlib1g-dev + +# скачаем python и соберём его в локальной папке (НЕ СИСТЕМНОЙ!) +# также можно перейти по ссылке https://www.python.org/ftp/python/ и проверить +# более новые версии Python 3.6 (но в Ubuntu 23 сервер запустился в 3.6.15) +wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz +tar -xvf Python-3.6.15.tgz +rm Python-3.6.15.tgz +cd Python-3.6.15 + +# сборка python +./configure --enable-optimizations --prefix=$(realpath ..)/install +make -j $(nproc) +# проверка, что python собрался +./python --version +# установка +make altinstall +# проверка, что python установился в локальную директорию +../install/bin/python3.6 --version +``` + +## Подготовка Python 3.6 Virtual Environment + +Готовим среду для Python, где он будет локально запускаться и где будут расположены все его зависимости, а также пакеты для сервера дронов. + +```bash +# возвращаемся в директорию в которой подготовим venv +# по инструкции выше это была директория /path/to/your/directory +cd .. + +# готовим среду для Python 3.6 в директории .venv +./install/bin/python3.6 -m venv .venv +# проверяем, что и Python и pip запускаются из директории среды +.venv/bin/python3.6 --version +.venv/bin/pip3.6 --version +``` + +## Устанавливаем зависимости для сервера дронов и запускаем его + +По инструкции выше и python 3.6 и среда для его работы уже должны быть подготовлены, а команды проверки версий должны показывать версию Python 3.6. Продолжаем настройку и запуск сервера дронов. + +```bash +# возвращаемся в директорию в которой подготовим .venv +# по инструкции выше это была директория /path/to/your/directory + +# ЛИБО скачиваем и распаковываем сервер дронов из архива +# wget https://github.com/CopterExpress/clever-show/archive/refs/tags/v0.4-alpha.6.tar.gz +# tar -xzvf v0.4-alpha.6.tar.gz + +# ЛИБО скачиваем сервер дронов с помощью git +git clone https://github.com/CopterExpress/clever-show.git clever-show-0.4-alpha.6 + +# переходим в директорию, где расположен сервер дронов +cd clever-show-0.4-alpha.6/server + +# устанавливаем все необходимые зависимости (команда выполняется в директории server!) +../../.venv/bin/pip3.6 install -r requirements.txt + +# запускаем +../../.venv/bin/python3.6 server.py +``` + +## Сформированные файлы + +После выполнения описанных выше действий, у вас будет сформирован комплект программного обеспечения в директории `/path/to/your/directory`: + + * `install/bin/`, `install/lib/` и т.п. - директория с Python 3.6 + * `.venv/` - директория с виртуальной средой для Python 3.6 и с установленными зависимостями сервера + * `clever-show-0.4-alpha.6/` - директория с сервером дронов + * `Python-3.6.15.tgz` и `Python-3.6.15/` - архив и директория в которой выполнялась сборка python из исходных кодов (можно удалить) + * `v0.4-alpha.6.tar.gz` - архив исходных кодов сервера дронов (можно удалить) + +Для запуска Python 3.6 следует пользоваться командой из инструкции выше, либо пользоваться такими путями: + * `/path/to/your/directory/install/bin/python3.6` - путь к программе Python 3.6 + * `/path/to/your/directory/install/bin/pip3.6` - путь к программе pip 3.6 diff --git a/server/README.md b/server/README.md index 83d2bbff..fc37025b 100644 --- a/server/README.md +++ b/server/README.md @@ -15,6 +15,10 @@ Can be used with built-in NTP server or with external package for time synchroni pip3 install -r requirements.txt ``` +## Building Python 3.6 from sources and setup venv + +See manual [Russian](INSTALL.md). + ## Usage ```cmd