Перейти до вмісту

Розгортання системи K2 ERP Python для розробників: відмінності між версіями

Матеріал з K2 ERP Wiki
Розгортання K2 ERP для розробників Python
 
Немає опису редагування
 
Рядок 1: Рядок 1:
'''Розгортання системи K2 ERP Python для розробників''' — інструкція з локального розгортання робочого проєкту [[K2 Cloud ERP|K2 ERP]], підключення розробника, налаштування PyCharm, Git, компонентів, сервера оновлень і процесу публікації нових версій компонент.
{{DISPLAYTITLE:Розгортання системи K2 ERP Python для розробників}}


== Розгортання локального робочого проєкту ==
'''Розгортання системи K2 ERP Python для розробників''' — це інструкція з локального запуску робочого проєкту [[K2 ERP]], підключення середовища розробки, налаштування Git, роботи з компонентами та публікації оновлень.
Розгортання локально робочого проекту K2 ERP та підключення до нього розробника


== 1. Копіювання існуючого проекту по ftp, перший запуск ==
Документ призначений для розробників, які підключаються до Python-версії K2 ERP, працюють із компонентами системи, вносять зміни в код і передають нові версії на сервер оновлень.


* копіюєм з віддаленого сервера існуючий проект по ftp
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
'''Коротко.''' Щоб почати роботу, потрібно скопіювати проєкт, виконати первинне налаштування через <code>first_run</code>, запустити систему локально, підключити PyCharm, налаштувати Git і працювати з компонентами через репозиторії або скрипт <code>auto_update</code>.
</div>
 
__TOC__
 
== Загальна схема роботи ==
 
Розгортання локального середовища K2 ERP складається з кількох основних етапів:
 
# копіювання робочого проєкту з віддаленого сервера;
# первинне налаштування локального середовища;
# запуск системи;
# відкриття проєкту в PyCharm;
# налаштування Python Interpreter;
# встановлення та налаштування Git;
# підключення репозиторіїв компонент;
# коміт і публікація змін;
# підготовка компонент до сервера оновлень;
# тестування на тестових доменах.
 
== 1. Копіювання проєкту і перший запуск ==
 
Спочатку потрібно скопіювати існуючий робочий проєкт K2 ERP з віддаленого сервера по FTP.
 
Після копіювання потрібно перейти в каталог проєкту:


* переходимо в каталог /K2CloudERP і запускаємо файл first_run для налаштування параметрів віртуального середовища в поточному локальному розташуванні командою:
<pre>
<pre>
bash first_run.sh - для Linux
/K2CloudERP
./first_run.bat - для Windows
</pre>
</pre>


* переходимо в файл налаштувань /K2CloudERP/cfg/k2/k2/k2cfg.py і змінюємо там domain_protocol з https на http
У цьому каталозі запускається файл первинного налаштування. Він адаптує віртуальне середовище до поточного локального розташування проєкту.
 
=== Linux ===


* запускаємо додаток:
<pre>
<pre>
bash run.sh - для Linux
bash first_run.sh
./run.bat - для Windows
</pre>
</pre>


== 2. Встановлення, середовища розробки Pycharm та відкриття проекту: ==
=== Windows ===


=== для Linux ===
<pre>
./first_run.bat
</pre>
 
Після цього потрібно відкрити файл налаштувань:
 
<pre>
/K2CloudERP/cfg/k2/k2/k2cfg.py
</pre>
 
Для локального запуску змінити параметр:
 
<pre>
domain_protocol = "https"
</pre>
 
на:
 
<pre>
domain_protocol = "http"
</pre>
 
Після налаштування можна запускати застосунок.
 
=== Linux ===
 
<pre>
bash run.sh
</pre>
 
=== Windows ===
 
<pre>
./run.bat
</pre>
 
<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;">
'''Важливо.''' Для локальної розробки потрібно перевірити, що <code>domain_protocol</code> змінено з <code>https</code> на <code>http</code>. Інакше локальний запуск може працювати некоректно.
</div>
 
== 2. Встановлення PyCharm ==
 
Для розробки використовується середовище '''PyCharm'''.
 
Можна використовувати PyCharm Community або іншу редакцію, яка підходить для роботи з Python-проєктами.
 
=== Встановлення PyCharm у Linux через snap ===


* встановлення через snap
<pre>
<pre>
sudo rm /etc/apt/preferences.d/nosnap.pref
sudo rm /etc/apt/preferences.d/nosnap.pref
Рядок 35: Рядок 102:
</pre>
</pre>


* встановлення через завантаження архіву з сайту
=== Встановлення PyCharm у Linux з архіву ===
 
Завантажити PyCharm можна з офіційної сторінки:


