- Вчера решил совместить нужное с полезным.
Получилось приятное :)
-
- Нужно было определить список
(подмножество) файлов из определенного
каталога, по дате модификации. Фигня,
скажете вы. А я уточню — файлов более
4-х миллионов, что дает полный список
размером почти в 1 гигабайт, что дает
время перестроения списка файлов в, к
примеру, тотальном коммандере десятки
минут. И критерий поиска точно не
определен. Нужна БД и индексы, однозначно.
-
- И я собрался под это дело создать
собственный сервер БД,
с блекджеком
и шлюхами PostgreSQL
+ PostGIS. Ибо все
равно назрела потребность уйти с Oracle
на более открытое и, что важнее, свободное
решение. Это получается полезное дело.
-
- В итоге я получил опыт установки и
первичной настройки PostgreSQL на Debian.
Что приятно :)
-
- Поскольку в процессе запуска БД в
эксплуатацию (надо было подключиться
с виндовой машины и работать с БД)
пришлось некоторое время гуглить,
полный рецепт запуска кажется
нетривиальным. Если бы предварительно
прочесть мануалы, все стало бы проще,
но мне не хотелось тратить день на
чтение. Хотелось по быстрому.
-
- Тут я и зафиксирую журнал установки
PostgreSQL 9.1.2 + PostGIS на Debian testing (wheezy) «по
быстрому». Установка всего из пакетов
дистра, ничего «левого».
-
- Создал виртмашину: виртбокс,
1 гиг память, 100 гиг диск, 2 ядра. Сетевой
интерфейс bridge с хостовым.
-
Установил оп.систему, подключив в
вирт.сидиром исошник
сетевой установки. При установке выбрал
базовые пакеты + ssh сервер.
-
- Поднастроил под себя дебианчик
(несущественные и ошибочные команды я
убрал из списка):
root@postgis:~# history
4 uname -a
11 cat /etc/fstab
16 tail -n 300 -f /var/log/syslog
18 nano /etc/apt/sources.list
# оставил только эти записи
deb http://mirror.yandex.ru/debian/ testing main contrib non-free
deb-src http://mirror.yandex.ru/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main
deb-src http://security.debian.org/ testing/updates main
deb http://mirror.yandex.ru/debian/ testing-proposed-updates contrib non-free main
deb-src http://mirror.yandex.ru/debian/ testing-proposed-updates contrib non-free main
|
21 nano /etc/dhcp/dhclient.conf
# поправил две строки
send host-name "postgis";
send dhcp-lease-time 360000;
|
22 reboot
27 aptitude install linux-headers-3.1.0-1-686-pae dkms make gcc
29 nano .bashrc
# добавил эти опции руту и своей основной учетке
shopt -s histappend
shopt -s cmdhist
export PROMPT_COMMAND='history -a'
export HISTFILESIZE=1000
export HISTSIZE=1000
export HISTCONTROL=ignoreboth:erasedups
|
38 aptitude update; aptitude safe-upgrade; aptitude full-upgrade
39 aptitude search postgis
|
- Установил PostgreSQL+PostGIS
43 aptitude install postgis
44 aptitude install postgresql-9.1-postgis
46 netstat -tuanp
|
- и оказалось, что слушает он только
на порту 127.0.0.1:5432 чего лично мне мало.
Дальше пошла настройка PostgreSQL
50 passwd postgres
51 /etc/init.d/postgresql restart
пытался найти как называется сервис, чтобы подключится с клиентской машины. Оказалось, что можно и без указания сервиса
53 locate pg_service.conf
55 less /usr/share/postgresql/9.1/pg_service.conf.sample
ставил админпак, чтобы pgAdmin не выступал
56 aptitude install postgresql-contrib
57 updatedb
61 aptitude search postgresql-contrib
62 aptitude install postgresql-contrib-9.1
63 locate adminpack
64 less /usr/share/postgresql/9.1/extension/adminpack—1.0.sql
65 psql -U postgres < /usr/share/postgresql/9.1/extension/adminpack—1.0.sql
а так нельзя. Надо по другому, см.ниже
66 su -l postgres
где-то тут все включилось и зашуршало
67 watch "netstat -tuanp"
|
это был history рута.
- Теперь, что я делал от имени пользователя
postgres, глядя в stuartellis.eu/articles/postgresql-setup
root@postgis:~# su -l postgres
postgres@postgis:~$ psql
postgres=# alter role postgres with encrypted password 'guesswhat';
|
Вероятно, тут был обратно рут:
nano /etc/postgresql/9.1/main/postgresql.conf
# внес строку
listen_addresses = '*'
nano /etc/postgresql/9.1/main/pg_hba.conf
# добавил строку
host all all 192.168.0.0/16 md5
root@postgis:~# /etc/init.d/postgresql restart
|
- После рестарта я смог на клиентской
машине законнектится pgAdmin-ом.
Параметры коннекта:
-
host: postgis.algis.com
-
port: 5432
-
db: postgres
-
user: postgres
-
pass: guesswhat
-
- И pgAdmin чего-то вякнул на тему adminpack
(server
instrumentation not installed). Я этот админпак
поставил
62 aptitude install postgresql-contrib-9.1
root@postgis:~# locate adminpack
так делать не надо:
65 psql -U postgres < /usr/share/postgresql/9.1/extension/adminpack—1.0.sql
err: Use "CREATE EXTENSION adminpack" to load this file.
postgresql.org/docs/9.1/static/sql-createextension
надо вот так:
postgres@postgis:~$ psql
postgres=# create extension adminpack;
CREATE EXTENSION
postgres=# /q
|
- но результат странный — предполагалось,
что у меня в pgAdmin будет доступ к файлам
конфигов сервера — не вышло. В интернетах
говорят, что эта функция работает только
если pgAdmin запустить на хосте, где работает
сервер.
-
А ошибка при попытке открыть конфиг
такая:
-
ERROR: absolute path not allowed
-
CONTEXT: SQL function "pg_file_length" statement 1
-
archives.postgresql.org/pgadmin-support/2009-10/msg00001
-
- Собственно, на этом первичная настройка
сервера БД заканчивается. На этом месте
я выключил виртмашину и сделал ее копию,
на всякий случай. Вдруг кому понадобится
сервер БД, а тут раз — уже сконфигуренная
машина. Файл архива весит менее 700
мегабайт. Мелочь, а приятно.
-
- Для полноты картины остается только
обрисовать, как я выполнил задачу по
загрузке списка файлов в таблицу и
сделал нужную мне выборку. Это уже к
теме «использование PostgreSQL». Но это я
сделаю в следующем посте. А то многовато
буков уже.
-
Спасибо за наводку, не слыхал о таком инструменте. Завяжу себе узелок на память - непременно испытать, что за студия такая. Да еще и тезка моя.
ОтветитьУдалить