Тестировалось и работает на Ubuntu Linux (10.04 - 16.04 x86, x86_64) и PostgreSQL 8.4 - 9.4, но оно также должно быть применимо для более старых версий (Ubuntu и PostgreSQL) и других Debian-based дистрибутивов.
Для базовой установки в командной строке введите следующие команды (или найдите перечисленные пакеты в синаптике, если вы предпочитаете работать с ним):
Оговорюсь сразу, что статья написана под 8.4. У кого более поздние версии, вам придется немного подправить пути.
sudo apt-get install postgresql postgresql-client postgresql-contrib |
Если Вы устанавливаете на локальный компьютер или на сервер, где установлены иксы, то для администрирования можно установить Pgadmin:
sudo apt-get install pgadmin3 |
Эти команды установят сервер и клиент БД, некоторые дополнительные скрипты и графическую утилиту pgAdmin для работы с БД.
Теперь нам необходимо переустановить пароль админского аккаунта ‘postgres’ сервера, чтобы мы могли использовать его для задач системного администрирования. Введите в командной строке (подставьте вместо password пароль, который вы хотите использовать):
|
Эти команды изменяют пароль внутри БД, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’, замечу что пароли должны быть одинаковы:
sudo passwd -d postgres
|
Снимаем сроки паролей и меняем пароль, как я и говорил на идентичный, что писали в базу:
sudo su postgres -c passwd
|
Введите тот же пароль, который вы использовали в прошлый раз.
Теперь мы можем использовать и программу pgAdmin, и консольный клиент (от пользователя postgres), чтобы работать с сервером БД. Но, перед запуском pgAdmin, мы должны установить админский пакет PostgreSQL, который включит лучшее логгирование и мониторинг в pgAdmin. Запустите следующую команду:
sudo postgres -c psql /usr/share/postgresql/8.4/contrib/adminpack.sql * |
Наконец, нам необходимо настроить сервер для работы в сети, иначе он будет доступен только с локальной машины. Чтобы сделать это, сначала необходимо отредактировать в консоли postgresql.conf:
sudo nano /etc/postgresql/8.4/main/postgresql.conf |
Меняем
listen_addresses = 'localhost'
|
на:
listen_addresses = '*'
|
И снимаем комментарий с
port = 5432
|
Сохраните файл нажав Ctrl +X .
Последний шаг -- мы должны определить, кто должен иметь доступ к серверу. Это настраивается с помощью файла pg_hba.conf file. (Этот шаг можно также сделать с помощью последних версий pgAdmin (1.6.x), плюс вам даже нет необходимости вычислять IP адреса и маски подсетей. Но это не исключает необходимости знать, как это работает.)
sudo nano /etc/postgresql/8.4/main/pg_hba.conf |
Пример рабочего конфига:
# PostgreSQL Client Authentication Configuration File |
Всё, теперь перезапустите сервер:
sudo /etc/init.d/postgresql-8.4 restart |
Установка словарей PostgreSQL для русского полнотекстового поиска.
Словари можно скачать отсюда http://wiki.services.openoffice.org/wiki/Dictionaries#Russian_.28Russia.29
Скачиваете файл Ru_ru.zip, разархивируете и закидываете к себе файлы ru_RU.dic и ru_RU.aff
Словари в кодировке koi8 для работы с postgresql надо преобразовать в utf-8
Для этого на хосте выполняете команду
iconv -f koi8-r -t utf-8 < ru_RU.aff > /usr/share/postgresql/8.4/tsearch_data/russian.affix |
iconv -f koi8-r -t utf-8 < en_US.aff > /usr/share/postgresql/8.4/tsearch_data/english.affix |
Эта команда преобразовывает кодировку словарей, переименовывает их и копирует в нужную папку. Пути зависят от установки. Найдите у себя папку tsearch_data , которая содержит словари, ее и пропишите.
Теперь создаем полнотекстовую конфигурацию для работы с русским (ну и английским) Посылаете запросы к postgresql
CREATE TEXT SEARCH DICTIONARY russian_ispell ( |
Чтобы эта полнотекстовая конфигурация работала по умолчанию прописываете в postgresql.conf
default_text_search_config = 'ru ' |
Ну или можете в каждой сессии посылать команду
SET default_text_search_config = 'ru';
Проверяем работу
select to_tsvector('ru', 'мама мыла раму'); |
Полнотекстовая конфигурация работает.
Если вы хотите использовать данный сервер в связке apache2 + php5 + postgresql, то вам необходимо установить следующие пакеты:
sudo apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-gd php5-pgsql |
Прошло немного времени и понадобился скриптик который будет делать бекапы баз. И так создаем каталог для бекапов:
mkdir /home/backup |
Создаем скрипт с таким содержимым:
#!/bin/bash |
Вешаем на него права:
chmod +x backup.sh |
Запускать скрипт можно ручную, а кому лениво можно кроном, например каждый понедельник в 3 часа ночи:
00 3 * * 1 root /путь_до_скрипта/backup.sh |
Дамп базы base1 в файл архива dump.tar.gz
pg_dump -h localhost -U base1 -F c -f dump.tar.gz base1 |
Загрузка архива дампа dump.tar.gz в базу vhsup
pg_restore -h localhost -U base1 -F c -d base1 dump.tar.gz |
Или:
psql -d base1 -f /share/BackUPs/PostgreSQL/base1.sql |
Если вам необходимо увеличить количество одновременных соединений к базе, то нужно переопределить лимиты ядра, при том что выставляемые лимиты на прямую зависят от объема памяти. Допустим у вас 16GB оперативной памяти, введем в терминале команду:
sysctl -w kernel.shmmax=17179869184 |
Для 8GB:
sysctl -w kernel.shmmax=8589934592 |
Настройки лучше сохранить в /etc/sysctl.conf для их применения после перезагрузки:
kernel.shmmax=17179869184 |
В древних дистрибутивах может не оказаться программы sysctl, тогда внесите изменения:
echo 17179869184 >/proc/sys/kernel/shmmax |
Для оптимизации PostgreSQL существует утилита pgtune. Её можно установить и собрать оптимальный файл конфигурации, и если он не противоричит вашим моральным принципам, можете им заменить ваш рабочий файл конфигурации.
sudo apt-get install pgtune |