Установка PostGIS на Debian 10

PostGIS — это расширение с открытым исходным кодом, которое добавляет в PostgreSQL поддержку объектов геоинформационных систем (ГИС). PostGIS хранит пространственные данные в типах geometry и geography и позволяет выполнять вычисления площади, расстояний, длины и периметра, а также строить пространственные индексы. Он оптимизирован для лёгких геометрий и помогает эффективнее использовать оперативную память при обработке больших объёмов геоданных.
Требования
- Сервер с Debian 10.
- Доступ root или пользователь с правами sudo.
Начало работы
Перед установкой рекомендуется обновить пакетную базу и пакеты до актуальных версий:
apt-get update -y
apt-get upgrade -yПосле обновления перезагрузите систему, чтобы все обновления вступили в силу.
Установка PostgreSQL
Сначала добавим официальный репозиторий PostgreSQL и его GPG-ключ. Установите gnupg2 и добавьте ключ:
apt-get install gnupg2 -y
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -Добавьте репозиторий PostgreSQL для вашей версии Debian:
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.listОбновите индекс пакетов и установите PostgreSQL 11:
apt-get update -y
apt-get install postgresql-11 -yПроверьте статус сервиса PostgreSQL:
systemctl status postgresqlВы должны увидеть подобный вывод:
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2020-04-12 04:58:43 UTC; 15s ago
Main PID: 2665 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 2359)
Memory: 0B
CGroup: /system.slice/postgresql.service
Apr 12 04:58:43 debian10 systemd[1]: Starting PostgreSQL RDBMS...
Apr 12 04:58:43 debian10 systemd[1]: Started PostgreSQL RDBMS.Если сервис активен, переходите к установке PostGIS.
Установка PostGIS
Установите пакеты PostGIS для PostgreSQL 11:
apt-get install postgis postgresql-11-postgis-2.5 -yПосле установки пакетов можно активировать расширение в конкретной базе данных.
Активировать PostGIS в PostgreSQL
Создайте пользователя и базу данных, затем включите расширение PostGIS.
Переключитесь на системного пользователя postgres:
su - postgresСоздайте пользователя и базу данных:
postgres@debian10:~$ createuser postgisuser
postgres@debian10:~$ createdb postgis_db -O postgisuserПодключитесь к только что созданной базе:
postgres@debian10:~$ psql -d postgis_dbВы увидите приглашение psql, например:
psql (12.2 (Debian 12.2-2.pgdg100+1), server 11.7 (Debian 11.7-0+deb10u1))
Type "help" for help.Включите расширение PostGIS:
postgis_db=# CREATE EXTENSION postgis;Проверьте версию PostGIS:
postgis_db=# SELECT PostGIS_version();Ожидаемый ответ может выглядеть так:
postgis_version
---------------------------------------
2.5 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)Выйдите из psql и из-под пользователя postgres:
postgis_db=# \q
postgres@debian10:~$ exitОптимизация PostgreSQL для PostGIS
PostGIS хранит и обрабатывает большие объёмы бинарных геометрий, поэтому стандартные настройки PostgreSQL часто требуют корректировки.
Откройте конфигурационный файл:
nano /etc/postgresql/11/main/postgresql.confРекомендуемые параметры (подберите значения под объём ОЗУ и нагрузку):
# Это значение обычно около 75% ОЗУ для сервера, посвящённого БД.
shared_buffers = 1500M
# Позволяет кешировать больше данных при сортировках.
work_mem = 64MB
# Количество сегментов контрольной точки для уменьшения I/O.
checkpoint_segments = 6
# Оценка стоимости случайной страницы по сравнению с последовательной.
random_page_cost = 2.0Совет: если база данных не единственная нагрузка на сервер, выделяйте ОЗУ консервативнее. После правок перезапустите сервис:
systemctl restart postgresqlКритерии приёмки
- PostGIS установлен на сервере и доступен в пакетах.
- Расширение postgis успешно создано в целевой базе данных.
- Команда SELECT PostGIS_version() возвращает версию.
- Сервер PostgreSQL работает стабильно после перезапуска.
Чеклист для ролей
Администратор сервера:
- Обновил систему и перезагрузил сервер.
- Добавил репозиторий PostgreSQL и GPG-ключ.
- Установил пакеты PostgreSQL и PostGIS.
DBA:
- Создал пользователя и базу данных.
- Активировал расширение postgis.
- Выполнил тест запроса SELECT PostGIS_version().
DevOps/разработчик приложения:
- Протестировал подключение из приложения.
- Проверил производительность запросов с индексами GiST/BRIN.
Мини-методология развертывания
- Подготовка ОС: обновление, установка зависимостей (gnupg2).
- Добавление официального репозитория PostgreSQL и ключа.
- Установка PostgreSQL нужной версии.
- Установка пакетов PostGIS для этой версии PostgreSQL.
- Создание БД и включение расширения postgis.
- Базовая оптимизация конфигурации и перезапуск сервиса.
- Тестирование функциональности и приемочные проверки.
Когда PostGIS может не подойти
- Если нужна лёгкая геометрика только для отображения карты на клиенте и нет серверной гео-аналитики — проще использовать геофункции на прикладном уровне или геокодинг в сторонних сервисах.
- Для очень больших растровых данных может быть выгоднее хранить файлы в специализированных форматах (GeoTIFF) и использовать связку с растровыми движками.
Краткий словарь
- PostGIS — расширение PostgreSQL для пространственных данных.
- geometry — тип для планарных геометрий.
- geography — тип для геоданных на сфере (широта/долгота).
- GiST — деревья индексации, часто используются для пространственных индексов.
Заключение
Вы успешно установили PostGIS на Debian 10 и активировали расширение в базе данных. После базовой оптимизации PostgreSQL вы получите более предсказуемую производительность при работе с геоданными. Для углублённой настройки изучите документацию PostGIS и рассматривайте настройку параметров в зависимости от объёма данных и нагрузки.
Важно: перед применением любых изменений в production-токене протестируйте конфигурацию на тестовой среде и сделайте резервные копии данных.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента