288 lines
8.1 KiB
Markdown
288 lines
8.1 KiB
Markdown
# Установка и удаление PostgreSQL for 1C 18 на Debian 13
|
||
|
||
В комплекте:
|
||
|
||
- `install_pg1c.sh` — основной установочный скрипт
|
||
- `uninstall_pg1c.sh` — скрипт удаления
|
||
- `env.example` — пример файла `.env` со всеми настройками и пояснениями на русском
|
||
- `.env` — минимальный рабочий вариант без комментариев
|
||
- `use.md` — пример подключения к Django
|
||
|
||
## Что делают скрипты
|
||
|
||
`install_pg1c.sh` автоматизирует установку Postgres Pro for 1C 18:
|
||
|
||
- добавляет репозиторий через vendor-скрипт `pgpro-repo-add.sh`
|
||
- ставит пакет в режиме `standalone` или `parallel`
|
||
- включает и запускает сервис
|
||
- создает или обновляет пользователя PostgreSQL
|
||
- при необходимости создает базу данных
|
||
- адресно добавляет managed-блок в `pg_hba.conf` для вашего прикладного пользователя
|
||
|
||
`uninstall_pg1c.sh` автоматизирует удаление:
|
||
|
||
- останавливает сервис
|
||
- отключает автозапуск
|
||
- удаляет пакеты через `apt-get purge`
|
||
- по желанию удаляет каталог данных
|
||
- по желанию удаляет файл репозитория, auth-файл и GPG-ключ
|
||
|
||
## Что нужно
|
||
|
||
- Debian 13
|
||
- доступ `root`
|
||
- интернет-доступ до репозитория Postgres Pro
|
||
- `git`, если хотите сначала стянуть готовые файлы из открытого репозитория
|
||
|
||
## Быстрый запуск из локальных файлов
|
||
|
||
### Установка
|
||
|
||
```bash
|
||
cp env.example .env
|
||
nano .env
|
||
chmod +x install_pg1c.sh
|
||
sudo ./install_pg1c.sh
|
||
```
|
||
|
||
### Удаление
|
||
|
||
```bash
|
||
chmod +x uninstall_pg1c.sh
|
||
sudo ./uninstall_pg1c.sh
|
||
```
|
||
|
||
## Вариант 1. ZIP архив
|
||
|
||
Скачиваем ZIP архив репозитория:
|
||
```bash
|
||
wget https://git.ext.flamy.studio/flamy_preview/pg18-1C_for_deb13/archive/main.zip -O pg18-1C_for_deb13.zip
|
||
unzip pg18-1C_for_deb13.zip
|
||
cd pg18-1c_for_deb13
|
||
cp env.example .env
|
||
nano .env
|
||
chmod +x install_pg1c.sh
|
||
sudo ./install_pg1c.sh
|
||
```
|
||
|
||
## Вариант 2. Стянуть готовый комплект из открытого репозитория
|
||
|
||
Открытый репозиторий проекта:
|
||
|
||
```text
|
||
https://git.ext.flamy.studio/flamy_preview/pg18-1C_for_deb13
|
||
```
|
||
|
||
### Стянуть через git
|
||
|
||
```bash
|
||
git clone https://git.ext.flamy.studio/flamy_preview/pg18-1C_for_deb13.git
|
||
cd pg18-1C_for_deb13
|
||
cp env.example .env
|
||
nano .env
|
||
chmod +x install_pg1c.sh uninstall_pg1c.sh
|
||
sudo ./install_pg1c.sh
|
||
```
|
||
|
||
|
||
## Подготовка `.env`
|
||
|
||
### Если нужен полный шаблон с пояснениями
|
||
|
||
```bash
|
||
cp env.example .env
|
||
nano .env
|
||
```
|
||
|
||
### Если нужен минимальный рабочий `.env` без комментариев
|
||
|
||
```bash
|
||
cp .env .env.local
|
||
nano .env.local
|
||
mv .env.local .env
|
||
```
|
||
|
||
## Что настраивается в `.env` для установки
|
||
|
||
Обязательно проверьте:
|
||
|
||
- `INSTALL_MODE`
|
||
- `PG_ADMIN_USER`
|
||
- `PG_ADMIN_PASSWORD`
|
||
- `PG_CREATE_DB`
|
||
- `PG_DB_NAME`
|
||
- `REPO_ADD_URL`
|
||
- `PGPRO_BIN_DIR`
|
||
- `SERVICE_NAME`
|
||
|
||
Для managed-правил в `pg_hba.conf`:
|
||
|
||
- `ENFORCE_PASSWORD_AUTH`
|
||
- `APP_LOCAL_AUTH_METHOD`
|
||
- `APP_HOST_AUTH_METHOD`
|
||
- `APP_HOST_IPV4_CIDR`
|
||
- `APP_HOST_IPV6_CIDR`
|
||
- `PRESERVE_POSTGRES_PEER_LOCAL`
|
||
|
||
## Режимы установки
|
||
|
||
### Если это единственный Postgres на сервере
|
||
|
||
```env
|
||
INSTALL_MODE=standalone
|
||
```
|
||
|
||
Ставится пакет:
|
||
|
||
```text
|
||
postgrespro-1c-18
|
||
```
|
||
|
||
### Если на сервере уже есть другой Postgres
|
||
|
||
```env
|
||
INSTALL_MODE=parallel
|
||
```
|
||
|
||
Ставится пакет:
|
||
|
||
```text
|
||
postgrespro-1c-18-contrib
|
||
```
|
||
|
||
После этого скрипт сам вызывает `initdb`, включает сервис и запускает его.
|
||
|
||
## Как работает правка `pg_hba.conf`
|
||
|
||
Скрипт не переписывает весь файл целиком. Он:
|
||
|
||
- определяет фактический путь к `pg_hba.conf`
|
||
- делает резервную копию, если `CREATE_HBA_BACKUP=true`
|
||
- удаляет только старый managed-блок скрипта, если он уже есть
|
||
- добавляет новый managed-блок в начало файла
|
||
- по умолчанию сохраняет `peer` для локального системного пользователя `postgres`
|
||
|
||
Это нужно, чтобы повторные запуски не ломали административный вход через:
|
||
|
||
```bash
|
||
sudo -u postgres /opt/pgpro/1c-18/bin/psql -h /var/run/postgresql -d postgres
|
||
```
|
||
|
||
## Использование скрипта удаления
|
||
|
||
Скрипт удаления читает тот же `.env`, что и установочный.
|
||
|
||
### Без удаления данных
|
||
|
||
Это безопасный режим по умолчанию:
|
||
|
||
```bash
|
||
sudo ./uninstall_pg1c.sh
|
||
```
|
||
|
||
Что будет сделано:
|
||
|
||
- сервис остановится
|
||
- автозапуск отключится
|
||
- пакеты будут удалены через `apt-get purge`
|
||
- репозиторий Postgres Pro будет убран из APT
|
||
- каталог данных останется на месте
|
||
|
||
### Полное удаление вместе с данными
|
||
|
||
Для полного удаления добавьте в `.env`:
|
||
|
||
```env
|
||
UNINSTALL_REMOVE_DATA_DIR=true
|
||
UNINSTALL_REMOVE_LOG_DIR=true
|
||
UNINSTALL_REMOVE_HOME_DIRS=true
|
||
```
|
||
|
||
И затем выполните:
|
||
|
||
```bash
|
||
sudo ./uninstall_pg1c.sh
|
||
```
|
||
|
||
Скрипт попросит явное подтверждение `DELETE`.
|
||
|
||
### Полное удаление без интерактивного подтверждения
|
||
|
||
```env
|
||
UNINSTALL_REMOVE_DATA_DIR=true
|
||
UNINSTALL_REMOVE_LOG_DIR=true
|
||
UNINSTALL_REMOVE_HOME_DIRS=true
|
||
UNINSTALL_FORCE=true
|
||
```
|
||
|
||
Используйте это только если уверены, что каталог данных больше не нужен.
|
||
|
||
## Параметры удаления
|
||
|
||
Скрипт `uninstall_pg1c.sh` поддерживает следующие переменные в `.env`:
|
||
|
||
```env
|
||
UNINSTALL_DISABLE_SERVICE=true
|
||
UNINSTALL_STOP_SERVICE=true
|
||
UNINSTALL_PURGE_PACKAGES=true
|
||
UNINSTALL_AUTOREMOVE=true
|
||
UNINSTALL_REMOVE_REPO=true
|
||
UNINSTALL_REMOVE_AUTH_FILE=true
|
||
UNINSTALL_REMOVE_GPG_KEY=true
|
||
UNINSTALL_REMOVE_DEFAULT_FILE=false
|
||
UNINSTALL_REMOVE_DATA_DIR=false
|
||
UNINSTALL_REMOVE_LOG_DIR=false
|
||
UNINSTALL_REMOVE_HOME_DIRS=false
|
||
UNINSTALL_FORCE=false
|
||
```
|
||
|
||
При необходимости можно явно задать каталог данных, если он у вас нестандартный:
|
||
|
||
```env
|
||
PGPRO_DATA_DIR=/путь/к/вашему/PGDATA
|
||
```
|
||
|
||
## Проверки после установки
|
||
|
||
Статус сервиса:
|
||
|
||
```bash
|
||
systemctl status postgrespro-1c-18
|
||
```
|
||
|
||
Список ролей:
|
||
|
||
```bash
|
||
sudo -u postgres /opt/pgpro/1c-18/bin/psql -h /var/run/postgresql -d postgres -c "\\du"
|
||
```
|
||
|
||
Список баз:
|
||
|
||
```bash
|
||
sudo -u postgres /opt/pgpro/1c-18/bin/psql -h /var/run/postgresql -d postgres -c "\\l"
|
||
```
|
||
|
||
Подключение под созданным пользователем:
|
||
|
||
```bash
|
||
/opt/pgpro/1c-18/bin/psql -h 127.0.0.1 -U admin_1c -d appdb -W
|
||
```
|
||
|
||
## Что делает комплект безопасно
|
||
|
||
- установка повторно не дублирует managed-блок в `pg_hba.conf`
|
||
- удаление по умолчанию не стирает каталог данных
|
||
- для удаления данных есть отдельные флаги и подтверждение
|
||
- репозиторий и ключи удаляются отдельно от данных кластера
|
||
|
||
## Рекомендуемый порядок файлов в проекте
|
||
|
||
```text
|
||
install_pg1c.sh
|
||
uninstall_pg1c.sh
|
||
env.example
|
||
.env
|
||
README.md
|
||
use.md
|
||
```
|