HOWTO: Клонування USERSIDE
Копія системи для тестування або досліджень
Якщо потрібно зробити копію системи, щоб перевірити нову версію перед фактичним оновленням або виконати інші дії, потрібно пройти кілька простих кроків:
- скопіюйте файли застосунку
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
- після цього копію можна відкрити в браузері.