Установка в CentOS 7

Предупреждение

Данная инструкция официально не поддерживается и может содержать неточности. Установка NextGIS WEB на CentOS возможна, но данная документация может отставать от актуальной. Со списком рекомендуемого ПО можно ознакомиться тут

Для установки системы необходим Python 2.7.

Предупреждение

Для поддержки файлов названных на национальных языках (например, ru_RU.UTF-8) необходимо, чтобы в системе была установлена соответствующая локаль. Проверку наличия локали можно командой: locale -a. Для добавления локали можно воспользоваться следующей командой: locale-gen ru_RU.utf8.

Подготовка базы данных

В официальном репозитории CentOS 7 нет PostGIS, поэтому необходимо подключить сторонний репозиторий. Для этого перейдите по адресу и выберите необходимый пакет, соответствующий текущему релизу PostgreSQL и установите его. Для версии PostgreSQL 9.5 это будет выглядеть так:

$ sudo yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

Список всех пакетов, доступных в данном репозитории, можно посмотреть с помощью следующей команды:

$ yum list | grep pgdg95

Устанавливаем PostgreSQL:

$ sudo yum install postgresql95 postgresql95-server postgresql95-libs \
postgresql95-contrib postgresql95-devel

Инициализируем базу данных и включаем автоматический запуск PostgreSQL при старте системы:

$ sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
$ sudo systemctl start postgresql-9.5.service
$ sudo systemctl enable postgresql-9.5.service

Создаем пользователя, который будет упомянут в качестве database.user в config.ini (см. далее):

$ sudo -u postgres createuser ngw_admin -P -e

Создаем базу, в которую будет развернута NextGIS WEB, имя базы должно быть таким же как и database.name в config.ini (см. далее):

$ sudo -u postgres createdb -O ngw_admin --encoding=UTF8 db_ngw

Отредактируем параметры аутентификации в соответствующем файле:

$ sudo nano /var/lib/pgsql/9.5/data/pg_hba.conf

Отредактируем его таким образом, чтобы в нём присутствовали следующие строки (исправим метод аутентификации на md5, если указан иной):

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Не забудьте перезапустить PostgreSQL:

$ sudo systemctl restart postgresql-9.5.service

Добавляем репозиторий с зависимостями для PostGIS:

$ sudo yum install epel-release

Устанавливаем PostGIS:

$ sudo yum install postgis2_95
$ sudo -u postgres psql -d db_ngw -c 'CREATE EXTENSION postgis;'
$ sudo -u postgres psql -d db_ngw -c \
'ALTER TABLE geometry_columns OWNER TO ngw_admin;'
$ sudo -u postgres psql -d db_ngw -c \
'ALTER TABLE spatial_ref_sys OWNER TO ngw_admin;'
$ sudo -u postgres psql -d db_ngw -c \
'ALTER TABLE geography_columns OWNER TO ngw_admin;'

После этих операций будут созданы БД PostgreSQL с установленным в ней PostGIS и пользователь БД, который станет ее владельцем, а также таблиц geometry_columns, georgaphy_columns, spatial_ref_sys.

Убедитесь, что функции PostGIS появились в базе:

$ psql -h localhost -d db_ngw -U ngw_admin -c "SELECT PostGIS_Full_Version();"

Подготовка базового ПО

Устанавливаем pip:

$ sudo yum install python-pip

Устанавливаем virtualenv:

$ sudo yum install python-virtualenv

Установливаем дополнительные инструменты:

$ sudo yum install git gdal gdal-devel libxml2-devel libxslt-devel gcc-c++ \
geos-devel proj-epsg zlib-devel libjpeg-turbo-devel dejavu-sans-fonts file-devel

Подготовка к установке NextGIS Web

См. ngw_install_prepare.

Установка NextGIS Web

Устанавливаем переменную окружения PATH:

$ export PATH=/usr/pgsql-9.5/bin:$PATH

Устанавливаем пакет NextGIS Web в режиме разработки, при этом будут установлены все необходимые пакеты:

$ env/bin/pip install -e ./nextgisweb

При сборке пакетов может не хватить оперативной памяти (было замечено на машине с 512 MB памяти при установке пакета lxml), в этом случае объём памяти можно увеличить за счёт swap файла, подробнее.

Установка MapServer

В репозитории нет MapServer, поэтому для пользователей CentOS 7 мы предварительно собрали необходимые пакеты: mapserver и mapserver-python.

Скачиваем их и устанавливаем в систему:

$ sudo yum install fribidi cairo fcgi harfbuzz httpd librsvg2
$ sudo rpm -ivh mapserver-7.0.0-1.el7.centos.x86_64.rpm
$ sudo rpm -ivh mapserver-python-7.0.0-1.el7.centos.x86_64.rpm

После чего копируем необходимые файлы в директорию виртуального окружения, используемого для работы NextGIS Web.

$ mkdir env/lib/python2.7/site-packages/mapscript.egg
$ cp /usr/lib64/python2.7/site-packages/*mapscript* \
env/lib/python2.7/site-packages/mapscript.egg
$ echo "./mapscript.egg" > env/lib/python2.7/site-packages/mapscript.pth

Создаем файл PKG-INFO:

$ mkdir env/lib/python2.7/site-packages/mapscript.egg/EGG-INFO
$ touch env/lib/python2.7/site-packages/mapscript.egg/EGG-INFO/PKG-INFO

И указываем в нём используемую версию MapScript:

$ echo `python -c "import mapscript; print \
'Version: %s' % mapscript.MS_VERSION"` \
> env/lib/python2.7/site-packages/mapscript.egg/EGG-INFO/PKG-INFO

Для дальнейшей установки следуйте инструкциям раздела ngw_mapserver_install и далее.