email
forum

SUSE, PostgreSQL и Symfony 4

В качестве основной базы данных для работки веб приложений и создания CRM мы используем PostgreSQL. И сегодня мы расскажем о настройке и конфигурации базы данных в связке с SUSE Linux и подключении к Symfony 4.

Установка и настройка PostgreSQL в SUSE.

Установка базы данных PostgreSQL практически ничем не различается для трех основных вариаций Leap 15, SLES 12 и Tumbleweed.

Первым делом стоит добавить ссылку на repo файл репозитория, который можно найти по ссылке: http://download.opensuse.org/repositories/server:/database:/postgresql/

В конечном виде после выбора системы запрос на добавление репозитория в систему, на примере openSUSE Leap 15:

1
zypper addrepo http://download.opensuse.org/repositories/server:/database:/postgresql/openSUSE_Leap_15.1/server:database:postgresql.repo

Обновление репозитариев и установка БД.

1
zypper ref && zypper in postgresql postgresql-server postgresql-contrib

После окончания установки добавим сервис postgresql в автозагрузку и запустим сервис БД.

1
2
systemctl enable postgresql
systemctl start postgresql

На этом установка закончена и переходим к конфигурации

Конфигурация и настройка PostgreSQL в openSUSE

Создать базу данных и пользователя очень просто:

1. Логинимся под пользователем postgres. Если вы не устанавливали отдельный пароль для sudo, то в openSUSE пароли для su и sudo совпадают.

1
sudo su - postgres
Довольно часто в мануалах и интернете встречается указание на создание пароля для пользователя postgres. Это грубая ошибка, так делать нельзя!

2. Создаем тестовую базу данных

1
2
psql
CREATE DATABASE deathstar88;

3. Создаем нового пользователя luke с правами SUPERUSER и задаем пароль для него. Проверяем наличие созданного пользователя, базу данных и выходим из консоли psql. Привилегии пользователя подробно описаны в документации к БД.

1
2
3
4
CREATE ROLE luke WITH SUPERUSER LOGIN PASSWORD 'yodadie';
\du
\l
\q

4. Разлогиниваемся из postgres и правим конфиг аутенификации пользователей

1
/var/lib/pgsql/data/pg_hba.conf
Нас интересуют секции «local», «IPv4 local connections», IPv6 local connections. Меняем метод аутентификации на md5:
1
2
3
4
5
6
# "local" is for Unix domain socket connections only
local   all    all    md5
# IPv4 local connections:
host    all    all    127.0.0.1/32   md5
# IPv6 local connections:
host    all    all    ::1/128    md5

5. Перезагружаем сервис БД

1
systemctl restart postgresql

6. Если все было сделано правильно, то результатом будет успешный логин пользователя luke в консоль бд deathstar88

1
psql -h localhost -U luke deathstar88

перевод сайта wordpress, мультиязычный интернет магазин Woo Commerce

Подключение и настройка PostgreSQL к Symfony 4

Для работы с базой данный необходим бандл Doctrine

1
composer require doctrine
После установки бандла вам станут доступны сервисы и интерфейсы для взаимодействия с базой данных. Для подключения к Symfony необходимо внесение изменений в конфигурационные файлы самого бандла: драйвер для подключения, определение кодировки бд, версия используемого сервера.
1
2
3
4
5
6
7
8
#config/packages/doctrine.yaml
doctine
:
    dbal
:
            driver
: 'pdo_pgsql'
            server_version
: '10' #версия сервера
            charset
: utf8
            # With Symfony 3.3, remove the `resolve:` prefix
            url
: '%env(resolve:DATABASE_URL)%'

Значение url: означает, что надо перейти в env файл окружения и настроить там подключение к бд в переменной DATABASE_URL с учетной записью созданного пользователя:
1
2
#/.env
DATABASE_URL=pgsql://luke:yodadie@127.0.0.1:5432/deathstar88

Заключение

Мы продолжаем дело популяризации openSUSE, как прекрасного дистрибутива для повседневного и серверного применения. Например, на прошедшем IT Subbotnik в докладе про бастионы упоминалось, о том что для его построения нужен LFS или Alpine c минимальным набором утилит. Малоизвестный Open Build Service сервис SUSE позволяет быстро и относительно безболезненно собирать «заточенные» дистрибутивы на основе SUSE с любым набором утилит и компонентов. В общем, почаще заглядывайте за пределы distrowatch и расширяйте кругозор.
Запись опубликована: 11.11.2019