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

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 17 промежуточных версий 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-2.png]]
[[Файл:Create-droplet-2.png|600px]]


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


Из соображений безопасности, не рекомендуется работать от имени пользователя «root», поэтому лучше создать нового суперпользователя. В рассматриваемом примере - пользователь «dab».
Из соображений безопасности, не рекомендуется работать от имени пользователя «root», поэтому лучше создать нового суперпользователя. В рассматриваемом примере - пользователь «dab».
Строка 30: Строка 28:
<pre>sudo locale-gen ru_RU.utf8</pre>
<pre>sudo locale-gen ru_RU.utf8</pre>


=== Установка Postgres + PostGIS ===
=== Установка PostgreSQL + PostGIS ===
Для установки СУБД необходимо добавить нужные репозитарии в систему.
На момент написания статьи, стандартный репозитарий Ubuntu содержит версию PostgreSQL 9.1. Для установки последней версии СУБД необходимо добавить нужные репозитарии в систему, в соответствии с рекомендациями сайта osgeo.org.
<pre>
<pre>
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" >> /etc/apt/sources.list'
Строка 38: Строка 36:
</pre>
</pre>


Непосредственно установка Postgres и PostGIS выполняется командой
Непосредственно установка PostgreSQL и PostGIS выполняется командой
<pre>sudo apt-get install Postgresql-9.3-postgis postgresql-contrib</pre>
<pre>sudo apt-get install Postgresql-9.3-postgis postgresql-contrib</pre>


Строка 44: Строка 42:
<pre>sudo passwd postgres</pre>
<pre>sudo passwd postgres</pre>


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


<pre>sudo nano /etc/postgresql/9.3/main/postgresql.conf</pre>
<pre>sudo nano /etc/postgresql/9.3/main/postgresql.conf</pre>
Строка 52: Строка 50:
<pre>listen_addresses = '*'</pre>
<pre>listen_addresses = '*'</pre>


Убираем ремарки для перечисленных ниже трёх строк раздела «ERROR REPORTING AND LOGGING». Результат должен выглядеть так:
Убираем ремарки для перечисленных ниже трёх строк раздела «ERROR REPORTING AND LOGGING». Значение параметра «logging_collector» устанавливаем «on». Результат должен выглядеть так:
<pre>log_destination = 'stderr'
<pre>log_destination = 'stderr'
...
...
Строка 70: Строка 68:
Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».
Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».


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


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


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


После перезагрузки сервер готов к работе. Подключиться к нему можно через IP VPS сервера и стандартный порт 5432.
Проверим результат установки расширений 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, возможно подключаться к СУБД через указание домена.
При наличие доменного имени и соответствующей настройке(делегированию) 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
* 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, возможно подключаться к СУБД через указание домена.

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