Настройка QGIS + PostGIS + PostgreSQL на CentOS 7
Термины по теме: QGIS, PostGIS, PostgreSQL, Linux, CentOS
В данной инструкции мы разберем процесс установки и настройки сервера баз данных для хранения информации из QGIS. Предполагается, что последний будет установлен на другом компьютере и подключение будет выполняться по сети.
Установка, настройка PostgreSQL и PostGIS
Установка и запуск
Устанавливаем необходимые компоненты:
yum install postgresql-server postgresql-contrib postgis
* где postgresql-server — сервер баз данных PostgreSQL; postgresql-contrib — дополнительный набор утилит и средств анализа для postgres; postgis — компонент для хранения геоданных в postgres.
Инициализируем базу:
postgresql-setup initdb
Разрешаем и запускаем Postgres:
systemctl enable postgresql
systemctl start postgresql
Настройка
Смотрим путь расположения баз:
systemctl status postgresql
Находим строчку похожую на:
/usr/bin/postgres -D /var/lib/pgsql/data -p 5432
Нас интересует /var/lib/pgsql/data — это путь размещения баз и конфигурационных файлов.
Открываем конфигурационный файл postgresql.conf:
vi /var/lib/pgsql/data/postgresql.conf
Находим строку:
#listen_addresses = 'localhost'
И меняем ее на:
listen_addresses = '*'
Теперь открываем следующий файл:
vi /var/lib/pgsql/data/pg_hba.conf
И добавляем, примерно, следующее:
host all all 192.168.0.0/24 password
* данная строка позволяет подключаться к серверу с любого компьютера в сети 192.168.0.0; первая и вторая all дает возможность подключаться всем учетным записям и ко всем базам; password — для подключения необходима аутентификация.
Для применения настроек перезапускаем сервер баз данных:
systemctl restart postgresql
Открываем сетевой порт в брандмауэре:
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
Создание базы данных и пользователя
Для подключения к СУБД сначала заходим в систему под пользователем postgres:
su - postgres
Подключаемся к PostgreSQL:
psql
В целях безопасности, задаем пароль для учетной записи postgres:
=# ALTER USER postgres PASSWORD 'password';
* где password — создаваемый пароль.
Создаем базу данных:
=# CREATE DATABASE gis_db WITH ENCODING='UTF-8';
Подключаемся к созданной базе:
=# \connect gis_db;
К созданной базе добавляем расширения:
=# CREATE EXTENSION postgis;
=# CREATE EXTENSION postgis_topology;
=# CREATE EXTENSION fuzzystrmatch;
Создадим группу пользователей:
=# CREATE ROLE gis_group NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
Создадим пользователя gis_user:
=# CREATE ROLE gis_user WITH LOGIN PASSWORD 'gis_password';
Добавляем пользователя gis_user в группу gis_group:
=# GRANT gis_group TO gis_user;
Предоставляем права на базу gis_db группе gis_group:
=# GRANT ALL PRIVILEGES ON DATABASE gis_db TO GROUP gis_group;
Настройка QGIS для подключения к базе данных
Запускаем программу и в левой части кликаем правой кнопкой мыши по PostGIS - Создать соединение:
Заполняем форму:
* где:
- Название — произвольное название соединения для удобства;
- Сервер — IP-адрес или имя сервера баз данных;
- Порт — сетевой порт, на котором слушает PostgteSQL (5432 по умолчанию);
- База данных — имя созданной базы данных;
- Пользователь / Пароль — данные для аутентификации на сервере баз данных.
Нажимаем по Проверка соединения - мы должны получить подтверждение успешного подключения. После нажимаем OK и подтверждаем намерение сохранить пароль.
В ветке PostGIS появится наше подключение и схемы:
Также мы можем создать свою схему в базе PostgreSQL. Для этого кликаем правой кнопкой по нашему соединению (SQL-GIS) и выбираем Создать схему:
Вводим имя схемы, например, new_schema и нажимаем OK. В ветке PostGIS и в базе PostgreSQL появится новая схема. Увидеть ее можно следующей командой:
=# \connect gis_db;
=# select schema_name from information_schema.schemata;