Установка PostgreSQL и PostGIS на VPS Linux: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 26 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Статья|Черновик|postgres-postgis-vps-linux}}
{{Статья|Опубликована|postgis-vps-install}}


{{Аннотация|Статья является пошаговой инструкцией для установки СУБД Postgres с пространственным расширением PostGIS на виртуальный выделенный сервер(VPS). Рассматривается вариант использования хостинг провайдера DigitalOcean. В качестве операционной системы использовалась Ubuntu 12.04 Статья рассчитана на пользователей Linux начального уровня.}}
{{Аннотация|Статья является пошаговой инструкцией для установки СУБД PostgreSQL с пространственным расширением PostGIS на виртуальный выделенный сервер (VPS). Рассматривается вариант использования хостинг провайдера DigitalOcean. В качестве операционной системы использовалась Ubuntu 12.04 Статья рассчитана на пользователей Linux начального уровня.}}


== Решаемая задача ==
== Решаемая задача ==
Возникла необходимость публикации в сети интернет пространственной базы данных с использованием надёжного и недорогого хостинга. Создаваемая база данных должна быть легко масштабируема в дальнейшем, при необходимости.
Возникла необходимость публикации в сети интернет пространственной базы данных с использованием надёжного и недорогого хостинга. Создаваемая база данных должна быть легко масштабируема в дальнейшем. Поэтому, в рамках решения данной задачи, дано описание настроек VPS конкретного провайдера. По этой же причине, отсутствует описание работы по созданию таблиц, так как база данных переносится на VPS в виде готового скрипта резервной копии.


== Пошаговая инструкция ==
== Пошаговая инструкция ==
Строка 13: Строка 13:
Кнопка «Create» вызывает диалог для указания параметров создаваемого сервера. Необходимо указать имя, выбрать параметры, регион месторасположения и операционную систему создаваемого сервера.
Кнопка «Create» вызывает диалог для указания параметров создаваемого сервера. Необходимо указать имя, выбрать параметры, регион месторасположения и операционную систему создаваемого сервера.


[[Файл:Create-droplet.png]]
[[Файл:Create-droplet-2.png|600px]]


[[Файл:Create-droplet-2.png]]
После нажатия кнопки «Create Droplet» инициализируется процесс создания сервера. Практически сразу, на указанный при регистрации аккаунта ящик электронной почты, приходит письмо, содержащее пароль пользователя root и IP адрес созданного VPS.
После получения указанного пароля, необходимо подключиться к консоли созданного сервера. Кнопка «Droplets», нужно выбрать сервер и далее кнопки «Access» / «Console Access». В открывшемся окне консоли нужно указать имя пользователя root и пароль, полученный на адрес адрес электронной почты.
 
Из соображений безопасности, не рекомендуется работать от имени пользователя «root», поэтому лучше создать нового суперпользователя. В рассматриваемом примере - пользователь «dab».
<pre>
adduser dab
adduser dab sudo
</pre>
После создания нового пользователя, необходимо выполнить команду «exit» и войти в систему уже под именем нового пользователя.
 
Следующий этап настройки сервера - установка русской локали в операционной системе.
<pre>sudo locale-gen ru_RU.utf8</pre>
 
=== Установка PostgreSQL + PostGIS ===
На момент написания статьи, стандартный репозитарий Ubuntu содержит версию PostgreSQL 9.1. Для установки последней версии СУБД необходимо добавить нужные репозитарии в систему, в соответствии с рекомендациями сайта osgeo.org.
<pre>
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" >> /etc/apt/sources.list'
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
</pre>
 
Непосредственно установка PostgreSQL и PostGIS выполняется командой
<pre>sudo apt-get install Postgresql-9.3-postgis postgresql-contrib</pre>
 
В процессе инсталляции СУБД, пользователь «postgres» уже создан автоматически, поэтому достаточно просто назначить ему свой пароль командой:
<pre>sudo passwd postgres</pre>


После нажатия кнопки «Create Droplet» инициализируется процесс создания сервера. Практически сразу, на указанный при регистрации акаунта ящик электронной почты, приходит письмо, содержащее пароль пользователя root.
Редактируем системные файлы PostgreSQL для доступа к серверу СУБД из сети интернет и включения протоколирования работы сервера.
После получения указанного пароля, необходимо подключиться к консоли созданного сервера. Кнопка «Droplets», нужно выбрать сервер и далее кнопки «Access» / «Console Access». В открывшемся окне консоли нужно указать имя пользователя root и пароль, полученный на адрес адрес электронной почты.
 
