HOWTO: Клонування USERSIDE

Материал из WiKi - UserSide
Версия от 19:52, 23 мая 2026; IronBot (обсуждение | вклад) ([IronBot] Fix UK localization text)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

en | uk | ru

Копія системи для тестування або досліджень

Якщо потрібно зробити копію системи, щоб перевірити нову версію перед фактичним оновленням або виконати інші дії, потрібно пройти кілька простих кроків:

  • скопіюйте файли застосунку
cd /var/www/
sudo cp -r userside userside-copy
  • налаштуйте web-сервер для роботи з копією: скопіюйте файл конфігурації, відредагуйте його та перечитайте конфігурацію nginx:
sudo cp /etc/nginx/conf.d/userside.conf /etc/nginx/conf.d/userside-copy.conf
sudo sed -i "s@/var/www/userside/userside3@/var/www/userside-copy/userside3@" "/etc/nginx/conf.d/userside-copy.conf"
sudo sed -i "s@/var/log/nginx/userside@/var/log/nginx/userside-copy@" "/etc/nginx/conf.d/userside-copy.conf"
sudo sed -i "s@старое.доменное.имя@новое.доменное.имя@" "/etc/nginx/conf.d/userside-copy.conf"
sudo systemctl reload nginx
  • скопіюйте базу даних (або створіть нову базу даних і відновіть її з резервної копії):
sudo -u postgres createdb -e --encoding="UTF-8" --locale="ru_RU.UTF-8" --owner=userside --template=userside userside_copy

Якщо база даних копіюється на інший сервер, перед відновленням потрібно створити роль, обов'язково з такою самою назвою, як у дампі:

sudo -u postgres createuser userside -P
  • У версії 3.13 і новіших перейдіть до каталогу з новою копією та відредагуйте змінні середовища у файлі .env так, щоб вони працювали з новою базою даних і з іншою (вільною) базою Redis. В основній інсталяції, найімовірніше, використовується база Redis з номером 0; можна використати одну з інших 15 баз, доступних за замовчуванням. За це відповідають змінні:
US_URL=http://new.domain.name
US_DB_DSN=pgsql:host=localhost;dbname=userside_copy;port=5432
US_REDIS_DB=1
  • Для версій до 3.13 відредагуйте параметри підключення до бази даних у common/config/db.php і URL у userside3/main/config/config.php.
  • У версії 3.16 і новіших потрібно створити додатковий vhost для RabbitMQ, а потім указати його у файлі .env для змінної US_AMQP_DSN. У прикладі нижче як назву нового vhost використано copy (за потреби змініть на зручнішу назву). Спочатку виконайте команду створення vhost, а потім додайте права для користувачів у межах цього vhost:
sudo rabbitmqctl add_vhost copy
sudo rabbitmqctl set_permissions -p "copy" "admin" ".*" ".*" ".*"
sudo rabbitmqctl set_permissions -p "copy" "userside" ".*" ".*" ".*"
sudo rabbitmqctl set_permissions -p "copy" "websock-user" "^erp-stomp:id-.*" "" "^erp-stomp:id-.*"
sudo rabbitmqctl --vhost copy set_user_tags "userside" "monitoring"

Після цього змініть змінну US_AMQP_DSN у файлі .env так:

US_AMQP_DSN=amqp://userside:yourpassword@127.0.0.1:5672/copy
  • У версії 3.16 і новіших також потрібно перестворити venv для мікросервісу poller:
cd /var/www/userside-copy/microservice/poller
sudo rm -rf venv
sudo -H python3 -m venv venv
sudo -H venv/bin/pip install --upgrade -r requirements.txt
  • Також, починаючи з версії 3.16, потрібно скопіювати конфігурацію supervisor для фонових процесів ядра та мікросервісу poller. Зверніть увагу, що до версії 3.18 файл usm_poller.conf називався us-poller-microservice.conf:
sudo cp /etc/supervisor/conf.d/us-core-worker.conf /etc/supervisor/conf.d/us-copy-core-worker.conf
sudo sed -i "s@us-core-worker@us-copy-core-worker@" "/etc/supervisor/conf.d/us-copy-core-worker.conf"
sudo sed -i "s@/var/www/userside/@/var/www/userside-copy/@" "/etc/supervisor/conf.d/us-copy-core-worker.conf"
sudo cp /etc/supervisor/conf.d/usm_poller.conf /etc/supervisor/conf.d/usm_poller_copy.conf
sudo sed -i "s@usm_poller@usm_poller_copy@" "/etc/supervisor/conf.d/usm_poller_copy.conf"
sudo sed -i "s@/var/www/userside/@/var/www/userside-copy/@" "/etc/supervisor/conf.d/usm_poller_copy.conf"
sudo systemctl restart supervisor
  • після цього копію можна відкрити в браузері.