<pre>
https://www.jetbrains.com/pycharm/download/?section=linux
https://www.jetbrains.com/pycharm/download/?section=linux
</pre>


розпаковуємо архів, переходимо в папку bin і запускаємо<pre>
Після завантаження потрібно розпакувати архів, перейти в каталог <code>bin</code> і запустити:
 
<pre>
./pycharm.sh
./pycharm.sh
</pre>якщо отримали помилку встановлюємо JRE/JDK командами:<pre>
</pre>
 
Якщо під час запуску виникає помилка, потрібно встановити JRE/JDK:
 
<pre>
sudo apt update
sudo apt update
sudo apt install default-jdk
sudo apt install default-jdk
</pre>
</pre>


=== для Windows ===
=== Встановлення PyCharm у Windows ===
 
Завантажити PyCharm можна з офіційної сторінки:
 
<pre>
https://www.jetbrains.com/pycharm/download/?section=windows
</pre>
 
Після завантаження потрібно запустити інсталятор і встановити середовище розробки згідно з інструкціями майстра встановлення.
 
== 3. Відкриття проєкту в PyCharm ==
 
Після встановлення PyCharm потрібно відкрити локально скопійований проєкт K2 ERP.
 
У PyCharm потрібно налаштувати Python Interpreter для поточного проєкту.
 
Порядок дій:
 
# відкрити проєкт у PyCharm;
# у правому нижньому куті вибрати '''Python Interpreter''';
# натиснути '''Add New Interpreter''';
# у полі '''Location''' вказати шлях до локальної папки <code>venv</code>;
# у полі '''Base Interpreter''' вказати шлях до виконуваного Python-файлу з поточного віртуального середовища.
 
Приклад шляху:
 
<pre>
../K2CloudERP/venv/bin/python3.12
</pre>
 
Для Windows шлях може мати вигляд:


=== Завантаження архіву ===
<pre>
завантажуємо архів https://www.jetbrains.com/pycharm/download/?section=windows
..\K2CloudERP\venv\Scripts\python.exe
</pre>


розпаковуємо архів, запускаємо файл встановленя і встановлюємо згідно інструкцій
Після налаштування інтерпретатора проєкт можна запускати в режимі debug або з консолі PyCharm.


* відкриваємо середовище розробки Pycharm,
=== Запуск з консолі PyCharm ===


* відкриваємо поточний завантажений проект та налаштовуємо змінне середовище для поточного проекту:
Linux:


в правому нижньому куті вибираємо Python Interpreter --> Add new Interpreter -->
<pre>
bash run.sh
</pre>


у полі locations додаємо шлях до поточної папки venv
Windows:


у полі Base Interpreter додаємо шлях до поточного виконуваного Python файлу (Пр: ../K2CloudERP/venv/bin.python3.12.exe)
<pre>
./run.bat
</pre>
 
=== Ручна активація віртуального середовища ===


* запускаємо проект в дебаг режимі (кнопка в правому верхньому куті)
Linux:


* запускаємо проект з консолі Pycharm командою:
<pre>
<pre>
bash run.sh - для Linux
source venv/bin/activate
./run.bat - для Windows
</pre>
</pre>


* активація віртуального середовища вручну
Windows:
 
<pre>
<pre>
source venv/bin/activate - для Linux
.\venv\Scripts\activate
.\venv\Scripts\activate - для Windows
</pre>
</pre>


== 3. Встановлення та налаштування git ==
== 4. Встановлення Git ==


* встановлення
Git потрібен для роботи з репозиторіями компонент K2 ERP, отримання оновлень, комітів і публікації змін.
 
=== Linux ===


=== для Linux ===
<pre>
<pre>
sudo apt update
sudo apt update
Рядок 87: Рядок 200:
</pre>
</pre>


=== для Windows ===
=== Windows ===
завантажуємо архів https://git-scm.com/downloads/win розпаковуємо архів, запускаємо файл встановленя і встановлюємо згідно інструкцій


* налалштування git
Завантажити Git можна зі сторінки:
 
<pre>
https://git-scm.com/downloads/win
</pre>
 
Після завантаження потрібно запустити інсталятор і встановити Git згідно з інструкціями.
 
== 5. Базове налаштування Git ==
 
Після встановлення Git потрібно вказати ім’я користувача та email.


=== налаштування користувача ===
<pre>
<pre>
git config --global user.name "Ваше Ім'я"
git config --global user.name "Ваше Ім'я"
Рядок 98: Рядок 219:
</pre>
</pre>


=== авторизація з допомогою логіна і пароля ===
== 6. Налаштування SSH-ключа ==


=== авторизація через ssh ===
Для роботи з віддаленими репозиторіями може використовуватися SSH-авторизація.
 
Створення SSH-ключа:


=== Налаштування SSH ключа ===
<pre>
<pre>
ssh-keygen -t rsa -b 4096 -C "ваша_електронна_пошта@example.com"
ssh-keygen -t rsa -b 4096 -C "ваша_електронна_пошта@example.com"
</pre>
Запуск ssh-agent:
<pre>
eval "$(ssh-agent -s)"
eval "$(ssh-agent -s)"
</pre>
Додавання ключа:
<pre>
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa
</pre>
Перегляд публічного ключа:
<pre>
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub
</pre>копіюєм отриманий ключ і вставляємо у віддалений репозиторій
</pre>
 
Отриманий публічний ключ потрібно скопіювати та додати у віддалений Git-репозиторій.
 
<div style="border:2px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
'''Практична порада.''' Для стабільної роботи з Git краще налаштувати SSH-доступ один раз і далі працювати з репозиторіями без постійного введення логіна та пароля.
</div>
 
== 7. Підключення компонент через auto_update ==
 
Для роботи зі списком компонент можна використовувати скрипт <code>auto_update</code>.
 
Каталог зі скриптом потрібно скопіювати в корінь проєкту на рівень із файлом:
 
<pre>
app.py
</pre>
 
Репозиторій скрипта:
 
<pre>
https://git.corp2.eu/k2erp/python/k2/base/client/auto_update
</pre>
 
Після копіювання потрібно перейти в каталог:


== 4. підключаємо віддалений репозиторій git для певної компоненти або списку компонент ==
<pre>
для списку компонент (скрипт auto_update)
копіюєм каталог із скриптом і вставляємо в корінь проекту на рівні з виконуваним файлом app.py https://git.corp2.eu/k2erp/python/k2/base/client/auto_update
відкриваємо проект в консолі і переходимо в каталог auto_update<pre>
cd auto_update
cd auto_update
</pre>відкриваємо файл settings.py і додаємо в словник ключі з потрібними компонентами (повний список в файлі settings_example.py)
</pre>
 
У файлі:
 
<pre>
settings.py
</pre>
 
потрібно додати в словник ключі потрібних компонент.
 
Повний приклад доступний у файлі:
 
<pre>
settings_example.py
</pre>
 
Для клонування актуальних версій компонент виконується команда:


* виконуємо в консолі команду, для клонування актуальних версій компонент і перейменовування каталогів поточних версій компонент
<pre>
<pre>
python git_cmd.py clone
python git_cmd.py clone
</pre>
</pre>


=== для одної компоненти вручну ===
Ця команда клонує компоненти та перейменовує каталоги поточних версій компонент.
 
== 8. Підключення однієї компоненти вручну ==
 
Якщо потрібно підключити лише одну компоненту вручну, потрібно перейти в каталог потрібної компоненти.
 
Наприклад:


* переходимо в папку необхідної компоненти, наприклад k2site
<pre>
<pre>
cd components/k2site
cd components/k2site
</pre>
</pre>


* ініціалізуєм git в поточній директорії
Ініціалізація Git у поточній директорії:
 
<pre>
<pre>
git init
git init
git checkout -b main (створюємо локальну гілку main і перемикаємось на неї)
</pre>
git checkout master (переключаємось на іншу локальну гілку)
 
Створення локальної гілки <code>main</code> і перемикання на неї:
 
<pre>
git checkout -b main
</pre>
 
Перемикання на іншу локальну гілку, якщо потрібно:
 
<pre>
git checkout master
</pre>
 
Додавання віддаленого репозиторію:
 
<pre>
git remote add origin http://git.corp2.eu/k2erp/python/k2/base/site/k2site.git
git remote add origin http://git.corp2.eu/k2erp/python/k2/base/site/k2site.git
git remote -v (перевірка)
</pre>
</pre>


* отримуємо дані з віддаленого репозиторію але не змінюємо поточну робочу гілку
Перевірка віддаленого репозиторію:
 
<pre>
git remote -v
</pre>
 
Отримання даних із віддаленого репозиторію без зміни поточної гілки:
 
<pre>
<pre>
git fetch origin
git fetch origin
</pre>
</pre>


* отримуємо дані з віддаленого репозиторію з віддаленого репозиторію та автоматично об'єднує їх з поточною локальною гілкою.
Отримання змін і автоматичне об’єднання з локальною гілкою:
 
<pre>
<pre>
git pull origin main
git pull origin main
</pre>
</pre>


* перевіряємо зміни локально скопійованої копії проекту з віддаленим репозиторієм
Перевірка статусу:
 
<pre>
<pre>
git status
git status
</pre>
</pre>


== 5. Комміт змін на віддалений репозиторій git ==
== 9. Коміт змін через auto_update ==
 
Якщо компоненти підключені через <code>auto_update</code>, робота виконується з каталогу:


=== автоматично (скрипт auto_update) ===
<pre>
відкриваємо проект в консолі і переходимо в каталог auto_update<pre>
cd auto_update
cd auto_update
</pre>клонуємо компоненти з віддаленого сервера<pre>
</pre>
 
Клонування компонент:
 
<pre>
python git_cmd.py clone
python git_cmd.py clone
</pre>перевірка статусу
</pre>
python git_cmd.py status
 
коміт змін<pre>
Перевірка статусу:
 
<pre>
python git_cmd.py status
</pre>
 
Коміт змін:
 
<pre>
python git_cmd.py commit
python git_cmd.py commit
</pre>отримуємо зміни з віддаленого сервера<pre>
</pre>
 
Отримання змін із віддаленого сервера:
 
<pre>
python git_cmd.py pull
python git_cmd.py pull
</pre>пушимо зміни на віддалений репозиторій<pre>
</pre>
 
Публікація змін у віддалений репозиторій:
 
<pre>
python git_cmd.py push
python git_cmd.py push
</pre>
</pre>


=== вручну ===
== 10. Коміт змін вручну ==
 
Після внесення змін у коді потрібно перевірити статус:


* після внесених в коді змін перевіряємо їх командою
<pre>
<pre>
git status
git status
</pre>
</pre>


* додаємо зміни командою
Додати зміни:
 
<pre>
<pre>
git add .
git add .
</pre>
</pre>


* комітимо зміни:
Створити коміт:
 
<pre>
<pre>
git commit -m "Назва комміту"
git commit -m "Назва коміту"
</pre>
</pre>


* пушимо зміни на віддалений репозиторій
Відправити зміни у віддалений репозиторій:
 
<pre>
<pre>
git push
git push
</pre>
</pre>


* при подальшій роботі отримуємо зміни з віддаленого репозиторію командою
Під час подальшої роботи потрібно регулярно отримувати зміни з віддаленого репозиторію:
 
<pre>
<pre>
git pull
git pull
</pre>
</pre>


