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

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показаны 24 промежуточные версии 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.
 
После нажатия кнопки «Create Droplet» инициализируется процесс создания сервера. Практически сразу, на указанный при регистрации акаунта ящик электронной почты, приходит письмо, содержащее пароль пользователя root.
После получения указанного пароля, необходимо подключиться к консоли созданного сервера. Кнопка «Droplets», нужно выбрать сервер и далее кнопки «Access» / «Console Access». В открывшемся окне консоли нужно указать имя пользователя root и пароль, полученный на адрес адрес электронной почты.
После получения указанного пароля, необходимо подключиться к консоли созданного сервера. Кнопка «Droplets», нужно выбрать сервер и далее кнопки «Access» / «Console Access». В открывшемся окне консоли нужно указать имя пользователя root и пароль, полученный на адрес адрес электронной почты.


[[Файл:Droplet-console-access.png]]
Из соображений безопасности, не рекомендуется работать от имени пользователя «root», поэтому лучше создать нового суперпользователя. В рассматриваемом примере - пользователь «dab».
 
[[Файл:Droplet-console-access-2.png]]
 
Из соображений безопасности, для дальнейшей работы не от имени пользователя «root», рекомендуется создать нового суперпользователя. В рассматриваемом примере - пользователь «dab».
<pre>
<pre>
adduser dab
adduser dab
Строка 34: Строка 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'
Строка 42: Строка 36:
</pre>
</pre>


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


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


Дальше необходимо создать каталог для нового кластера базы данных(БД). Это действие выполняется от имени пользователя «postgres», поэтому пользователь «postgres» становится владельцем созданного каталога.
Редактируем системные файлы PostgreSQL для доступа к серверу СУБД из сети интернет и включения протоколирования работы сервера.
<pre>
su postgres
mkdir /var/lib/postgresql/data
exit
</pre>


Отредактируем системные файлы для указания каталога данных через системную переменную «PGDATA» и добавления пути с утилитам Postgres.
<pre>sudo nano /etc/postgresql/9.3/main/postgresql.conf</pre>
<pre>sudo nano /etc/environment</pre>
Изменяем строку
Внутри файла дополняем значение переменной PATH, дописав в него через двоеточие путь «/usr/lib/postgresql/9.3/bin», а в конце этого файла дописываем строчку с указанием переменной PGDATA.
<pre>#listen_addresses = 'localhost'</pre>
Должно получиться примерно следующее:
на новое значение
<pre>
<pre>listen_addresses = '*'</pre>
PATH="/usr/bin:/usr/lib: ........:/usr/lib/postgresql/9.3/bin"
PGDATA="/var/lib/postgresql/data"
</pre>
Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».


Редактируем системные файлы Postgres для доступа к серверу СУБД из сети интернет.
Убираем ремарки для перечисленных ниже трёх строк раздела «ERROR REPORTING AND LOGGING». Значение параметра «logging_collector» устанавливаем «on». Результат должен выглядеть так:
<pre>log_destination = 'stderr'
...
logging_collector = on
...
log_directory = 'pg_log'</pre>


<pre>sudo nano /etc/postgresql/9.3/main/postgresql.conf</pre>
Сохраняем файл через нажатие клавиш «Ctrl+O» и закрываем редактор nano через «Ctrl+X».
Изменяем строку <pre>#listen_addresses = 'localhost'</pre> на новое значение <pre>listen_addresses = '*'</pre>


Команда
<pre>sudo nano /etc/postgresql/9.3/main/pg_hba.conf</pre>
<pre>sudo nano /etc/postgresql/9.3/main/pg_hba.conf</pre>
Изменяем строку  
Изменяем строку  
Строка 76: Строка 66:
<pre>host    all            all            0.0.0.0/0            md5</pre>
<pre>host    all            all            0.0.0.0/0            md5</pre>


Внимание! Приведён пример простейшей настройки Postgres для доступа из сети.  
Сохраняем файл через нажатие клавиш «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, возможно подключаться к СУБД через указание домена.

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