## 🚀 Полная инструкция по установке PostGIS для aaPanel PostgreSQL 18
### Шаг 1: Установка необходимых зависимостей
```bash
sudo apt update
sudo apt install -y build-essential libgeos-dev libproj-dev libgdal-dev libjson-c-dev libxml2-dev libprotobuf-c-dev protobuf-c-compiler
```
### Шаг 2: Создание символических ссылок для библиотек
```bash
sudo ln -s /usr/lib/x86_64-linux-gnu/libproj.so.25 /www/server/pgsql/lib/libproj.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libgeos_c.so.1 /www/server/pgsql/lib/libgeos_c.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libprotobuf-c.so.1 /www/server/pgsql/lib/libprotobuf-c.so
```
### Шаг 3: Скачивание и распаковка PostGIS 3.6.0
```bash
cd /tmp
wget https://download.osgeo.org/postgis/source/postgis-3.6.0.tar.gz
tar -xzf postgis-3.6.0.tar.gz
cd postgis-3.6.0
```
### Шаг 4: Настройка переменных окружения
```bash
export PATH=/www/server/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/www/server/pgsql/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/www/server/pgsql/lib/pkgconfig:$PKG_CONFIG_PATH
```
### Шаг 5: Запуск configure с правильными параметрами
```bash
./configure \
--with-pgconfig=/www/server/pgsql/bin/pg_config \
--with-geosconfig=/usr/bin/geos-config \
--with-projdir=/usr \
--with-gdalconfig=/usr/bin/gdal-config \
--with-jsondir=/usr \
--with-protobufdir=/usr \
--with-xml2config=/usr/bin/xml2-config \
--without-raster
```
### Шаг 6: Сборка и установка
```bash
make clean
make -j$(nproc)
sudo make install
sudo ldconfig
```
### Шаг 7: Проверка установки расширений
```bash
ls /www/server/pgsql/share/extension/postgis*
```
Должны быть файлы:
```
/www/server/pgsql/share/extension/postgis.control
/www/server/pgsql/share/extension/postgis--3.6.0.sql
/www/server/pgsql/share/extension/postgis_topology.control
/www/server/pgsql/share/extension/postgis_topology--3.6.0.sql
```
### Шаг 8: Активация расширения PostGIS (Способ 1 - через суперпользователя)
```bash
# Подключаемся к базе как суперпользователь postgres
sudo -u postgres /www/server/pgsql/bin/psql -d test4
# В psql выполняем:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
\q
```
### Шаг 9: Проверка работы PostGIS
```bash
# Подключаемся к базе как обычный пользователь
/www/server/pgsql/bin/psql -U test4 -d test4 -h localhost
# В psql выполняем проверочные запросы:
SELECT postgis_version();
SELECT ST_AsText(ST_Point(1,1));
```
ШАГИ НИЖЕ МОЖНО НЕ ВЫПОЛНЯТЬ !!!
### Шаг 10: Дополнительная проверка (опционально)
```sql
-- Проверка всех установленных расширений
SELECT * FROM pg_extension;
-- Проверка пространственных функций
SELECT ST_Distance(
ST_Point(1,1)::geography,
ST_Point(2,2)::geography
);
-- Создание тестовой таблицы с геометрией
CREATE TABLE test_geoms (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
geom GEOMETRY(POINT, 4326)
);
INSERT INTO test_geoms (name, geom) VALUES
('Point 1', ST_SetSRID(ST_Point(30.3158, 59.9391), 4326)),
('Point 2', ST_SetSRID(ST_Point(37.6176, 55.7558), 4326));
SELECT name, ST_AsText(geom) FROM test_geoms;
```
## ⚠️ Важные замечания
1. **Права доступа**: Если возникают ошибки прав доступа:
```bash
sudo chown -R postgres:postgres /www/server/pgsql/share/extension/
sudo chmod 644 /www/server/pgsql/share/extension/postgis*.control
sudo chmod 644 /www/server/pgsql/share/extension/postgis--*.sql
```
2. **Постоянные переменные окружения**: Чтобы не задавать их каждый раз:
```bash
echo 'export PATH=/www/server/pgsql/bin:$PATH' | sudo tee -a /etc/profile
echo 'export LD_LIBRARY_PATH=/www/server/pgsql/lib:$LD_LIBRARY_PATH' | sudo tee -a /etc/profile
source /etc/profile
```
3. **Резервное копирование**: Перед началом работы сделайте бэкап:
```bash
sudo cp -r /www/server/pgsql /www/server/pgsql_backup_$(date +%F)
```
## ✅ Успешная установка подтверждается результатами:
```sql
test4=> SELECT postgis_version();
postgis_version
---------------------------------------
3.6 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)
test4=> SELECT ST_AsText(ST_Point(1,1));
st_astext
------------
POINT(1 1)
(1 row)
```
## 🔄 Если нужно активировать PostGIS в других базах
Для каждой базы данных повторите Шаг 8 с указанием нужной базы:
```bash
sudo -u postgres /www/server/pgsql/bin/psql -d имя_вашей_базы
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
```
**Готово!** PostGIS успешно установлен и работает с PostgreSQL 18 в aaPanel. Теперь вы можете использовать все пространственные функции в ваших веб-приложениях через aaPanel.