# Установка и удаление 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 ``` ## Вариант 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 ``` ## Подготовка `.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 ```