Установка сервера PostgreSQL на операционную систему Debian 4.0
Все описанные действия проводятся на "свежеустановленной" операционной системе Debian-4.0-r3, при инсталляции которой выбраны следующие параметры:
ВНИМАНИЕ: Чтобы ускорить процесс установки и настройки, руководство написано так, что большинство описанных действий можно выполнить, просто копируя команды, выделенные жирным шрифтом по одной в буфер и вставляя их в командную строку.
Увеличиваем максимальный объем разделяемой памяти ядра (в данном примере до 128 Мб). Для этого нужно дописать строчку "kernel.shmmax = 134217728" в файл /etc/sysctl.conf или выполнить первую из указанных команд. После этого выполнить вторую команду, которая считает файл /etc/sysctl.conf и установит новые параметры:
Копировать в буфер обменаdebian40r3:~# echo kernel.shmmax = `echo 128*1024*1024 | bc` >> /etc/sysctl.conf debian40r3:~# sysctl -p kernel.shmmax = 134217728 debian40r3:~#
Устанавливаем необходимые утилиты и библиотеки:
Копировать в буфер обменаdebian40r3:~# aptitude install alien libncurses5-dev [ сообщения, отображаемые в процессе установки, скрыты ] debian40r3:~#
Создаем необходимые ссылки и директории:
Копировать в буфер обменаdebian40r3:~# ln -s /lib/libreadline.so.5 /lib/libreadline.so.4 debian40r3:~# ln -s /usr/lib/libtermcap.so /usr/lib/libtermcap.so.2 debian40r3:~# mkdir -p /var/lock/subsys debian40r3:~#
Добавляем код локализации «en_US»:
Копировать в буфер обменаdebian40r3:~# echo en_US ISO-8859-1 >> /etc/locale.gen debian40r3:~# locale-gen Generating locales (this might take a while)... ru_RU.UTF-8... done en_US.ISO-8859-1... done Generation complete. debian40r3:~#
Предполагается, что в текущей директории находятся 4 нижеперечисленных файла из дистрибутива PostgreSQL (версия не имеет значения):
Копировать в буфер обменаdebian40r3:~/psql# ls postgresql-8.2.6-2.1C.i386.rpm postgresql-libs-8.2.6-2.1C.i386.rpm postgresql-contrib-8.2.6-2.1C.i386.rpm postgresql-server-8.2.6-2.1C.i386.rpm debian40r3:~/psql#
Преобразуем rpm-пакеты при помощи утилиты alien:
Копировать в буфер обменаdebian40r3:~/psql# alien --to-tgz *.rpm postgresql-8.2.6.tgz generated postgresql-contrib-8.2.6.tgz generated postgresql-libs-8.2.6.tgz generated postgresql-server-8.2.6.tgz generated debian40r3:~/psql#
Создаем директорию для хранения распакованных файлов и распаковываем в нее все архивы при помощи следующих двух команд:
Копировать в буфер обменаdebian40r3:~/psql# mkdir unpacked debian40r3:~/psql# for line in `ls *.tgz`; do tar -zxf $line -C unpacked; done debian40r3:~/psql#
Предустановочные скипты дистрибутива предназначены для другой операционной системы, и в Debian они будут работать некорректно, поэтому нужно выполнить следующие действия:
Это осуществляется следующими командами:
Копировать в буфер обменаdebian40r3:~/psql# groupadd -g 26 -o postgres debian40r3:~/psql# useradd -g postgres -o -r -d /var/lib/pgsql -s /bin/bash -c "PostgreSQL Server" -u 26 postgres debian40r3:~/psql# touch /var/log/pgsql debian40r3:~/psql# chown postgres:postgres /var/log/pgsql debian40r3:~/psql# chmod 0700 /var/log/pgsql debian40r3:~/psql#
После этого копируем распакованные файлы, удаляем временную директорию и архивы и обновляем кеш системных библиотек.
Копировать в буфер обменаdebian40r3:~/psql# mv unpacked/etc/rc.d/init.d/postgresql /etc/init.d debian40r3:~/psql# rm unpacked/etc/rc.d/ -r debian40r3:~/psql# cp -r unpacked/etc/ / debian40r3:~/psql# cp -r unpacked/var/ / debian40r3:~/psql# cp -r unpacked/usr/ / debian40r3:~/psql# rm -rf unpacked *tgz debian40r3:~/psql# ldconfig debian40r3:~/psql#
Сменим владельца каталога /var/lib/pgsql и добавим стартовый скрипт /etc/init.d/postgres в автозагрузку.
Копировать в буфер обменаdebian40r3:~/psql# chown postgres:postgres -R /var/lib/pgsql debian40r3:~/psql# update-rc.d postgresql defaults Adding system startup for /etc/init.d/postgresql ... /etc/rc0.d/K20postgresql -> ../init.d/postgresql /etc/rc1.d/K20postgresql -> ../init.d/postgresql /etc/rc6.d/K20postgresql -> ../init.d/postgresql /etc/rc2.d/S20postgresql -> ../init.d/postgresql /etc/rc3.d/S20postgresql -> ../init.d/postgresql /etc/rc4.d/S20postgresql -> ../init.d/postgresql /etc/rc5.d/S20postgresql -> ../init.d/postgresql debian40r3:~/psql#
Далее необходимо вставить в командную строку содержимое следующей команды (вместе с символом новой строки после EOF в конце):
Копировать в буфер обменаdebian40r3:~/psql# cat <<EOF > /tmp/header echo_failure() { echo -n FAIL } echo_success() { echo -n OK } failure() { echo_failure } success() { echo_success} EOF
Таким образом будет создан файл /tmp/header, содержащий в себе функции, которые нужно будет добавить в файл /etc/init.d/postgresql.
Далее модифицируем файл /etc/init.d/postgres, добавляя к нему файл с необходимыми функциями и комментируем строки ". $INITD/functions" и ". /etc/sysconfig/network":
Копировать в буфер обменаdebian40r3:~# mv /etc/init.d/postgresql{,.tmp} debian40r3:~# mv /tmp/header /etc/init.d/postgresql debian40r3:~# cat /etc/init.d/postgresql.tmp | sed 's|\(. $INITD/functions\)|#\0|' | sed 's|\(. /etc/sysconfig/network\)|#\0|' >> /etc/init.d/postgresql debian40r3:~# rm /etc/init.d/postgresql.tmp debian40r3:~# chmod +x /etc/init.d/postgresql
После этого инициализируем базу данных:
Копировать в буфер обменаdebian40r3:~# /etc/init.d/postgresql initdb Инициализируется база данных: [ OK ] debian40r3:~#
Меняем пароль для учетной записи SQL-сервера postgres. Сначала нужно изменить настройки безопасности: для этого в последней строке файла /var/lib/pgsql/data/pg_hba.conf нужно заменить "md5" на "trust". Таким образом, мы включаем "доверительный" режим. Отредактировать файл можно в любом текстовом редакторе, а в данном примере это делается при помощи следующих команд:
Копировать в буфер обменаdebian40r3:~# mv -f /var/lib/pgsql/data/pg_hba.conf{,.tmp} debian40r3:~# sed 's/md5$/trust/' < /var/lib/pgsql/data/pg_hba.conf.tmp > /var/lib/pgsql/data/pg_hba.conf debian40r3:~# /etc/init.d/postgresql start Запускается служба postgresql: [ OK ]
Теперь соединяемся с SQL-сервером под учетной записью postgres и меняем пароль учетной записи SQL-сервера postgres :
Копировать в буфер обменаdebian40r3:~# psql -d template1 -U postgres -h localhost Welcome to psql 8.3.3, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit template1=# alter user postgres with password 'new_password'; ALTER ROLE template1=# \q debian40r3:~#
Возвращаем настройки обратно и перезапускаем сервер:
Копировать в буфер обменаdebian40r3:~# mv -f /var/lib/pgsql/data/pg_hba.conf{.tmp,} debian40r3:~# /etc/init.d/postgresql restart Останавливается служба postgresql: [ OK ] Запускается служба postgresql: [ OK ] debian40r3:~#
Сервер PostgreSQL готов к работе!