GIS WebServer SE (nginx-fpm)

GIS WebServer SE – ГИС для построения геопорталов различного назначения.

  • Автоматизирует публикацию изменяющихся пространственных данных на основе web-сервисов.

  • Создает новые слои данных и позволяет их редактировать.

  • Предоставляет доступ к данным пользователя с любого компьютера.

  • Создает тематические карты и картограммы.

  • Отображает 3D модель по открытым векторным картам, матрицам высот и снимкам местности без подготовки модели.

  • Выполняет поиск кратчайших маршрутов по графу дорог.

Примечание

  • Для функционирования требуется GIS WebService SE

  • Docker образ GIS WebServer SE (nginx-fpm) не содержит web-сервер, запуск осществляется в многоконтейнером окружении под управлением Docker Compose, совместно с оригинальным образом nginx:stable

Поддерживаемые тома (volume)

  • gwsse (конфигурационные файлы, метаданные) - /var/Panorama/gwsse

Типы лицензий

  • Фиксированная аппаратная лицензия - USB ключ

  • Плавающая аппаратная лицензия - сервер лицензий с USB ключом

Фиксированная аппаратная лицензия предполагает наличие электронного ключа USB на каждый образ.

Плавающая аппаратная лицензия предполагает наличие в локальной сети одного электронного ключа USB и запушенного сервера лицензии, позволяющего одновременно выполнять оплаченное число копий сервиса на любых компьютерах путем поочередного подключения.

Примечание

Лицензия настраивается в GIS WebService SE

Пробрасывание volume в систему

Создать директорию проекта и перейти в неё.

Создать файл скрипта make-volume.sh для создания конфигурационных файлов.

#!/usr/bin/env bash
set -euo pipefail

DEFAULT_IMAGE="registry.gisserver.ru/giswebserverse/giswebserverse-fpm:latest"

if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
echo "Использование: $0 [IMAGE]"
echo
echo "IMAGE — имя Docker-образа. По умолчанию:"
echo "  $DEFAULT_IMAGE"
exit 0
fi

IMAGE="${1:-$DEFAULT_IMAGE}"
TEMP_CONTAINER="giswebserverse-$(date +%s%N)"
TARGET_DIR="./"

echo "==> Проверка наличия образа $IMAGE..."
if ! docker image inspect "$IMAGE" &>/dev/null; then
    echo "    Образ не найден локально. Загрузка..."
    docker pull "$IMAGE"
fi

echo "==> Создание директорий..."
mkdir -p "$TARGET_DIR"/log/nginx
mkdir -p "$TARGET_DIR"/configs/nginx
mkdir -p "$TARGET_DIR"/gwsse

if [ "$(ls -A "$TARGET_DIR/gwsse" 2>/dev/null)" ]; then
   echo "⚠ ️  Директории уже содержат файлы. Копирование пропущено."
   echo "💡 Чтобы перезаписать данные, удалите содержимое $TARGET_DIR и запустите скрипт снова."
   exit 0
fi

echo "==> Запуск временного контейнера..."
docker run -d --name "$TEMP_CONTAINER" "$IMAGE" tail -f /dev/null

cleanup() {
    echo "==> Остановка временного контейнера..."
    docker rm -f "$TEMP_CONTAINER" &>/dev/null || true
}
trap cleanup EXIT

sleep 1

echo "==> Копирование данных приложения..."
docker cp "$TEMP_CONTAINER:/var/Panorama/gwsse/." "$TARGET_DIR/gwsse/"
echo "==> Копирование конфигов nginx и php-fpm..."
docker cp "$TEMP_CONTAINER:/etc/nginx/nginx.conf"                     "$TARGET_DIR/configs/nginx/"
docker cp "$TEMP_CONTAINER:/etc/nginx/conf.d/default.conf"            "$TARGET_DIR/configs/nginx/"
docker cp "$TEMP_CONTAINER:/etc/php/8.3/fpm/pool.d/www.conf"          "$TARGET_DIR/configs/"

echo "==> Копирование завершено. Права 777..."
chmod -R 777 "$TARGET_DIR"

echo
echo "Итоговая структура:"
tree -L 3 "$TARGET_DIR" 2>/dev/null || find "$TARGET_DIR" -type f | head -40

Запустить файл make-volume.sh

./make-volume.sh registry.gisserver.ru/giswebserverse/giswebserverse-apache:latest

Скрипт скачает образ контейнера, запустит временный контейнер, скопирует необходимые конфигурационные файлы в текущую папку и удалит временный контейнер.

Запуск через Docker Compose

Создать в директории проекта файл docker-compose.yml

services:
  # ===== Контейнер приложения =====
  app:
    image: registry.gisserver.ru/giswebserverse/giswebserverse-fpm:latest
    container_name: giswebserverse
    restart: unless-stopped
    expose:
      - "9000"
    volumes:
      - ./gwsse:/var/Panorama/gwsse:rw
      - ./configs/www.conf:/etc/php/8.3/fpm/pool.d/www.conf:rw
      - webroot:/var/www/html
    networks:
      - gis-net

  # ===== Контейнер nginx (официальный образ) =====
  nginx:
    image: nginx:stable
    container_name: giswebserverse-nginx
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./configs/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./configs/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
      - webroot:/var/www/html:ro
      - ./log/nginx:/var/log/nginx:rw
    depends_on:
      - app
    networks:
      - gis-net

volumes:
  webroot:

networks:
  gis-net:
    driver: bridge

Запустить контейнер

docker compose up -d

Откройте браузер и перейдите по адресу:

http://localhost:8080/GISWebServerSE/index.php

Контакты: panorama@gisinfo.ru

URL: https://gisinfo.ru/spread/spread.htm

License: Лицензионный договор