Установка PostgreSQL и PostGIS на VPS Linux: различия между версиями
Dab (обсуждение | вклад) Нет описания правки |
Dab (обсуждение | вклад) |
||
(не показано 17 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{Статья| | {{Статья|Опубликована|postgis-vps-install}} | ||
{{Аннотация|Статья является пошаговой инструкцией для установки СУБД | {{Аннотация|Статья является пошаговой инструкцией для установки СУБД 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 и пароль, полученный на адрес адрес электронной почты. | ||
Из соображений безопасности, не рекомендуется работать от имени пользователя «root», поэтому лучше создать нового суперпользователя. В рассматриваемом примере - пользователь «dab». | Из соображений безопасности, не рекомендуется работать от имени пользователя «root», поэтому лучше создать нового суперпользователя. В рассматриваемом примере - пользователь «dab». | ||
Строка 30: | Строка 28: | ||
<pre>sudo locale-gen ru_RU.utf8</pre> | <pre>sudo locale-gen ru_RU.utf8</pre> | ||
=== Установка | === Установка 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> | ||
Непосредственно установка | Непосредственно установка 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> | ||
Редактируем системные файлы | Редактируем системные файлы 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». | ||
Внимание! Приведён пример простейшей настройки | Внимание! Приведён пример простейшей настройки PostgreSQL для доступа из сети. | ||
Перезагружаем сервер | Перезагружаем сервер PostgreSQL командой | ||
<pre>sudo service postgresql restart</pre> | <pre>sudo service postgresql restart</pre> | ||
После перезагрузки | После перезагрузки PostgreSQL, переключаемся на пользователя «postgres», запускаем консольный клиент «psql» и устанавливаем пароль пользователя СУБД «postgres». | ||
<pre> | <pre> | ||
su postgres | su postgres | ||
psql | psql | ||
</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> | |||
Проверим результат установки расширений 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» инициализируется процесс создания сервера. Практически сразу, на указанный при регистрации аккаунта ящик электронной почты, приходит письмо, содержащее пароль пользователя 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, возможно подключаться к СУБД через указание домена.