Установка и настройка PostgreSQL для работы приложения

Для работы приложения требуется PostgreSQL версии 17 или выше.
Если PostgreSQL уже установлен, перейдите сразу к разделу "Создание базы данных для приложения".

1. Установка PostgreSQL

Для Windows

  1. Скачайте установщик с официального сайта:
    https://www.postgresql.org/download/windows/
    Нажмите "Download the installer".
  1. Выберите версию 17 (или выше) и запустите `.exe`-файл от имени администратора.
  1. В окне "Select Components" отметьте:
  1. Выберите каталог данных (можно оставить по умолчанию).
  1. Задайте и запомните пароль для пользователя postgres.
  1. Оставьте стандартный порт: `5432` (если не занят).
  1. Выберите локаль: Default locale или `Russian, Russia`.
  1. Завершите установку, сняв галочку "Launch Stack Builder".

Для Linux (Ubuntu/Debian)

# Добавляем официальный репозиторий PostgreSQL
sudo apt update
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

# Устанавливаем PostgreSQL 17
sudo apt install -y postgresql-17 postgresql-client-17

# Проверяем статус службы
sudo systemctl status postgresql

Ожидаемый вывод: `active (running)`

# Проверка версии
psql --version

2. Создание базы данных для приложения

Способ А: через командную строку

createdb имя_вашей_базы

Пример: `createdb m2m_pulsar_db`

Способ Б: через psql (более гибкий)

sudo -u postgres psql   # в Linux
# или просто "psql -U postgres" в Windows (SQL Shell)
CREATE DATABASE m2m_pulsar_db;
\q

Способ В: создание с пользователем и правами (рекомендуется)

sudo -u postgres psql
CREATE USER myapp_user WITH PASSWORD 'your_password_here';
CREATE DATABASE m2m_pulsar_db OWNER myapp_user;
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;
\q

{info}
Для работы приложения требуется **PostgreSQL версии 15 или выше**.
Если PostgreSQL уже установлен, перейдите сразу к разделу "Создание базы данных для приложения".
{info}

h2. 1. Установка PostgreSQL

h3. Для Windows

# Скачайте установщик с официального сайта:
  [https://www.postgresql.org/download/windows/|https://www.postgresql.org/download/windows/]
  Нажмите *"Download the installer"*.

# Выберите версию **17** (или выше) и запустите `.exe`-файл **от имени администратора**.

# В окне *"Select Components"* отметьте:
  * PostgreSQL Server
  * Command Line Tools
  * pgAdmin 4 (по желанию)

# Выберите каталог данных (можно оставить по умолчанию).

# Задайте и *запомните* пароль для пользователя `postgres`.

# Оставьте стандартный порт: `5432` (если не занят).

# Выберите локаль: `[Default locale]` или `Russian, Russia`.

# Завершите установку, сняв галочку *"Launch Stack Builder"*.

{tip}
**Проверка установки:**
Откройте *SQL Shell (psql)* из меню Пуск, нажимайте Enter на всех параметрах и введите пароль. Должна появиться строка `postgres=#`.
{tip}

h3. Для Linux (Ubuntu/Debian)

{code:bash}
# Добавляем официальный репозиторий PostgreSQL
sudo apt update
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

# Устанавливаем PostgreSQL 17
sudo apt install -y postgresql-17 postgresql-client-17

# Проверяем статус службы
sudo systemctl status postgresql
{code}

Ожидаемый вывод: `active (running)`

{code:bash}
# Проверка версии
psql --version
{code}

h2. 2. Создание базы данных для приложения

h3. Способ А: через командную строку (проще всего)

{code:bash}
createdb имя_вашей_базы
{code}
Пример: `createdb myapp_db`

h3. Способ Б: через psql (более гибкий)

{code:bash}
sudo -u postgres psql   # в Linux
# или просто "psql -U postgres" в Windows (SQL Shell)
{code}

{code:sql}
CREATE DATABASE myapp_db;
\q
{code}

h3. Способ В: создание с пользователем и правами (рекомендуется)

{code:bash}
sudo -u postgres psql
{code}

{code:sql}
CREATE USER myapp_user WITH PASSWORD 'strong_password_here';
CREATE DATABASE myapp_db OWNER myapp_user;
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;
\q
{code}

h2. 3. Настройка подключения в приложении

В конфигурационном файле приложения (например, `.env`, `config.yaml`) укажите:

{code:ini}
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp_db
DB_USER=myapp_user          # или postgres
DB_PASSWORD=strong_password_here
{code}

{info}
**Проверка:** Запустите приложение. Если подключение не удаётся — проверьте, запущен ли PostgreSQL и правильность параметров.
{info}

h2. 4. Устранение типичных проблем

|| Проблема || Решение ||
| `psql: could not connect to server` | PostgreSQL не запущен. Запустите службу:  
`sudo systemctl start postgresql` (Linux) или через "Службы" (Windows) |
| `FATAL: password authentication failed` | Неправильный пароль. Сбросьте пароль для `postgres` |
| `database "xxx" does not exist` | База не создана. Выполните `createdb xxx` |
| `port 5432 already in use` | PostgreSQL уже работает на другом экземпляре. Используйте другой порт |

h2. 5. Удаление PostgreSQL

h3. Windows
Удалите через *"Программы и компоненты"* → PostgreSQL

h3. Linux
{code:bash}
sudo apt remove --purge postgresql-17
sudo rm -rf /var/lib/postgresql/17/main
{code}

h2. Чек-лист для пользователя

* [ ] PostgreSQL установлен и запущен
* [ ] Создана база данных для приложения
* [ ] Пароль пользователя записан
* [ ] Параметры подключения внесены в конфигурацию приложения
* [ ] Приложение успешно подключается к БД

{info}
Если вы выполнили все шаги, но приложение не работает — обратитесь в службу поддержки с приложенным логом ошибок.
{info}