Перенос базы данных на выделенный сервер¶
Если вы хотите разместить базу данных отдельно от службы Staffcop и веб-интерфейса, подготовьте сервер БД и подключите к нему сервер Staffcop.
Работы на сервере БД¶
Установите ПО¶
Установите чистый Ubuntu Server версии 20 или 22.
Обновите пакеты в системе:
sudo apt update && sudo apt upgrade
Установите пакеты для установки БД:
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb-release curl -y
Добавьте ключи к репозиторию PostgreSQL:
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null
Добавьте репозиторий:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list
Обновите списки репозиториев в пакетном менеджере:
sudo apt update
Установите PostgreSQL 15:
sudo apt install postgresql-client-15 postgresql-15 -y
Создайте пользователя¶
Найдите пароль на сервере Staffcop с помощью команды:
cat /etc/staffcop/config | grep PASSWORD
Скопируйте пароль. Он будет в кавычках, например:
'PASSWORD': '05ce255df14c3308143737316139b77',
Вставьте пароль в команду вместо
пароль
и выполните ее на сервере БД:
sudo -u postgres psql -c "create user staffcop;" -c "create user staffcop with password 'пароль';"Пример:
sudo -u postgres psql -c "create user staffcop;" -c "create user staffcop with password '05ce255df14c3308143737316139b77';"
Измените конфигурацию¶
Откройте файл конфигурации /etc/postgresql/15/main/postgresql.conf для редактирования.
В примере используется Vim, но подойдет любой редактор:
sudo vim /etc/postgresql/15/main/postgresql.confНайдите строку:
#listen_addresses = 'localhost,00.00.00.000' # what IP address(es) to listen on;
Уберите в строке символ # в начале строки и добавьте IP, по которому Staffcop будет обращаться на сервер БД.
Примечание
Важно указать именно IP-адрес сервера базы данных. Этот адрес определяет интерфейс, через который сервер принимает запросы. Он не связан с IP-адресом, с которого приходят запросы.
Сохраните изменения и выйдите из редактора.
Откройте файл /etc/postgresql/15/main/pg_hba.conf для редактирования:
sudo vim /etc/postgresql/15/main/pg_hba.confВ конец файла добавьте:
host all all {ip сервера Staffcop}/{маска} md5Например, если
00.00.00.000
– IP-адрес сервера Staffcop и 32 – маска подсети:host all all 00.00.00.000/32 md5
Перезагрузите PostgreSQL для применения изменений:
sudo systemctl restart postgresql
Работы на сервере Staffcop¶
Перенесите базу данных¶
Примечание
Если на сервере нет данных, пропустите этот шаг и перейдите к разделу Подключите базу данных.
Выключите сервер Staffcop:
staffcop stop
Создайте бэкап командой:
staffcop backup_db
Перенесите резервную копию из каталога /var/lib/staffcop/staffcop_backup/staffcop-db.dump на сервер базы данных.
Запустите восстановление БД на удаленном сервере:
sudo -u postgres pg_restore --verbose --clean --create --format=c {путь до файла бекапа} -d postgresНапример:
sudo -u postgres pg_restore --verbose --clean --create --format=c /home/staffcop-db.dump -d postgres
Подключите базу данных¶
Выключите сервер Staffcop:
staffcop stop
Откройте файл конфигурации Staffcop /etc/staffcop/config:
sudo vim /etc/staffcop/configНайдите блок:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'staffcop', 'USER': 'staffcop', 'PASSWORD': '05ce255df14c3308143737316139b77', 'HOST': '', 'PORT': '', } }Укажите в HOST и PORT адрес и порт удаленного сервера PostgreSQL, например:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'staffcop', 'USER': 'staffcop', 'PASSWORD': '05ce255df14c3308143737316139b77', 'HOST': '10.10.13.243', 'PORT': '5432', } }
Отключите автоматический запуск БД на сервере Staffcop:
sudo systemctl stop postgresql sudo systemctl disable postgresql
Проверьте подключение к БД:
staffcop sqlЕсли нет ошибок и вы видите приглашение от PostgreSQL
(staffcop=>)
, подключение прошло успешно.Выйдите из приглашения:
\q
Инициализируйте БД:
staffcop init
Готово! База данных перенесена на выделенный сервер.