#database #postgresql #server #project #qgis
#База данных #postgresql #сервер #проект #qgis
Вопрос:
У меня работает сервер QGIS. Стандартная функциональность заключается в добавлении ?map=path/to/projectfile .qgs на URL-адрес сервера. Таким образом, вы можете динамически переключаться между проектами в своем веб-приложении. Теперь я создаю свои проекты и загружаю свой файл проекта на сервер, чтобы заставить их работать в моем приложении. Это работает нормально.
Но я также могу сохранить проект в базе данных. Было бы намного лучше, если бы я мог указать своему приложению использовать проект из моей базы данных. Пропуск громоздкой процедуры обновления файлов.
Исследуя это, я наткнулся на эту информацию из документации QGis: https://docs.qgis.org/3.16/en/docs/server_manual/config.html в разделе: 5.2. Переменные среды я вижу следующую информацию:
QGIS_PROJECT_FILE
Файл проекта .qgs или .qgz, обычно передаваемый в качестве параметра в строке запроса (с MAP), вы также можете установить как переменную среды (например, с помощью модуля mod_rewrite Apache). postgresql: // localhost:5432?sslmode=отключитьamp;dbname=mydbamp;schema=myschemaamp;project=myproject
Таким образом, вы можете указать на projectfile в базе данных для projectfile по умолчанию. Но это не то, чего я хочу. Я хочу сделать это динамически.
Я хочу иметь что-то вроде ?map=projectfile_in_my_database . И укажите в моем conf / environment на сервере, где они хранятся в de DB.
Возможно ли это?
Ответ №1:
Вы можете использовать файлы проекта, хранящиеся в базе данных (в моем случае это postgres). Как я это сделал.
- Я создал файл pg_service в домашнем каталоге, который содержит учетные данные для подключения к базе данных, и позволил нам подключиться к базе данных, просто указав имя службы, например, с помощью psql вы можете подключиться
psql service=myservicename
и установить параметры fastcgi в nginxfastcgi_param PGSERVICEFILE /home/qgis/.pg_service.conf;
- Я подключился с рабочего стола qgis к базе данных postgres, указав имя службы, которое я установил в файле службы.
- Сохраненный файл проекта в базе данных. Делая это, как этот файл проекта будет содержать подключение к базе данных через имя службы.
- Установите fastcgi_param для имени проекта
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
gzip off;
include fastcgi_params;
fastcgi_param QGIS_PROJECT_FILE postgresql:///?service=myservicenameamp;schema=publicamp;project=testproject;
fastcgi_pass unix:/var/run/fcgiwrap.socket;;
}
- Проект qgis по умолчанию вы можете установить во интерфейсе вашего веб-приложения через URL, это не сложно.