Обновить README.md

This commit is contained in:
2026-03-25 11:07:04 +00:00
parent 6c129cd2a1
commit 88d68aa99b

188
README.md
View File

@@ -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
```