В данной статье будем выполнять установку PostgreSQL 9.5 и PostGIS 2.2 на Ubuntu 14.04

Что такое PostgreSQL

Зачем вам может пригодится PostgreSQL. Это быстро развивающаяся open source база данных, легко расширяемая, имеет много полезных расширений в моем случае это PostGIS, поддерживает рекурсивные запросы, может хранить геоданные и обрабатывать их, имеет очень широкий спектр типов полей, таких как JSON поля, массивы, пользовательские типы, массивы помещенные в поля и т. д.. У PostgreSQL есть и недостатки, но меня интересуют его достоинства, а это в основном работа с пространственными данными через PostGIS.

Установка PostgreSQL

Устанавливаем PostgreSQL, так как из версии в версию может меняться формат базы данных и ее дамп, рекомендуется на всех серверах держать базу данных одной версии, в нашем случае, это будет PostgreSQL 9.5 и PostGIS 2.2.

Нужно подключить репозиторий с PostgreSQL для каждой версии Ubuntu и debian он свой и отличается по кодовому имени

  • Debian 7 (wheezy), 8 (jessie) and unstable (sid) 64/32 bit (amd64/i386)
  • Ubuntu 12.04 (precise), 14.04 (trusty), 15.10 (wily), 16.04 (xenial) 64/32 bit (amd64/i386)

Узнать кодовое имя своей системы можно выполнив в терминале:

  1. $ lsb_release -c

И так приступим. Нужно создать файл /etc/apt/sources.list.d/pgdg.list и прописать в нем адрес репозитория для PostgreSQL

  1. deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main

Если вы не знаете как это сделать можете выполнить все эти операции одной строкой

  1. sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Создает файл источника репозитория для PostgreSQL с указанием в нем версии нашей операционной системы, в моем случае это Ubuntu 14.04 (trusty).

Устанавливаем необходимые компоненты для нашей установки

  1. sudo apt-get install wget ca-certificates
  2. wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  3. sudo apt-get update
  4. sudo apt-get upgrade
  5. sudo apt-get install postgresql-9.5 pgadmin3

Мы импортировали ключ для работы с репозиторием. Обновляем список доступных программ. Проверяем что доступно для обновления, и обновляем. Устанавливаем postgresql-9.5 и pgadmin3 - графический инструмент для работы с PostgreSQL.

После установки, автоматически создается пользователь postgres, он нужен для работы с бд и для работы через консоль с помощью psql, postgres такой себе root для PostgreSQL.

Переключится в консоле под postgres можно двумя способами с помощью пароля пользователя postgres

  1. su postgres

или через root

  1. sudo -i -u postgres
  2. exit - вернутся в изначального пользователя

Как создать бд в PostgreSQL

  1. createdb test1
  2. # подключится к этой бд
  3. psql -d test1
  4. # проверка подключения (psql)
  5. \conninfo

Как создать таблицу

Создание таблицы схоже с MySQL (psql)

  1. CREATE TABLE playground (
  2. equip_id serial PRIMARY KEY,
  3. type varchar (50) NOT NULL,
  4. color varchar (25) NOT NULL,
  5. location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
  6. install_date date
  7. );

Просмотр имеющихся таблиц в БД

Для просмотра имеющихся таблиц в БД необходимо выполнить команду, (psql)

  1. test1=# \dt
  2. Список отношений
  3. Схема | Имя | Тип | Владелец
  4. --------+------------+---------+----------
  5. public | playground | таблица | postgres
  6. (1 строка)

Добавление записей в таблицу

Пример вставки записей (psql)

  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

Поигрались с PostgreSQL, работае? Ставим дальше)))

Установка PostGIS

Для установки PostGIS необходимо выполнить команду в терминале:

  1. sudo apt-get install postgresql-9.5-postgis-2.2 postgresql-contrib-9.5
  2. # Install pgRouting package
  3. sudo apt-get install postgresql-9.5-pgrouting

Включаем Adminpack

Adminpack предоставляет ряд вспомогательных функций для обеспечения дополнительных функциональных возможностей. Для этого в терминале выполняем команы:

  1. # входим в psql под пользователем postgres
  2. sudo -u postgres psql
  3. # Включаем расширение adminpack
  4. CREATE EXTENSION adminpack;

Время включить PostGIS, разработчика предупреждают, что нельзя в базе postgres включать расширение postgis, нужно создать пользовательскую базу и только в ней включать расширение postgis.

  1. Never install PostGIS in the postgres database, create a user database You can also enable the PostGIS extension here (or with the GUI as described below)

Как создать свою бд в psql

Создаем свою бд в psql:

  1. CREATE DATABASE gisdb;
  2. # подключаемся к вновь созданной базе данных
  3. \connect gisdb;
  4. # включаем postgis
  5. CREATE EXTENSION postgis;
    # проверим как установилось
  6. SELECT postgis_full_version();
  7. # или
  8. SELECT postgis_version();

Результат будет такого типа:

  1. postgis_full_version
  2. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. POSTGIS="2.2.1 r14555" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.10.1, released 2013/08/26" LIBXML="2.9.1" LIBJSON="0.11.99" RASTER
  4. (1 row)

Подключаем pgRouting

pgRouting - это расширение, добавляющее функции роутинга и другие возможности сетевого анализа в базу данных PostGIS/PostgreSQL.

  1. CREATE EXTENSION pgrouting;
  2. SELECT * FROM pgr_version();

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

  1. \q

Как открыть внешний доступ к серверу

Вам, возможно, потребуется изменить pg_hba.conf и / или pg_ident.conf, postgresql.conf, чтобы разрешить внешний доступ

  1. sudo nano /etc/postgresql/9.5/main/pg_hba.conf

в конце файла после локальных правил, добавьте

  1. hostssl all all 0.0.0.0/0 md5

Перезапустить сервер БД

  1. sudo service postgresql restart

Перезапуск сервера если у вас нет доступа к консоле сервера

  1. SELECT pg_reload_conf();

Проверка где находятся файлы конфигов

  1. SELECT name, setting FROM pg_settings where category='File Locations';

Должно получится что то вроде этого

  1. name | setting
  2. -------------------+------------------------------------------
  3. config_file | /etc/postgresql/9.5/main/postgresql.conf
  4. data_directory | /var/lib/postgresql/9.5/main
  5. external_pid_file | /var/run/postgresql/9.5-main.pid
  6. hba_file | /etc/postgresql/9.5/main/pg_hba.conf
  7. ident_file | /etc/postgresql/9.5/main/pg_ident.conf
  8. (5 строк)

Включение PostGis расширений для новой базы

  1. CREATE DATABASE new_db;
  2. \connect new_db;
  3. CREATE EXTENSION postgis;
  4. CREATE EXTENSION postgis_topology;
  5. CREATE EXTENSION fuzzystrmatch;
  6. CREATE EXTENSION postgis_tiger_geocoder;
  7. CREATE EXTENSION pgrouting;

Теперь наша бд может работать с пространственными данными

  1. create table my_map(
  2. id bigserial primary key,
  3. name text,
  4. shape geometry
  5. );
  6. insert into my_map( name , shape) values ( 'Центр СПб' , ST_Point(30.3250575, 59.9174455));

Всем удачи.