Как установить PostgreSQL под Windows98/2000/XP

3 ноября 2004 года: Эта статья уже успела, увы, устареть. Сейчас скаченный по этой статье софт уже так не установить по инструкции в этой статье. Неблагодарное это дело - сопровождать линуксовые программы от версии к версии - все ведь знают, что в Линуксе даже команды порой меняются от версии к версии и уж точно от реализации к реализации. Сейчас пакет дистрибутива, описанный  в данной статье, занимает 17,7 МБ. Команда ipc-daemon уступила место команде ipc-daemon2. А команду initdb в новой версии дистрибутива я пока не сумел заставить работать. И сам пакет postgresql уже снова, как и прежде, не входит в базовый пакет, т.е. его нужно специально помечать на загрузку из Интернета.

Так что эта статья справедлива в полной мере лишь в отношении того дистрибутивного пакета, который я год назад принёс Степанову Юре. Быть может, у меня позже дойдут руки разобраться с новым пакетом и написать здесь новые инструкции.

Краткое описание

Начало материала с http://www.motivation.ru/

-- Вам нужна СУБД! --

Перед тем, как выбросить все деньги и приобрести Oracle, MS SQL или Sybase, Вам стоит взглянуть на PostgreSQL. Вы сможете не только сэкономить средства. Вы поставите у себя продукт, поддержка и использование которого намного легче, чем у упомянутых выше СУБД.

PostgreSQL - действительно отличный сервер баз данных. Он почти полностью совместим со стандартом SQL92, выполняет настоящие транзакции, в нем есть триггеры, встроенный SQL-препроцессор и еще многие другие замечательные особенности.

PostgreSQL - это настоящая СУБД для профессионалов, с полной поддержкой транзакций. Это значит, что любая транзакция может быть полностью "прокручена" в обратную сторону в случае машинного сбоя. Кроме того, имеющийся в PostgreSQL оптимизатор запросов анализирует Ваш запрос и выбирает наиболее эффективный способ его выполнения. PostgreSQL умеет работать с базами данных, размер которых превосходит максимально возможный размер файлов файловой системы ОС Вашего компьютера. Эти и другие возможности (а также почти полная совместимость со стандартами SQL92!) делают выбор PostgreSQL в качестве СУБД для Вашего бизнеса реальным и привлекательным.

-- В чью пользу сравнение? --

Часто сравнивают PostgreSQL и MySQL - оба этих программных продукта попадают в категорию свободного ПО. Однако, нет более далеких друг от друга серверов БД, чем PostgreSQL и MySQL. Последний весьма ограничен по своим возможностям, и недостатки его архитектуры приводят к большим трудностям при обработке множественных одновременных запросов, с которыми PostgreSQL справится легко.

Вероятно, в ситуации, когда всего несколько пользователей одновременно совершают несколько транзакций, PostgreSQL не сможет работать быстрее, чем MySQL, так как MySQL не выполняет той работы по эффективному сопровождению большого числа транзакций, которую выполняет PostgreSQL. Однако, если число пользователей будет действительно большим, превосходство PostgreSQL в скорости сразу станет очевидным.

В качестве СУБД PostgreSQL превосходен. Те, кому приходилось много писать на языке SQL, пишут для PostgreSQL с особым удовольствием, так как его язык запросов прост и понятен. К примеру, командой 'explain' в PostgreSQL пользоваться намного проще, чем 'explain plan' в Oracle, и это помогает правильно понять механизм выполнения и результат SQL запроса.

-- Особые возможности --

При разработке некоторых проектов бывает важно иметь возможность добавлять дополнительные функции к числу уже выполняемых той или иной СУБД. В этом случае, PostgreSQL позволяет вставлять обычный C код внутри SQL запроса, чтобы тем самым получать новые функции во множестве разных вариантов. Как результат, эффективность Вашего проекта может вырасти многократно.

С помощью Perl и PHP с сервером PostgreSQL можно работать в окне браузера, а наличие драйверов Windows ODBC позволяет компьютерам с операционной системой Windows быть на прямой связи с сервером PostgreSQL в локальной или глобальной сети.

Рекомендуется ставить PostgreSQL как СУБД в малых и средних компаниях, а также в научных учреждениях масштаба среднего или крупного института. Возможны инсталляция и использование PostgreSQL и в качестве основы корпоративной сети из нескольких сотен пользователей.

