HOWTO: Клонирование USERSIDE: различия между версиями

Материал из WiKi - UserSide
Нет описания правки
Нет описания правки
Строка 5: Строка 5:
* скопируйте файлы приложения
* скопируйте файлы приложения
  cd /var/www/
  cd /var/www/
  sudo cp -r userside userside-new
  sudo cp -r userside userside-copy


* настройте web-сервер для работы с копией - скопируйте конфигурационный файл, отредактируйте и перечитайте конфигурацию nginx:
* настройте web-сервер для работы с копией - скопируйте конфигурационный файл, отредактируйте и перечитайте конфигурацию nginx:
  sudo cp /etc/nginx/conf.d/userside.conf /etc/nginx/conf.d/userside-new.conf
  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-new/userside3@" "/etc/nginx/conf.d/userside-new.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-new@" "/etc/nginx/conf.d/userside-new.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-new.conf"
  sudo sed -i "s@старое.доменное.имя@новое.доменное.имя@" "/etc/nginx/conf.d/userside-copy.conf"
  sudo systemctl reload nginx
  sudo systemctl reload nginx


* скопируйте базу данных (или создайте новую базу данных и восстановите ее из резервной копии):
* скопируйте базу данных (или создайте новую базу данных и восстановите ее из резервной копии):
  sudo -u postgres createdb -e --encoding="UTF-8" --locale="ru_RU.UTF-8" --owner=userside --template=userside userside_new
  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
  sudo -u postgres createuser userside -P
Строка 21: Строка 21:
* В версии 3.13 и новее перейдите в каталог с новой копией, отредактируйте переменные окружения в файле .env таким образом, чтобы они работали с новой базой данных и с другой (свободной) базой данных redis (в основной инсталляции у вас, скорее всего, используется база данных redis под номером 0; вы можете использовать еще 15, имеющихся по умолчанию). За это отвечают переменные:
* В версии 3.13 и новее перейдите в каталог с новой копией, отредактируйте переменные окружения в файле .env таким образом, чтобы они работали с новой базой данных и с другой (свободной) базой данных redis (в основной инсталляции у вас, скорее всего, используется база данных redis под номером 0; вы можете использовать еще 15, имеющихся по умолчанию). За это отвечают переменные:
  US_URL=http://новое.доменное.имя
  US_URL=http://новое.доменное.имя
  US_DB_DSN=pgsql:host=localhost;dbname=userside_new;port=5432
  US_DB_DSN=pgsql:host=localhost;dbname=userside_copy;port=5432
  US_REDIS_DB=1
  US_REDIS_DB=1


Строка 35: Строка 35:


* В версии 3.16 и новее вам также придется пересоздать venv для микросервиса поллера:
* В версии 3.16 и новее вам также придется пересоздать venv для микросервиса поллера:
  sudo rm -rf /var/www/userside-new/microservice/poller/venv
  sudo rm -rf /var/www/userside-copy/microservice/poller/venv
  cd /var/www/userside-new/microservice/poller
  cd /var/www/userside-copy/microservice/poller
  sudo -H python3 -m virtualenv -p /usr/bin/python3 venv
  sudo -H python3 -m virtualenv -p /usr/bin/python3 venv
  sudo -H ./venv/bin/pip install --upgrade -r requirements.txt
  sudo -H ./venv/bin/pip install --upgrade -r requirements.txt
Строка 43: Строка 43:
  sudp cp /etc/supervisor/conf.d/us-core-worker.conf /etc/supervisor/conf.d/us-copy-core-worker.conf
  sudp 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@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-new/@" "/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/us-poller-microservice.conf /etc/supervisor/conf.d/us-copy-poller-microservice.conf
  sudo cp /etc/supervisor/conf.d/us-poller-microservice.conf /etc/supervisor/conf.d/us-copy-poller-microservice.conf
  sudo sed -i "s@us-poller-microservice@us-copy-poller-microservice@" "/etc/supervisor/conf.d/us-copy-poller-microservice.conf"
  sudo sed -i "s@us-poller-microservice@us-copy-poller-microservice@" "/etc/supervisor/conf.d/us-copy-poller-microservice.conf"
  sudo sed -i "s@/var/www/userside/@/var/www/userside-new/@" "/etc/supervisor/conf.d/us-copy-poller-microservice.conf"
  sudo sed -i "s@/var/www/userside/@/var/www/userside-copy/@" "/etc/supervisor/conf.d/us-copy-poller-microservice.conf"


  sudo systemctl restart supervisor
  sudo systemctl restart supervisor


* теперь можно открыть в браузере вашу копию.
* теперь можно открыть в браузере вашу копию.

Версия от 07:01, 10 августа 2021

Копия системы для тестирования или исследований

Если вам понадобилось сделать копию системы, чтобы испытать новую версию перед фактическим обновлением, или выполнить еще какие либо действия, то вам необходимо выполнить несколько простых шагов:

  • скопируйте файлы приложения
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://новое.доменное.имя
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" "userside-stomp" "^userside-stomp:id-.*" "" "^userside-stomp:id-.*"

Теперь измените переменную US_AMQP_DSN файла .env таким образом:

US_AMQP_DSN=amqp://userside:вашпароль@127.0.0.1:5672/copy
  • В версии 3.16 и новее вам также придется пересоздать venv для микросервиса поллера:
sudo rm -rf /var/www/userside-copy/microservice/poller/venv
cd /var/www/userside-copy/microservice/poller
sudo -H python3 -m virtualenv -p /usr/bin/python3 venv
sudo -H ./venv/bin/pip install --upgrade -r requirements.txt
  • Также начиная с версии 3.16 нужно будет скопировать конфигурацию супервизора для фоновых процессов ядра и микросервиса поллеров:
sudp 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/us-poller-microservice.conf /etc/supervisor/conf.d/us-copy-poller-microservice.conf
sudo sed -i "s@us-poller-microservice@us-copy-poller-microservice@" "/etc/supervisor/conf.d/us-copy-poller-microservice.conf"
sudo sed -i "s@/var/www/userside/@/var/www/userside-copy/@" "/etc/supervisor/conf.d/us-copy-poller-microservice.conf"
sudo systemctl restart supervisor
  • теперь можно открыть в браузере вашу копию.