Типовая настройка PostgreSQL

Проще всего PostgreSQL установить из портов, имея sudo или рутовый аккаунт:

cd /usr/ports/databases/postgresql91-server/

sudo make install clean

и обязательно contrib:

cd /usr/ports/databases/postgresql91-contrib/

sudo make install clean

В Сontrib живет поддержка intarray, не слишком нужного, но обязательного компонента Contenido.

При установке как PostgreSQL, так и Contrib будут заданы вопросы по настройке самого пакета и пакетов, от которых постгрес зависит. Умолчания рулят - если вы точно не знаете, для чего вам тот или иной параметр, оставьте все, как есть (см. рис 1).

После установки в /usr/local/etc/rc.d/ появится запускающий скрипт postgresql. Для его активации в /etc/rc.conf необходимо добавить:

postgresql_enable="YES"

Если необходимы какие-то более точные настройки местоположения БД и флагов инициализации, смотрите внутрь /usr/local/etc/rc.d/postgresql, там все достаточно емко описано.

Инициализация

sudo /usr/local/etc/rc.d/postgresql initdb

Настройка ОС

В /boot/loader.conf

# postgresql
kern.ipc.semmns="1024"
kern.ipc.semmni="256"

В /etc/sysctl.conf

# files
kern.maxfiles=65536
kern.maxfilesperproc=64512

# shared memory
kern.ipc.shmall=1380000
kern.ipc.shmmax=5652480000
kern.ipc.shm_use_phys=1

После перезагрузки необходимо проверить факт установки значений командой: ipcs -a.

Настройка PostgreSQL

В postgresql.conf (если установлено все по умолчанию, то /usr/local/pgsql/data/postgresql.conf):

listen_addresses = '*'
port = 6000              # Не стоит оставлять умолчание, особенно, если постгрес будет слушать нелокальные адреса
max_connections = 100    # Если больше, необходимо править параметры выше. См расчет (...)
shared_buffers = 500MB   # min 128kB or max_connections*16kB
autovacuum = on          # Enable autovacuum subprocess?  'on'
                         # requires track_counts to also be on.
track_counts = on

После изменения конфигурации необходимо перегрузить PostgreSQL:

sudo /usr/local/etc/rc.d/postgresql restart

Для создания контенидных баз можно (и весьма уместно) сделать готовый шаблон, чтобы не повторять потом одни и те же действия. Из-под созданного пользователя pgsql (sudo -u pgsql -i) проверяем наличие конфигурации по умолчанию:

psql -l -p 6000

Создаем шаблон:

createdb -T template0 template2 --encoding UTF-8 --lc-collate ru_RU.UTF-8 --lc-ctype ru_RU.UTF-8 -p 6000

Подключаем контрибы. Для PG версии 9 и выше:

psql -p 6000 template2
template2=# CREATE EXTENSION intarray ;
CREATE EXTENSION
template2=# \q

Для более старых версий:

psql -p 6000 template2 < /usr/local/share/postgresql/contrib/_int.sql

Создание БД для Contenido

Из-под пользователя pgsql:

createuser -D -R -S contenidouser -p 6000 -P

При создании спросит пароль для нового пользователя.

createdb -T template2 -O contenidouser contenidobase -p 6000

База данных готова, теперь ее можно подключить в проектном config.mk. Для проверки из корня инсталляции выполняем make psql (проект должен быть прописан в config.mk инсталляции) и получаем приглашение постгрес-консоли.

Последний штрих:

make pgsql_template

создаст в подключенной базе начальную структуру таблиц, необходимую для старта проекта.

Требования к системе
Развертывание инсталляции
Развертывание проекта
Типовая настройка PostgreSQL
Установка ImageMagick