You are here: Foswiki>Gnumed Web>ConfigurePostgreSQLRu (14 Feb 2013, IvanLykov)EditAttach

Установка и настройка локального сервера PostgreSQL

Сервер PostgreSQL может быть запущен на том же компьютере, где клиент, или на другой машине. Начальная загрузка базы данных GNUmed лучше всего работает с компьютера, на котором запущен PostgreSQL.

Установка PostgreSQL

GNUmed умеет работать с PostgreSQL 8.3 и 8.4. Лучшие результаты получаются при 8.4. Если используете более раннюю версию, или будет обновлять и, возможно, понадобится обновление баз данных, см. страницу TroubleshootPostgreSQL.

Если используете Linux, то лучше использовать менеджер пакетов (Debian или Ubuntu apt, synaptic; openSUSE ZYpper; Fedora или Mandriva, или Red Hat RPM) для установки препакетированной версии сервера баз данных PostgreSQL. Ошибка (по состоянию на 29 июля 2009 г.), представляющая интерес для тех, кто только что установил Дебиан Testing, упоминается здесь. Пользователи ОС Windows могут загрузить программу установки отсюда или с сайта PostgreSQL (не забудьте выбрать последнюю версию), и установить ее.

В большинстве случаев вы должны иметь возможность сразу же перейти к разделу Установка прав доступа к базе данных на большинстве систем, где установлен стандартный кластер PostgreSQL, если не нужно особое управление данными (это означает, когда используете PostgreSQL практически только для GNUmed).

Если используете MS Windows, рекомендуется использовать Установщик GNUmed Все-в-одном. Однако, PostgreSQL может быть установлен отдельно.

Для Mac OS см. PostgresOnMac.

tip При проблемах с запуском, обращайтесь к Troubleshoot PostgreSQL.

Использование табличных пространств и/или зашифрованного хранения

Прочтите это, только если нужно использовать табличные пространства или зашифрованное хранилище.

Специальное управление данными может иметь смысл, если зашифрованное устройство или том используется и в других особых случаях. Это может потребовать создания табличных пространств PostgreSQL на зашифрованном или другом специальном хранилище через администратора базы данных. Как это сделать, описано в Руководстве PostgreSQL. Затем загрузчик поддерживает размещение баз данных GNUmed в табличные пространства, которые регистрируются далее в gnumed/server/bootstrap/bootstrap-standard.conf.template.

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

В противном случае, для любой "обычной" установки рекомендуется разрешить базы данных GNUmed располагаться в пределах исходного кластера данных, созданного при инициализации Postgres на сервере. Подробнее об этом здесь.

Шифрованное подключение к базе данных

Помните: мы не можем переоценить важность требования для безопасных подключений при доступе к клиническим данным.

Тем, кто хуже знаком с Postgres, чем с MySQL, может быть интересен краткий обзор безопасных соединений для Postgres в techrepublic.

Установка прав доступа к базе данных

tip Помните, что прежде, чем PostgreSQL сможет распознать любую конфигурацию, его необходимо перезагрузить. В Linux в качестве системного пользователя postgres или root необходимо вызвать /etc/init.d/postgresql-8.4 restart. В Windows выберите Перезагрузить конфигурацию из меню Пуск Windows в записи Postgresql.

Начальная загрузка базы данных

По умолчанию, как правило, шаг начальной загрузки по созданию базы данных GNUmed может быть сделан с нетронутыми правами доступа в PostgreSQL.

Разрешение клиентам получать доступ к базе данных

Пользователи Windows могут пропустить этот шаг, если они хотят подключиться только с той же машины, где их база данных.

Права доступа должны быть предоставлены до того, как Postgres примет подключения от любого
  • клиента GNUmed
  • доступа к данным от другой программы или
  • процесса резервного копирования.

Разрешение на подключение, как пользователя GNUmed, может управляться на разных уровнях. Управление разрешениями Postgres включает в себя один или более файлов конфигурации Postgres с некоторыми различиями между *nix и Windows. Конфигурационные файлы Postgres часто расположены правильно, но, если вы не можете найти файл, попробуйте команду locate filename (на *nix).

  • Linux
    • на non-Debian (Fedora, Red Hat, SuSE) они, вероятно, останутся в /var/lib/postgresql/
    • на Debian они будут перенесены в /etc/postgresql/x.y/main
  • Mac OS X (10.6+, по крайней мере)
      • вероятно, находится, например, в /Library/PostgreSQL/8.4/data/
  • MS Windows
      • в C:\Program Files\PostgreSQL\x.y\data

Linux (Debian, Ubuntu и др.) и Mac OS

Под root или через sudo вставьте эти две строки