<pre>sudo nano /etc/postgresql/9.3/main/postgresql.conf</pre>
Изменяем строку
<pre>#listen_addresses = 'localhost'</pre>
на новое значение
<pre>listen_addresses = '*'</pre>
 
Убираем ремарки для перечисленных ниже трёх строк раздела «ERROR REPORTING AND LOGGING». Значение параметра «logging_collector» устанавливаем «on». Результат должен выглядеть так:
<pre>log_destination = 'stderr'
...
logging_collector = on
...
log_directory = 'pg_log'</pre>
 
Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».


[[Файл:Droplet-console-access.png]]
Команда
<pre>sudo nano /etc/postgresql/9.3/main/pg_hba.conf</pre>
Изменяем строку
<pre>host    all            all            127.0.0.1/32            md5</pre>
на новое значение
<pre>host    all            all            0.0.0.0/0            md5</pre>


[[Файл:Droplet-console-access-2.png]]
Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».


Внимание! Приведён пример простейшей настройки PostgreSQL для доступа из сети.


Перезагружаем сервер PostgreSQL командой
<pre>sudo service postgresql restart</pre>


После перезагрузки PostgreSQL, переключаемся на пользователя «postgres», запускаем консольный клиент «psql» и устанавливаем пароль пользователя СУБД «postgres».
<pre>
su postgres
psql
</pre>
<syntaxhighlight lang="sql">
ALTER USER postgres with encrypted password 'укажите-ваш-пароль';
</syntaxhighlight>


=== Создание пространственной базы данных ===


Продолжая работать в консольном клиенте «psql» создадим нового пользователя PostgreSQL, который будет являться владельцем создаваемой пространственной базы данных. В данном примере это пользователь с именем «geoadmin». Создаём новую базу данных с названием «geodatabase».
<syntaxhighlight lang="sql">
CREATE ROLE geoadmin NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
ALTER USER geoadmin with encrypted password 'укажите-ваш-пароль';
CREATE DATABASE geodatabase WITH OWNER = geoadmin ENCODING = 'UTF8';
</syntaxhighlight>
Выходим из консоли «psql»
<pre>\q</pre>
Запускаем консоль «psql» теперь с подключением к созданной базе данных.
<pre>psql -d geodatabase</pre>


Подключаем пространственные расширения PostGIS и явно указываем владельца «geoadmin» для созданных служебных таблиц и представлений.
<syntaxhighlight lang="sql">
CREATE EXTENSION postgis SCHEMA public;
CREATE SCHEMA topology;
CREATE EXTENSION postgis_topology SCHEMA topology;
ALTER TABLE geometry_columns OWNER TO geoadmin;
ALTER TABLE geography_columns OWNER TO geoadmin;
ALTER TABLE spatial_ref_sys OWNER TO geoadmin;
</syntaxhighlight>


Проверим результат установки расширений PostGIS
<syntaxhighlight lang="sql">SELECT PostGIS_Full_Version();</syntaxhighlight>
<pre>
                                                                            postgis_full_version
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
POSTGIS="2.1.1 r12113" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009" GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8" LIBJSON="UNKNOWN" TOPOLOGY RASTER
(1 row)
</pre>


Сервер с пространственной базой данных готов к работе. Подключиться к нему можно через IP VPS сервера и стандартный порт 5432.
При наличие доменного имени и соответствующей настройке(делегированию) DNS, возможно подключаться к СУБД через указание домена.


== Ссылки на используемые ресурсы ==
== Ссылки на используемые ресурсы ==
* http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt
* http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt
* http://www.postgresql.org/docs/9.3/static/index.html

Текущая версия от 14:11, 27 марта 2014

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/postgis-vps-install.html


Статья является пошаговой инструкцией для установки СУБД PostgreSQL с пространственным расширением PostGIS на виртуальный выделенный сервер (VPS). Рассматривается вариант использования хостинг провайдера DigitalOcean. В качестве операционной системы использовалась Ubuntu 12.04 Статья рассчитана на пользователей Linux начального уровня.

Решаемая задача

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

Пошаговая инструкция

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

Создание VPS сервера

VPS сервер в терминологии DigitalOcean называется «droplet». Ассоциация здесь простая: океан - капля. Кнопка «Create» вызывает диалог для указания параметров создаваемого сервера. Необходимо указать имя, выбрать параметры, регион месторасположения и операционную систему создаваемого сервера.

