diff --git a/README.md b/README.md index d648773..7101a36 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,31 @@ -# Установка PostgreSQL for 1C 18 на Debian 13 одним запуском +# Установка и удаление PostgreSQL for 1C 18 на Debian 13 В комплекте: - `install_pg1c.sh` — основной установочный скрипт +- `uninstall_pg1c.sh` — скрипт удаления - `env.example` — пример файла `.env` со всеми настройками и пояснениями на русском - `.env` — минимальный рабочий вариант без комментариев +- `use.md` — пример подключения к Django -Скрипт автоматизирует официальный процесс установки Postgres Pro for 1C 18 по вашей инструкции: +## Что делают скрипты + +`install_pg1c.sh` автоматизирует установку Postgres Pro for 1C 18: - добавляет репозиторий через vendor-скрипт `pgpro-repo-add.sh` - ставит пакет в режиме `standalone` или `parallel` -- включает и запускает systemd-сервис +- включает и запускает сервис - создает или обновляет пользователя PostgreSQL - при необходимости создает базу данных -- при необходимости автоматически правит `pg_hba.conf`, чтобы логин работал по паролю, а не упирался в `peer` +- адресно добавляет managed-блок в `pg_hba.conf` для вашего прикладного пользователя + +`uninstall_pg1c.sh` автоматизирует удаление: + +- останавливает сервис +- отключает автозапуск +- удаляет пакеты через `apt-get purge` +- по желанию удаляет каталог данных +- по желанию удаляет файл репозитория, auth-файл и GPG-ключ ## Что нужно @@ -22,6 +34,24 @@ - интернет-доступ до репозитория 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 архив репозитория: @@ -29,14 +59,15 @@ 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 @@ -47,14 +78,15 @@ https://git.ext.flamy.studio/flamy_preview/pg18-1C_for_deb13 ```bash git clone https://git.ext.flamy.studio/flamy_preview/pg18-1C_for_deb13.git cd pg18-1C_for_deb13 -chmod +x install_pg1c.sh +cp env.example .env +nano .env +chmod +x install_pg1c.sh uninstall_pg1c.sh sudo ./install_pg1c.sh ``` ## Подготовка `.env` - ### Если нужен полный шаблон с пояснениями ```bash @@ -70,9 +102,7 @@ nano .env.local mv .env.local .env ``` -Либо просто используйте уже готовый `.env`, если значения вам подходят. - -## Что настроить в `.env` +## Что настраивается в `.env` для установки Обязательно проверьте: @@ -81,13 +111,22 @@ mv .env.local .env - `PG_ADMIN_PASSWORD` - `PG_CREATE_DB` - `PG_DB_NAME` +- `REPO_ADD_URL` +- `PGPRO_BIN_DIR` +- `SERVICE_NAME` + +Для managed-правил в `pg_hba.conf`: + - `ENFORCE_PASSWORD_AUTH` -- `PGPRO_REPO_ADD_URL` -- `PGPRO_REPO_SCRIPT_NAME` +- `APP_LOCAL_AUTH_METHOD` +- `APP_HOST_AUTH_METHOD` +- `APP_HOST_IPV4_CIDR` +- `APP_HOST_IPV6_CIDR` +- `PRESERVE_POSTGRES_PEER_LOCAL` ## Режимы установки -### 1) Если это единственный Postgres на сервере +### Если это единственный Postgres на сервере ```env INSTALL_MODE=standalone @@ -99,7 +138,7 @@ INSTALL_MODE=standalone postgrespro-1c-18 ``` -### 2) Если на сервере уже есть другой Postgres +### Если на сервере уже есть другой Postgres ```env INSTALL_MODE=parallel @@ -113,28 +152,94 @@ postgrespro-1c-18-contrib После этого скрипт сам вызывает `initdb`, включает сервис и запускает его. -## Про аутентификацию +## Как работает правка `pg_hba.conf` -По умолчанию на Linux локальные подключения к PostgreSQL часто идут через `peer`, из-за чего пароль вроде бы задан, но вход под новым пользователем не работает через локальный сокет. - -Во второй версии скрипта это закрыто параметром: - -```env -ENFORCE_PASSWORD_AUTH=true -``` - -Тогда скрипт: +Скрипт не переписывает весь файл целиком. Он: - определяет фактический путь к `pg_hba.conf` -- делает резервную копию -- заменяет `peer` / `ident` на нужный метод (`scram-sha-256` по умолчанию) -- перезапускает сервис +- делает резервную копию, если `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 -REPLACE_LOCAL_PEER_WITH=scram-sha-256 -REPLACE_HOST_AUTH_WITH=scram-sha-256 +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 ``` ## Проверки после установки @@ -163,27 +268,20 @@ sudo -u postgres /opt/pgpro/1c-18/bin/psql -h /var/run/postgresql -d postgres -c /opt/pgpro/1c-18/bin/psql -h 127.0.0.1 -U admin_1c -d appdb -W ``` -## Что делает скрипт безопасно +## Что делает комплект безопасно -Скрипт старается быть идемпотентным: - -- если репозиторий уже добавлен, повторно не ломает конфигурацию -- если роль уже существует, обновляет пароль и атрибуты -- если база уже существует, повторно не создает ее -- перед правкой `pg_hba.conf` делает бэкап, если `CREATE_HBA_BACKUP=true` - -## Важно - -- Скрипт рассчитан именно на Debian 13. -- Он использует официальный vendor-скрипт добавления репозитория, а не самодельную схему репозиториев. -- Если доступ к репозиторию требует логин/пароль, это обрабатывает сам vendor-скрипт Postgres Pro. -- В открытом репозитории сейчас лежат `env`, `env.example`, `install_pg1c.sh` и `README.md`, так что его можно использовать как точку входа для развертывания или передачи готового комплекта. +- установка повторно не дублирует managed-блок в `pg_hba.conf` +- удаление по умолчанию не стирает каталог данных +- для удаления данных есть отдельные флаги и подтверждение +- репозиторий и ключи удаляются отдельно от данных кластера ## Рекомендуемый порядок файлов в проекте ```text install_pg1c.sh +uninstall_pg1c.sh env.example .env README.md +use.md ```