Конец материала с http://www.motivation.ru/

Технические подробности

PostgreSQL изначально писался для UNIX-систем. На официальном сайте PostgreSQL выложена текущая последняя версия PostgreSQL под UNIX. В последнее время появилась официальная версия PostgreSQL для Windows NT, которую Вы можете скачать прямо с FTP сервера Postgresql  ftp://ftp.postgresql.org/. Впрочем, я лично не советую это делать. Я скачал эту версию (postgresql-7.0-nt-binaries), и совершенно напрасно. Там в четырёх папках находится какой-то непонятный набор файлов, с которым неизвестно, что делать. Быть может, всё это работоспособно, но как это всё друг с другом связать, запустить - неизвестно. Документации в пакете нет никакой. В общем, полное отсутствие дружественности к пользователю.

Однако, всё же есть возможность проинсталлировать и использовать PostgreSQL под Windows98/2000/XP.

Общеизвестно, что операционные системы Windows и UNIX слишком сильно отличаются друг от друга (на уровне архитектуры), чтобы можно было каким-то образом, например, приспособить программы под UNIX для использования под Windows. Но такие попытки делаются уже давно и разными разработчиками. Например, есть shareware-пакет U/WIN Дэвида Корна на http://www.research.att.com/sw/tools/uwin/ (Смотрите статью о U/WIN К. Касперского "Как из Windows сделать UNIX"). Есть и другие альтернативы U/WIN'у - NuTCracker from DataFocus, Interix from Softway Systems, Cygwin, и, наконец, самая последняя разработка - гибридная операционная система Lindows.

Нас же интересует Cygwin на http://www.cygwin.com/. Cygwin - это POSIX-оболочка с открытыми исходниками, которая эмулирует UNIX-среду в Windows (при помощи единственной библиотеки cygwin1.dll), плюс набор чисто UNIX'овских и GNU программных пакетов, уже перекомпилированных под Windows. Cygwin-оболочка постоянно развивается, и иногда более новые версии оказываются несовместимыми со старыми приложениями, библиотеками и/или объектными файлами, скомпилированными со старыми версиями.

Дистрибутив Cygwin представляет из себя связный набор пакетов, каждый из которых представляет какой-либо модуль или приложение и запакован в UNIX-архив с расширением *.tar.bz2. Для распаковки подходит обычный WinRAR, а также PowerArchiver 2002 или 7-Zip.

В числе этих программных пакетов есть текущая последняя версия PostgreSQL под UNIX, взятая с официального сайта PostgreSQL и перекомпилированная под Windows. (Точнее, перекомпилированная под Cygwin, который работает под Windows).

PostgreSQL под Windows98/2000/XP: что нужно скачать и откуда

Конечно же, нет никакой необходимости скачивать текущую последнюю версию PostgreSQL под UNIX с официального сайта PostgreSQL.

Процесс скачивания осуществляем так, как это описано в статье "Установка PostgreSQL под Windows'98" :

Шаг 1. Скачиваем с сайта Cygwin программу-менеджер закачки и инсталляции. (Смотрите иконку справа). Запускаем её и выбираем "Download from Internet".

Дальше выбрать как, куда и откуда качать.


Install
Cygwin
now

Потом будет предложен набор пакетов для установки. По умолчанию выставлен базовый набор пакетов. Полное описание пакетов записывается в файл "setup.ini".

Кроме пакетов по умолчанию следует отметить ещё некоторые дополнительные пакеты. Для этого нужно нажать на кнопку "View", чтобы справа от нее появилось слово "Full". При этом в окне отобразится полный алфавитный список пакетов.

fig1.jpg (50184 bytes)

Выбор пакета на загрузку осуществляется путём проставления крестика в квадратике. Пакеты, которые НЕ помечены для загрузки, обозначены как "Skip". Итак, дополнительно нужно отметить для загрузки только пакет cygipc.

fig2.jpg (52836 bytes)

После этого следует убедиться, что отмечены на установку пакеты:

  1. cygwin-1.5.0 или старше
  2. cygutils
  3. PostgreSQL (раньше он не входил в базовый набор)

fig3.jpg (50503 bytes)

 

fig4.jpg (51398 bytes)

(Вообще-то они должны входить в базовый набор пакетов). Если при загрузке какого-либо из пакетов возникнет ошибка, то можно запустить Setup заново и выбрать другой сервер. При этом он загрузит только те пакеты, которых реально не хватает. Всё вместе это составит порядка 9 - 14 Мегабайт. Скачивать пакеты можно и вручную, только нужно знать, какие (Программа setup.exe в течение первых 10-15 минут скачивания создаёт в папке "release" пустые папки, которые затем и заполняет. Так что в этот момент можно и прерваться, а потом зайти на ftp-сервер и скачать в пустые папки содержимое одноимённых папок на ftp-сервере). При этом существует большое количество FTP-зеркал, с которых можно всё это скачать.

Шаг 2. Скачиваем текущую последнюю версию odbc-драйвера с ftp://ftp.postgresql.org/pub/odbc/versions/msi/ (например, psqlobdc-07_02_0005.zip - 513 КБ) (Ищите последнюю по дате выпуска версию).

Шаг 3. Скачиваем файл ".profile".

Шаг 4 (Необязательный). Начиная с 15 июля 2003 года (с появлением пакета CygIPC-2.00) процесс инсталляции PostgreSQL под Windows 98/2000/XP претерпел существенные изменения. До этого нужно было также отдельно скачивать пакет cygipc-1.14-1 (Cygwin InterProcess Communication) (с ftp://ftp.neuro.gatech.edu/users/cwilson/cygutils/cygipc/ в виде архива с расширением tar.bz2), который раньше был необходим для работы PostgreSQL под Windows 98/2000/XP. Сейчас же, по уверениям разработчиков, exe-файлы пакета CygIPC-2.00 включены в состав базовой инсталляции (по крайней мере, cygipc присутствует в списке cygwin-набора пакетов) и отдельно пакет CygIPC-2.00 скачивать уже не нужно, и что в базовой инсталляции по умолчанию отмечен cygwin-1.5.0., требуемый для   CygIPC-2.00. Поэтому на FTP-сайте ftp://ftp.neuro.gatech.edu/users/cwilson/cygutils/cygipc/, начиная с версии 2.00, в состав пакета CygIPC-2.00 уже не включают exe-файлы, а только их исходники, необходимые для перекомпилирования старых cygipc-приложений под новую схему работы (без обособленного cygipc-пакета). Такая новая схема инсталляции считается более удобной, т.к. теперь всё необходимое находится в одном cygwin-наборе пакетов. Единственное отличие в том, что exe-файлы пакета CygIPC-2.00 теперь инсталлируются в папку /usr/*, а не в /usr/local/*, как это было раньше.

Так что, если вдруг PostgreSQL под Windows 98/2000/XP не заработает, то можно попробовать скачать и установить последнюю обособленную версию cygipc - cygipc-1.14-1.

Инсталляция PostgreSQL под Windows98

(Сначала проинсталлируйте Apache-сервер + PHP - потому что с PostgreSQL будем работать через броузер + PHP-скрипты).

Шаг 1.  Инсталляция Base Cygwin Package (включая PostgreSQL) + cygipc.

Запустите setup.exe. Выберите "Install from Local Directory". Выберите куда ставить ("C:\Progra~1\Cygwin") и откуда ("...\release"). В окне Select Packages нажмите кнопку View. Справа от неё появится слово Full. В окне приводится список того, что будет инсталлироваться. По умолчанию инсталлируется базовый набор файлов - Base Cygwin Package. Нам его мало и нужно вручную доставить крестики в квадратики так, чтобы отметить для установки всё, что есть в этом окне.

Шаг 2 (Ненужный с появлением CygIPC-2.00). Инсталляция Cygipc.

Распакуйте файл cygipc-*.*-*.tar.bz2 с помощью WinRAR (можно применить PowerArchiver 2002 или 7-Zip) и переместите из него всё содержимое его папки usr в одноимённую папку (usr) в каталоге "C:\Program Files\Cygwin".

Шаг 3.  Настройка.

Запустите Cygwin Bash Shell и введите exit, чтобы сразу выйти. Из-за этого возникнет папка "C:\Program Files\Cygwin\home\<Текущий пользователь Windows>" (скорее всего, <unknown>). Если же папка не создастся, то, скорее всего из-за перегруженности файла autoexec.bat записями вида "SET ПЕРЕМЕННАЯ = путь;путь;..." и т.п., которые в изобилии записывают туда некоторые программы при инсталляции. В этом случае следует зарезервировать файл autoexec.bat и удалить из основной копии все эти записи.

Итак, в папку <Текущий пользователь Windows> нужно скопировать файл ".profile" (это автозагрузочный скрипт). Добавьте в autoexec.bat строку:

PATH C:\Progra~1\Cygwin\bin;%PATH%

и перезагрузите компьютер.
Запустите Сygwin Bash Shell и, убедившись, что скрипт ".profile" успешно отработал (например, выведя содержимое переменной PGDATA:

echo $PGDATA

), выполните в его среде команды:

ipc-daemon &
initdb
postmaster -i &

Проверить успешность установки можно запустив терминал psql:

psql template1

Остановить сервер проще всего командой:

pg_ctl stop

Шаг 4.  Инсталляция ODBC - драйвера (только для Windows 98).

Запускаете psqlodbc-07_02_0005.msi и так инсталлируете драйвер. Затем его нужно настроить так, как это рассказано в статье

"MSWindows и PostgreSQL, ODBC драйвера и их установка".

Пример значений параметров настройки ODBC-драйвера:

Data Source - PostgreSQL
Database - Template1
Server - ТЕСТ
User Name - unknown

(Здесь ТЕСТ - это имя компьютера (которое можно в Windows 98 увидеть, если щёлкнуть правой кнопкой по "Мой компьютер", выбрать Свойства->Общие->Пользователь, а Template1 - это база, уже созданная по умолчанию на PostgreSQL-сервере в результате команды dbinit).

После этого при помощи любого текстового редактора добавляете в конец файла ".profile" 2 строки:

ipc-daemon &
postmaster -i &

Финал

Ну вот собственно и все. Теперь вы можете работать с сервером PostgreSQL, с помощью любой программы в Microsoft Windows, которая знает, как общаться через ODBC драйвера. (Например, с помощью Apache-сервера + PHP).

Работа с PostgreSQL-сервером через Apache-сервер + PHP

1. Запускаете Apache-сервер.
2. Запускаете Cygwin Bash Shell. (При этом наш скрипт автоматически запускает PostgreSQL-сервер).
3. Запускаете в броузере php-файлы, общающиеся с PostgreSQL-сервером.

Подключение в php-файле осуществляется так:

$db_conn = pg_connect ("host=localhost user=unknown dbname=template1");
if (!$db_conn) print"Could not connect"; else print ("Connected successfully<br> ");

Чтобы закончить работу с PostgreSQL-сервером:

1. Остановите сервер командой:

pg_ctl stop

2. Выйдите из Cygwin Bash Shell командой:

exit.

Если просто закрыть окно Cygwin, то сервер некорректно выключится и потом, при следующем сеансе могут возникнуть проблемы. Чтобы исправить положение, уничтожьте вручную файл:

"C:\Program Files\Cygwin\usr\share\postgresql\data\postmaster.pid".

Примеры php-файлов для работы с PostgreSQL-сервером - лабораторная работа № 7 и лабораторная работа № 8.

Инсталляция PostgreSQL под Windows2000/XP

Инсталляция PostgreSQL под Windows2000/XP бывает 2 типов:

  1. Базовая - точно такая же, как и под Windows98.
  2. В качестве службы.

Я сам не пробовал такую инсталляцию. Тем более, что сейчас, с появлением пакета CygIPC-2.00, всё могло поменяться. Поэтому могу предложить только прошлогоднюю инструкцию по инсталляции (ещё со времён до появления пакета CygIPC-2.00, когда cygipc нужно было отдельно скачивать и устанавливать). Может быть, потом разберусь получше с инсталляцией PostgreSQL под Windows2000/XP и выложу здесь.

Ссылки по теме

Официальный сайт PostgreSQL

Cygwin User's Guide (67 КБ) Формат - HTM (ENG)

The Cygwin FAQ

Статья "SQL сервер PostgreSQL" (В. Вислобоков)

PostgreSQL FAQ (на русском языке)

Руководство администратора PostgreSQL (на русском языке)

Руководство пользователя PostgreSQL (на русском языке)

PostgreSQL JDBC Downloads

Сайт создан в системе uCoz