Проще всего 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
создаст в подключенной базе начальную структуру таблиц, необходимую для старта проекта.