В данной статье будем выполнять установку 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)
Узнать кодовое имя своей системы можно выполнив в терминале:
- $ lsb_release -c
И так приступим. Нужно создать файл /etc/apt/sources.list.d/pgdg.list и прописать в нем адрес репозитория для PostgreSQL
- deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main
Если вы не знаете как это сделать можете выполнить все эти операции одной строкой
- 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).
Устанавливаем необходимые компоненты для нашей установки
- sudo apt-get install wget ca-certificates
- wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- sudo apt-get update
- sudo apt-get upgrade
- sudo apt-get install postgresql-9.5 pgadmin3
Мы импортировали ключ для работы с репозиторием. Обновляем список доступных программ. Проверяем что доступно для обновления, и обновляем. Устанавливаем postgresql-9.5 и pgadmin3 - графический инструмент для работы с PostgreSQL.
После установки, автоматически создается пользователь postgres, он нужен для работы с бд и для работы через консоль с помощью psql, postgres такой себе root для PostgreSQL.
Переключится в консоле под postgres можно двумя способами с помощью пароля пользователя postgres
- su postgres
или через root
- sudo -i -u postgres
- exit - вернутся в изначального пользователя
Как создать бд в PostgreSQL
- createdb test1
- # подключится к этой бд
- psql -d test1
- # проверка подключения (psql)
- \conninfo
Как создать таблицу
Создание таблицы схоже с MySQL (psql)
- CREATE TABLE playground (
- equip_id serial PRIMARY KEY,
- type varchar (50) NOT NULL,
- color varchar (25) NOT NULL,
- location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
- install_date date
- );
Просмотр имеющихся таблиц в БД
Для просмотра имеющихся таблиц в БД необходимо выполнить команду, (psql)
- test1=# \dt
- Список отношений
- Схема | Имя | Тип | Владелец
- --------+------------+---------+----------
- public | playground | таблица | postgres
- (1 строка)
Добавление записей в таблицу
Пример вставки записей (psql)
- INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
- INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');
Поигрались с PostgreSQL, работае? Ставим дальше)))
Установка PostGIS
Для установки PostGIS необходимо выполнить команду в терминале:
- sudo apt-get install postgresql-9.5-postgis-2.2 postgresql-contrib-9.5
- # Install pgRouting package
- sudo apt-get install postgresql-9.5-pgrouting
Включаем Adminpack
Adminpack предоставляет ряд вспомогательных функций для обеспечения дополнительных функциональных возможностей. Для этого в терминале выполняем команы:
- # входим в psql под пользователем postgres
- sudo -u postgres psql
- # Включаем расширение adminpack
- CREATE EXTENSION adminpack;
Время включить PostGIS, разработчика предупреждают, что нельзя в базе postgres включать расширение postgis, нужно создать пользовательскую базу и только в ней включать расширение postgis.
- 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:
- CREATE DATABASE gisdb;
- # подключаемся к вновь созданной базе данных
- \connect gisdb;
- # включаем postgis
- CREATE EXTENSION postgis;
# проверим как установилось- SELECT postgis_full_version();
- # или
- SELECT postgis_version();
Результат будет такого типа:
- postgis_full_version
- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 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
- (1 row)
Подключаем pgRouting
pgRouting - это расширение, добавляющее функции роутинга и другие возможности сетевого анализа в базу данных PostGIS/PostgreSQL.
- CREATE EXTENSION pgrouting;
- SELECT * FROM pgr_version();
Выходим из psql консоли
- \q
Как открыть внешний доступ к серверу
Вам, возможно, потребуется изменить pg_hba.conf и / или pg_ident.conf, postgresql.conf, чтобы разрешить внешний доступ
- sudo nano /etc/postgresql/9.5/main/pg_hba.conf
в конце файла после локальных правил, добавьте
- hostssl all all 0.0.0.0/0 md5
Перезапустить сервер БД
- sudo service postgresql restart
Перезапуск сервера если у вас нет доступа к консоле сервера
- SELECT pg_reload_conf();
Проверка где находятся файлы конфигов
- SELECT name, setting FROM pg_settings where category='File Locations';
Должно получится что то вроде этого
- name | setting
- -------------------+------------------------------------------
- config_file | /etc/postgresql/9.5/main/postgresql.conf
- data_directory | /var/lib/postgresql/9.5/main
- external_pid_file | /var/run/postgresql/9.5-main.pid
- hba_file | /etc/postgresql/9.5/main/pg_hba.conf
- ident_file | /etc/postgresql/9.5/main/pg_ident.conf
- (5 строк)
Включение PostGis расширений для новой базы
- CREATE DATABASE new_db;
- \connect new_db;
- CREATE EXTENSION postgis;
- CREATE EXTENSION postgis_topology;
- CREATE EXTENSION fuzzystrmatch;
- CREATE EXTENSION postgis_tiger_geocoder;
- CREATE EXTENSION pgrouting;
Теперь наша бд может работать с пространственными данными
- create table my_map(
- id bigserial primary key,
- name text,
- shape geometry
- );
- insert into my_map( name , shape) values ( 'Центр СПб' , ST_Point(30.3250575, 59.9174455));
Всем удачи.
Комментарии
Установка/Смена пароля пользователя postgres
ОтветитьВыполняется после подключения к базе
alter user postgres password 'postgres';