# allow anyone knowing the proper password to log into our GNUmed databases:
local   samegroup      +gm-logins                    md5
(# разрешает любому, кто знает соответствующий пароль, войти в вашу базу данных GNUmed)

в файл pg_hba.conf сразу после строки

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

но перед любой строкой, начинающейся с local.

После изменения должно выглядеть так:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# allow anyone knowing the proper password to log into our GNUmed databases:
local   samegroup     +gm-logins                    md5

local   ...                    ...                                  ...
local   ...                    ...                                  ...

Windows

В настоящее время после установки по умолчанию никаких изменений в pg_hba.conf не требуется:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5

# IPv6 local connections:
#host    all         all         ::1/128               md5
(локальные подключения IPv4 и IPv6)

Разрешение доступа к серверу базы данных с других компьютеров в сети

Следующие изменения необходимы, только если нужно получить доступ к серверу GNUmed с других машин в сети.

В postgresql.conf должно быть сделано такое изменение:

  • установите параметр listen_address именно на те сетевые интерфейсы, на которых вам нужно, чтобы были доступны ваши базы данных GNUmed для других машин в вашей сети
  • установка этого параметра на listen_address='*' сделает так, что PostgreSQL будет прослушивать весь сетевой интерфейс

Вы также должны добавить разрешения на удаленный доступ для других машин (который похож на доступ из базы данных самого сервера, за исключением того, что host лучше, чем маркер local). Предположим, что машины в вашей сети несут IP-адреса в диапазоне от 192.168.178.1 до 192.168.178.254. Добавьте их в pg_hba.conf:

# allow anyone knowing the proper password to log into our GNUmed databases:
host    samegroup    +gm-logins      192.168.178.0/24      md5
(# разрешает любому, кто знает соответствующий пароль, войти в вашу базу данных GNUmed)

Добавьте эту строку непосредственно перед первой строкой, которая начинается с host. Это, обычно, после строки, начинающиеся с local.

После изменения должно выглядеть так:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   samegroup     +gm-logins                    md5

local   ...                    ...                                  ...
local   ...                    ...                                  ...

... other lines ...

# allow anyone knowing the proper password to log into our GNUmed databases:
host    samegroup    +gm-logins     192.168.178.0/24       md5

host ...                      ...                     ...                              ...
host ...                      ...                     ...                              ...

Включение начальной загрузки через "другие" системные учетные записи: НЕ требуется для простой локальной установки базы данных

Читайте это, только если нужно сделать начальную загрузку в качестве пользователя, отличного root (заметим, что это необходимо редко и не рекомендуется, и не поддерживается - лучше знать, что вы делаете!).

Если собираетесь разрешить загрузчику запуск под другой системной учетной записью, кроме root или postgres (скажем, gmadm), то этот "другой пользователь" сначала должен быть настроен на разрешение следующих подключений Postgres:

connect to _template1_ with the _database account_ *postgres* on _localhost_
connect to the GNUmed database (_gnumed_v[N]_) with the _database account_ *postgres* on _localhost_

pg_ident.conf

Предостережение: будьте особенно осторожны, чтобы не изменить вторую строку postgres-alikes   postgres   postgres , иначе можете потерять доступ к базам данных, например, postgres, без которого вы не сможете делать автоматическое обслуживание, установку и обновление (например, обновление пакета или операцию автосжатия).

gm-dbo-alikes gmadm               gm-dbo
postgres-alikes postgres        postgres
postgres-alikes gmadm             postgres

pg_hba.conf

Предостережение: необходимо убедиться, что строка ident postgres-alikes идет выше строки postgres ident sameuser. В противном случае аутентификация не удастся, так как postgres не проверяет последующие строки после того, как он нашел соответствие.

# allow some people to impersonate "postgres" when connecting to template1
local   template1       postgres                        ident postgres-alikes
# replace N with the database version you want to install
local   gnumed_vN     postgres                       ident postgres-alikes

# allow real "postgres" to connect to all other databases, too
local   all             postgres                                ident sameuser

# allow some people to impersonate "gm-dbo"
local   template1         gm-dbo                           ident gm-dbo-alikes
(# разрешить кому-либо исполнять роль "postgres" при подключении к template1 ... # замените N версией базы данных, которая нужна вам для инсталляции ... # разрешить действительному "postgres" подключаться также ко всем другим базам данных ... # разрешить кому-либо исполнять роль "gm-dbo")

Выполнение установки или обновления "бэкэнда" базы данных GNUmed

Помните, что Postgres необходимо перезагрузить, прежде он сможет распознать любую конфигурацию. Сделайте это, как системный пользователь root, вызвав /etc/init.d/postgresql-8.4 restart.

После этого можно приступить к разделу Установка и обновление базы данных GNUmed.
Topic revision: 14 Feb 2013, IvanLykov
 
Download.png
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback
Powered by Olark