Create-droplet-2.png

После нажатия кнопки «Create Droplet» инициализируется процесс создания сервера. Практически сразу, на указанный при регистрации аккаунта ящик электронной почты, приходит письмо, содержащее пароль пользователя root и IP адрес созданного VPS. После получения указанного пароля, необходимо подключиться к консоли созданного сервера. Кнопка «Droplets», нужно выбрать сервер и далее кнопки «Access» / «Console Access». В открывшемся окне консоли нужно указать имя пользователя root и пароль, полученный на адрес адрес электронной почты.

Из соображений безопасности, не рекомендуется работать от имени пользователя «root», поэтому лучше создать нового суперпользователя. В рассматриваемом примере - пользователь «dab».

adduser dab
adduser dab sudo

После создания нового пользователя, необходимо выполнить команду «exit» и войти в систему уже под именем нового пользователя.

Следующий этап настройки сервера - установка русской локали в операционной системе.

sudo locale-gen ru_RU.utf8

Установка PostgreSQL + PostGIS

На момент написания статьи, стандартный репозитарий Ubuntu содержит версию PostgreSQL 9.1. Для установки последней версии СУБД необходимо добавить нужные репозитарии в систему, в соответствии с рекомендациями сайта osgeo.org.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" >> /etc/apt/sources.list'
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update

Непосредственно установка PostgreSQL и PostGIS выполняется командой

sudo apt-get install Postgresql-9.3-postgis postgresql-contrib

В процессе инсталляции СУБД, пользователь «postgres» уже создан автоматически, поэтому достаточно просто назначить ему свой пароль командой:

sudo passwd postgres

Редактируем системные файлы PostgreSQL для доступа к серверу СУБД из сети интернет и включения протоколирования работы сервера.

sudo nano /etc/postgresql/9.3/main/postgresql.conf

Изменяем строку

#listen_addresses = 'localhost'

на новое значение

listen_addresses = '*'

Убираем ремарки для перечисленных ниже трёх строк раздела «ERROR REPORTING AND LOGGING». Значение параметра «logging_collector» устанавливаем «on». Результат должен выглядеть так:

log_destination = 'stderr'
...
logging_collector = on
...
log_directory = 'pg_log'

Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».

Команда

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

Изменяем строку

host    all             all             127.0.0.1/32            md5

на новое значение

host    all             all             0.0.0.0/0            md5

Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».

Внимание! Приведён пример простейшей настройки PostgreSQL для доступа из сети.

Перезагружаем сервер PostgreSQL командой

sudo service postgresql restart

После перезагрузки PostgreSQL, переключаемся на пользователя «postgres», запускаем консольный клиент «psql» и устанавливаем пароль пользователя СУБД «postgres».

su postgres
psql
ALTER USER postgres with encrypted password 'укажите-ваш-пароль';

Создание пространственной базы данных

Продолжая работать в консольном клиенте «psql» создадим нового пользователя PostgreSQL, который будет являться владельцем создаваемой пространственной базы данных. В данном примере это пользователь с именем «geoadmin». Создаём новую базу данных с названием «geodatabase».

CREATE ROLE geoadmin NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
ALTER USER geoadmin with encrypted password 'укажите-ваш-пароль';
CREATE DATABASE geodatabase WITH OWNER = geoadmin ENCODING = 'UTF8';

Выходим из консоли «psql»

\q

Запускаем консоль «psql» теперь с подключением к созданной базе данных.

psql -d geodatabase

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

CREATE EXTENSION postgis SCHEMA public;
CREATE SCHEMA topology;
CREATE EXTENSION postgis_topology SCHEMA topology;
ALTER TABLE geometry_columns OWNER TO geoadmin;
ALTER TABLE geography_columns OWNER TO geoadmin;
ALTER TABLE spatial_ref_sys OWNER TO geoadmin;

Проверим результат установки расширений PostGIS

SELECT PostGIS_Full_Version();
                                                                            postgis_full_version
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 POSTGIS="2.1.1 r12113" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009" GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8" LIBJSON="UNKNOWN" TOPOLOGY RASTER
(1 row)

Сервер с пространственной базой данных готов к работе. Подключиться к нему можно через IP VPS сервера и стандартный порт 5432. При наличие доменного имени и соответствующей настройке(делегированию) DNS, возможно подключаться к СУБД через указание домена.

Ссылки на используемые ресурсы