== 6. Налаштування завантаження компонент на сервер оновлення ==
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Важливо.''' Перед комітом потрібно перевірити <code>git status</code>, щоб випадково не відправити службові файли, локальні налаштування, тимчасові файли або зайві каталоги.
</div>
 
== 11. Налаштування завантаження компонент на сервер оновлень ==
 
Для публікації компонент на сервер оновлень використовується конфігурація в каталозі:
 
<pre>
builder/config
</pre>
 
У файлі:
 
<pre>
component-list.txt
</pre>
 
потрібно вказати список компонент, які будуть завантажуватися на сервер оновлень. Кожна компонента записується з нового рядка.


* відкриваємо папку builder/config
Приклад:


* в файлі component-list.txt додаємо список компонент, які будемо завантажувати на сервер оновлення, кожна компонента з нового рядка
<pre>
<pre>
components/k2update
components/k2update
Рядок 208: Рядок 453:
</pre>
</pre>


* в папці ignore створюємо файл з назвою компоненти і додаємо файли і папки, які не потрібно завантажувати на сервер оновлення
У каталозі:
 
<pre>
builder/config/ignore
</pre>
 
потрібно створити файл із назвою компоненти та вказати файли або папки, які не потрібно завантажувати.


( приклад:<pre>
Приклад файлу:
 
<pre>
k2site.txt
k2site.txt
</pre>
Приклад вмісту:
<pre>
__pycache__
__pycache__
.gitignore
.gitignore
.git
.git
ej2.min.js
ej2.min.js
</pre>)
</pre>


* в файлі token.txt додаємо токен доступу до сервера оновлення
У файлі:


== 7. Завантаження нової версії компоненти в систему оновлення ==
<pre>
Для створення нової версії компоненти (stable або beta (testing) версії):
token.txt
</pre>
 
потрібно вказати токен доступу до сервера оновлень.
 
== 12. Підготовка нової версії компоненти ==
 
Для створення нової версії компоненти потрібно змінити версію у файлі:
 
<pre>
setup.py
</pre>
 
Файл знаходиться в корені каталогу компоненти.
 
Приклад:


* змінюємо версію в файлі setup.py в корні каталогу компоненти (рядок 5 поле version, наприклад version=2.0.4.43, version_type='stable' (testing))
<pre>
version = "2.0.4.43"
version_type = "stable"
</pre>


* додаємо опис змін в в файлі history.txt в корні каталогу компоненти (1 рядок, наприклад 2.0.4.43 - додавання додаткового поля в форму реєстрації)
Для тестової версії можна використовувати:
 
<pre>
version_type = "testing"
</pre>
 
Після зміни версії потрібно додати опис змін у файл:
 
<pre>
history.txt
</pre>
 
Файл також знаходиться в корені каталогу компоненти.
 
Приклад рядка:
 
<pre>
2.0.4.43 - додавання додаткового поля у форму реєстрації
</pre>
 
== 13. Завантаження компоненти в систему оновлення ==
 
Після підготовки версії потрібно перейти в корінь застосунку, на рівень із файлом:
 
<pre>
app.py
</pre>
 
Приклад переходу:


* переходимо в корінь додатку, на рівні з виконуваним файлом app.py:
<pre>
<pre>
cd k2
cd k2
</pre>
</pre>


* завантажуємо додані в файлі builder/config/component-list.txt компоненти командою:
Завантаження компонент, зазначених у файлі <code>builder/config/component-list.txt</code>, виконується командою:
 
<pre>
<pre>
python k2update_push.py
python k2update_push.py
</pre>
</pre>


== 8. Оновлюємо змінені версії компонент на тестових доменах deb1-deb3 та тестуємо функціонал. ==
== 14. Тестування на deb1–deb3 ==
 
Після завантаження нової версії потрібно оновити змінені компоненти на тестових доменах:
 
<pre>
deb1
deb2
deb3
</pre>
 
Після оновлення необхідно перевірити функціонал, який був змінений або залежить від оновленої компоненти.
 
Тестування має підтвердити, що:
 
* компонента оновилася коректно;
* новий функціонал працює;
* старий функціонал не зламався;
* помилки не відтворюються;
* зміни можна передавати далі.


== Контрольний чек-лист розгортання ==
== Контрольний чек-лист розгортання ==


# Проєкт скопійовано з віддаленого сервера по FTP.
{| class="wikitable" style="width:100%;"
# Виконано <code>first_run.sh</code> або <code>first_run.bat</code>.
! №
# У файлі <code>/K2CloudERP/cfg/k2/k2/k2cfg.py</code> для локального запуску змінено <code>domain_protocol</code> з <code>https</code> на <code>http</code>.
! Перевірка
# Проєкт запускається через <code>run.sh</code> або <code>run.bat</code>.
|-
# У PyCharm налаштовано Python Interpreter на локальне віртуальне середовище <code>venv</code>.
| 1
# Встановлено та налаштовано Git.
| Проєкт скопійовано з віддаленого сервера по FTP
# Підключено віддалений репозиторій потрібної компоненти або список компонент через <code>auto_update</code>.
|-
# Перевірено <code>git status</code>, <code>git pull</code>, <code>git push</code>.
| 2
# Налаштовано <code>builder/config/component-list.txt</code>, <code>ignore</code> та <code>token.txt</code> для сервера оновлень.
| Виконано <code>first_run.sh</code> або <code>first_run.bat</code>
# Оновлено версію компоненти в <code>setup.py</code> і опис змін у <code>history.txt</code>.
|-
# Виконано <code>python k2update_push.py</code>.
| 3
# Оновлено компоненти на тестових доменах <code>deb1</code>–<code>deb3</code> та перевірено функціонал.
| У <code>k2cfg.py</code> змінено <code>domain_protocol</code> з <code>https</code> на <code>http</code>
|-
| 4
| Проєкт запускається через <code>run.sh</code> або <code>run.bat</code>
|-
| 5
| У PyCharm налаштовано Python Interpreter на локальне <code>venv</code>
|-
| 6
| Встановлено та налаштовано Git
|-
| 7
| Налаштовано SSH або інший спосіб авторизації в репозиторії
|-
| 8
| Підключено потрібні компоненти вручну або через <code>auto_update</code>
|-
| 9
| Перевірено роботу <code>git status</code>, <code>git pull</code>, <code>git push</code>
|-
| 10
| Налаштовано <code>builder/config/component-list.txt</code>
|-
| 11
| Налаштовано файли <code>ignore</code> для компонент
|-
| 12
| Додано токен у <code>token.txt</code>
|-
| 13
| Оновлено версію компоненти в <code>setup.py</code>
|-
| 14
| Додано опис змін у <code>history.txt</code>
|-
| 15
| Виконано <code>python k2update_push.py</code>
|-
| 16
| Оновлено компоненти на <code>deb1</code>–<code>deb3</code>
|-
| 17
| Перевірено функціонал після оновлення
|}
 
== Типові помилки ==
 
{| class="wikitable" style="width:100%;"
! Помилка
! Причина
! Що перевірити
|-
| Проєкт не запускається локально
| Не виконано <code>first_run</code> або неправильно налаштоване середовище
| Повторити <code>first_run</code>, перевірити <code>venv</code>
|-
| Локальний запуск відкривається через HTTPS
| Не змінено <code>domain_protocol</code>
| Перевірити <code>k2cfg.py</code>
|-
| PyCharm не бачить залежності
| Не вибрано правильний Python Interpreter
| Перевірити шлях до <code>venv</code>
|-
| Git не пушить зміни
| Не налаштовано авторизацію або немає прав
| Перевірити SSH-ключ, remote URL і доступи
|-
| На сервер оновлень потрапляють зайві файли
| Не налаштовано <code>ignore</code>
| Перевірити файл компоненти в <code>builder/config/ignore</code>
|-
| Компонента не оновлюється на тестовому домені
| Не змінено версію або не завантажено оновлення
| Перевірити <code>setup.py</code>, <code>history.txt</code>, <code>k2update_push.py</code>
|}
 
== Коротко ==
 
{| class="wikitable" style="width:100%;"
! Питання
! Відповідь
|-
| З чого почати?
| Скопіювати проєкт, виконати <code>first_run</code>, змінити <code>domain_protocol</code> і запустити <code>run</code>
|-
| Яке середовище розробки використовується?
| PyCharm
|-
| Де налаштовується локальний Python?
| У Python Interpreter через локальний <code>venv</code>
|-
| Як працювати з компонентами?
| Через <code>auto_update</code> або вручну через Git
|-
| Як публікувати зміни?
| Через Git-коміт і <code>python k2update_push.py</code>
|-
| Де тестувати оновлення?
| На тестових доменах <code>deb1</code>, <code>deb2</code>, <code>deb3</code>
|}


== Див. також ==
== Див. також ==
Рядок 262: Рядок 684:
* [[Git]]
* [[Git]]
* [[Розгортання системи K2 Cloud ERP PHP|Розгортання системи K2 ERP PHP]]
* [[Розгортання системи K2 Cloud ERP PHP|Розгортання системи K2 ERP PHP]]
* [[Розгортання K2 ERP]]
* [[Компоненти K2 ERP]]
* [[Сервер оновлень K2 ERP]]
[[Категорія:K2 ERP]]
[[Категорія:K2 ERP Python]]
[[Категорія:Python]]
[[Категорія:PyCharm]]
[[Категорія:Git]]
[[Категорія:Розгортання K2 ERP]]
[[Категорія:Розробка K2 ERP]]
[[Категорія:Компоненти K2 ERP]]
[[Категорія:Сервер оновлень K2 ERP]]
[[Категорія:Корпоративна Wiki]]

Поточна версія на 17:50, 1 травня 2026


Розгортання системи K2 ERP Python для розробників — це інструкція з локального запуску робочого проєкту K2 ERP, підключення середовища розробки, налаштування Git, роботи з компонентами та публікації оновлень.

Документ призначений для розробників, які підключаються до Python-версії K2 ERP, працюють із компонентами системи, вносять зміни в код і передають нові версії на сервер оновлень.

Коротко. Щоб почати роботу, потрібно скопіювати проєкт, виконати первинне налаштування через first_run, запустити систему локально, підключити PyCharm, налаштувати Git і працювати з компонентами через репозиторії або скрипт auto_update.

Загальна схема роботи

Розгортання локального середовища K2 ERP складається з кількох основних етапів:

  1. копіювання робочого проєкту з віддаленого сервера;
  2. первинне налаштування локального середовища;
  3. запуск системи;
  4. відкриття проєкту в PyCharm;
  5. налаштування Python Interpreter;
  6. встановлення та налаштування Git;
  7. підключення репозиторіїв компонент;
  8. коміт і публікація змін;
  9. підготовка компонент до сервера оновлень;
  10. тестування на тестових доменах.

1. Копіювання проєкту і перший запуск

Спочатку потрібно скопіювати існуючий робочий проєкт K2 ERP з віддаленого сервера по FTP.

Після копіювання потрібно перейти в каталог проєкту:

/K2CloudERP

У цьому каталозі запускається файл первинного налаштування. Він адаптує віртуальне середовище до поточного локального розташування проєкту.

Linux

bash first_run.sh

Windows

./first_run.bat

Після цього потрібно відкрити файл налаштувань:

/K2CloudERP/cfg/k2/k2/k2cfg.py

Для локального запуску змінити параметр:

domain_protocol = "https"

на:

domain_protocol = "http"

Після налаштування можна запускати застосунок.

Linux

bash run.sh

Windows

./run.bat

Важливо. Для локальної розробки потрібно перевірити, що domain_protocol змінено з https на http. Інакше локальний запуск може працювати некоректно.

2. Встановлення PyCharm

Для розробки використовується середовище PyCharm.

Можна використовувати PyCharm Community або іншу редакцію, яка підходить для роботи з Python-проєктами.

Встановлення PyCharm у Linux через snap

sudo rm /etc/apt/preferences.d/nosnap.pref
sudo apt update
sudo apt install snapd
sudo snap install pycharm-community --classic
pycharm-community

Встановлення PyCharm у Linux з архіву

Завантажити PyCharm можна з офіційної сторінки:

https://www.jetbrains.com/pycharm/download/?section=linux

Після завантаження потрібно розпакувати архів, перейти в каталог bin і запустити:

./pycharm.sh

Якщо під час запуску виникає помилка, потрібно встановити JRE/JDK:

sudo apt update
sudo apt install default-jdk

Встановлення PyCharm у Windows

Завантажити PyCharm можна з офіційної сторінки:

https://www.jetbrains.com/pycharm/download/?section=windows

Після завантаження потрібно запустити інсталятор і встановити середовище розробки згідно з інструкціями майстра встановлення.

3. Відкриття проєкту в PyCharm

Після встановлення PyCharm потрібно відкрити локально скопійований проєкт K2 ERP.

У PyCharm потрібно налаштувати Python Interpreter для поточного проєкту.

Порядок дій:

  1. відкрити проєкт у PyCharm;
  2. у правому нижньому куті вибрати Python Interpreter;
  3. натиснути Add New Interpreter;
  4. у полі Location вказати шлях до локальної папки venv;
  5. у полі Base Interpreter вказати шлях до виконуваного Python-файлу з поточного віртуального середовища.

Приклад шляху:

../K2CloudERP/venv/bin/python3.12

Для Windows шлях може мати вигляд:

..\K2CloudERP\venv\Scripts\python.exe

Після налаштування інтерпретатора проєкт можна запускати в режимі debug або з консолі PyCharm.

Запуск з консолі PyCharm

Linux:

bash run.sh

Windows:

./run.bat

Ручна активація віртуального середовища

Linux:

source venv/bin/activate

Windows:

.\venv\Scripts\activate

4. Встановлення Git

Git потрібен для роботи з репозиторіями компонент K2 ERP, отримання оновлень, комітів і публікації змін.

Linux

sudo apt update
sudo apt install git

Windows

Завантажити Git можна зі сторінки:

https://git-scm.com/downloads/win

Після завантаження потрібно запустити інсталятор і встановити Git згідно з інструкціями.

5. Базове налаштування Git

Після встановлення Git потрібно вказати ім’я користувача та email.

git config --global user.name "Ваше Ім'я"
git config --global user.email "ваша_електронна_пошта@example.com"

6. Налаштування SSH-ключа

Для роботи з віддаленими репозиторіями може використовуватися SSH-авторизація.

Створення SSH-ключа:

ssh-keygen -t rsa -b 4096 -C "ваша_електронна_пошта@example.com"

Запуск ssh-agent:

eval "$(ssh-agent -s)"

Додавання ключа:

ssh-add ~/.ssh/id_rsa

Перегляд публічного ключа:

cat ~/.ssh/id_rsa.pub

Отриманий публічний ключ потрібно скопіювати та додати у віддалений Git-репозиторій.

Практична порада. Для стабільної роботи з Git краще налаштувати SSH-доступ один раз і далі працювати з репозиторіями без постійного введення логіна та пароля.

7. Підключення компонент через auto_update

Для роботи зі списком компонент можна використовувати скрипт auto_update.

Каталог зі скриптом потрібно скопіювати в корінь проєкту на рівень із файлом:

app.py

Репозиторій скрипта:

https://git.corp2.eu/k2erp/python/k2/base/client/auto_update

Після копіювання потрібно перейти в каталог:

cd auto_update

У файлі:

settings.py

потрібно додати в словник ключі потрібних компонент.

Повний приклад доступний у файлі:

settings_example.py

Для клонування актуальних версій компонент виконується команда:

python git_cmd.py clone

Ця команда клонує компоненти та перейменовує каталоги поточних версій компонент.

8. Підключення однієї компоненти вручну

Якщо потрібно підключити лише одну компоненту вручну, потрібно перейти в каталог потрібної компоненти.

Наприклад:

cd components/k2site

Ініціалізація Git у поточній директорії:

git init

Створення локальної гілки main і перемикання на неї:

git checkout -b main

Перемикання на іншу локальну гілку, якщо потрібно:

git checkout master

Додавання віддаленого репозиторію:

git remote add origin http://git.corp2.eu/k2erp/python/k2/base/site/k2site.git

Перевірка віддаленого репозиторію:

git remote -v

Отримання даних із віддаленого репозиторію без зміни поточної гілки:

git fetch origin

Отримання змін і автоматичне об’єднання з локальною гілкою:

git pull origin main

Перевірка статусу:

git status

9. Коміт змін через auto_update

Якщо компоненти підключені через auto_update, робота виконується з каталогу:

cd auto_update

Клонування компонент:

python git_cmd.py clone

Перевірка статусу:

python git_cmd.py status

Коміт змін:

python git_cmd.py commit

Отримання змін із віддаленого сервера:

python git_cmd.py pull

Публікація змін у віддалений репозиторій:

python git_cmd.py push

10. Коміт змін вручну

Після внесення змін у коді потрібно перевірити статус:

git status

Додати зміни:

git add .

Створити коміт:

git commit -m "Назва коміту"

Відправити зміни у віддалений репозиторій:

git push

Під час подальшої роботи потрібно регулярно отримувати зміни з віддаленого репозиторію:

git pull

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

11. Налаштування завантаження компонент на сервер оновлень

Для публікації компонент на сервер оновлень використовується конфігурація в каталозі:

builder/config

У файлі:

component-list.txt

потрібно вказати список компонент, які будуть завантажуватися на сервер оновлень. Кожна компонента записується з нового рядка.

Приклад:

components/k2update
components/k2adm
components/k2site

У каталозі:

builder/config/ignore

потрібно створити файл із назвою компоненти та вказати файли або папки, які не потрібно завантажувати.

Приклад файлу:

k2site.txt

Приклад вмісту:

__pycache__
.gitignore
.git
ej2.min.js

У файлі:

token.txt

потрібно вказати токен доступу до сервера оновлень.

12. Підготовка нової версії компоненти

Для створення нової версії компоненти потрібно змінити версію у файлі:

setup.py

Файл знаходиться в корені каталогу компоненти.

Приклад:

version = "2.0.4.43"
version_type = "stable"

Для тестової версії можна використовувати:

version_type = "testing"

Після зміни версії потрібно додати опис змін у файл:

history.txt

Файл також знаходиться в корені каталогу компоненти.

Приклад рядка:

2.0.4.43 - додавання додаткового поля у форму реєстрації

13. Завантаження компоненти в систему оновлення

Після підготовки версії потрібно перейти в корінь застосунку, на рівень із файлом:

app.py

Приклад переходу:

cd k2

Завантаження компонент, зазначених у файлі builder/config/component-list.txt, виконується командою:

python k2update_push.py

14. Тестування на deb1–deb3

Після завантаження нової версії потрібно оновити змінені компоненти на тестових доменах:

deb1
deb2
deb3

Після оновлення необхідно перевірити функціонал, який був змінений або залежить від оновленої компоненти.

Тестування має підтвердити, що:

  • компонента оновилася коректно;
  • новий функціонал працює;
  • старий функціонал не зламався;
  • помилки не відтворюються;
  • зміни можна передавати далі.

Контрольний чек-лист розгортання

Перевірка
1 Проєкт скопійовано з віддаленого сервера по FTP
2 Виконано first_run.sh або first_run.bat
3 У k2cfg.py змінено domain_protocol з https на http
4 Проєкт запускається через run.sh або run.bat
5 У PyCharm налаштовано Python Interpreter на локальне venv
6 Встановлено та налаштовано Git
7 Налаштовано SSH або інший спосіб авторизації в репозиторії
8 Підключено потрібні компоненти вручну або через auto_update
9 Перевірено роботу git status, git pull, git push
10 Налаштовано builder/config/component-list.txt
11 Налаштовано файли ignore для компонент
12 Додано токен у token.txt
13 Оновлено версію компоненти в setup.py
14 Додано опис змін у history.txt
15 Виконано python k2update_push.py
16 Оновлено компоненти на deb1deb3
17 Перевірено функціонал після оновлення

Типові помилки

Помилка Причина Що перевірити
Проєкт не запускається локально Не виконано first_run або неправильно налаштоване середовище Повторити first_run, перевірити venv
Локальний запуск відкривається через HTTPS Не змінено domain_protocol Перевірити k2cfg.py
PyCharm не бачить залежності Не вибрано правильний Python Interpreter Перевірити шлях до venv
Git не пушить зміни Не налаштовано авторизацію або немає прав Перевірити SSH-ключ, remote URL і доступи
На сервер оновлень потрапляють зайві файли Не налаштовано ignore Перевірити файл компоненти в builder/config/ignore
Компонента не оновлюється на тестовому домені Не змінено версію або не завантажено оновлення Перевірити setup.py, history.txt, k2update_push.py

Коротко

Питання Відповідь
З чого почати? Скопіювати проєкт, виконати first_run, змінити domain_protocol і запустити run
Яке середовище розробки використовується? PyCharm
Де налаштовується локальний Python? У Python Interpreter через локальний venv
Як працювати з компонентами? Через auto_update або вручну через Git
Як публікувати зміни? Через Git-коміт і python k2update_push.py
Де тестувати оновлення? На тестових доменах deb1, deb2, deb3

Див. також