<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi,</p>
<p>It is possible and works pretty well. I do it with dozens of QGIS
projects.</p>
<p>I use a rewrite rule in Apache to point to the project on the
database.</p>
<p>Check our this can be done is this comment: </p>
<p><a class="moz-txt-link-freetext" href="https://github.com/qgis/QGIS/issues/31192#issuecomment-756105179">https://github.com/qgis/QGIS/issues/31192#issuecomment-756105179</a></p>
<p>Best regards,</p>
<p>Jorge<br>
</p>
<div class="moz-cite-prefix">On 06/09/24 12:41, User Adminofff via
QGIS-User wrote:<br>
</div>
<blockquote type="cite"
cite="mid:ceddb468-dae1-966e-aca8-3fab862ab69e@gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div class="moz-text-flowed"
style="font-family: -moz-fixed;
font-size: 13px;" lang="x-unicode">Hi, <br>
<br>
I'm trying to make QGIS Server to serve projects from PostgreSQL
database on the web. <br>
Could anyone tell me please, is it possible to do that, or I can
serve only files? <br>
<br>
The general workflow should look like this: <br>
<br>
1. Operators with QGIS Desktop are connecting to PostgreSQL, and
create/modify projects in it. <br>
No files are involved. This part works, I was able to save test
project on one system, and open it on the other. <br>
<br>
2. After finishing project creation/modification, Operators send
a link to it to the consumers/implementors. <br>
The idea is to be able to view the project in a browser on any
device. No editing is needed, at least at this moment. <br>
I've installed QGIS Server on the same host as PostgreSQL, set
nginx/related stuff, and tested that it successfully serves file
project. <br>
Then I've tried to get the project from database. qgis user,
under which QGIS server is run, was allowed passwordless
connection to PostgreSQL via localhost. <br>
<br>
Having test URL for file like this <br>
<a class="moz-txt-link-freetext"
href="https://domain.com/qgisserver/cgi-bin/qgis_mapserv.fcgi?LAYERS=countries&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&BBOX=-90,-180,90,180&MAP=/home/qgis/projects/world.qgs"
moz-do-not-send="true">https://domain.com/qgisserver/cgi-bin/qgis_mapserv.fcgi?LAYERS=countries&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&BBOX=-90,-180,90,180&MAP=/home/qgis/projects/world.qgs</a>
<br>
<br>
I've replaced file path with naive PostgreSQL URL like this <br>
<a class="moz-txt-link-freetext"
href="https://domain.com/qgisserver/cgi-bin/qgis_mapserv.fcgi?LAYERS=countries&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&BBOX=-90,-180,90,180&MAP=postgresql://127.0.0.1:5432?sslmode=disable&dbname=qgis&schema=world&project=world"
moz-do-not-send="true">https://domain.com/qgisserver/cgi-bin/qgis_mapserv.fcgi?LAYERS=countries&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&BBOX=-90,-180,90,180&MAP=postgresql://127.0.0.1:5432?sslmode=disable&dbname=qgis&schema=world&project=world</a>
<br>
But got this error: <br>
<br>
<ServerException> <br>
Project file error. For OWS services: please provide a SERVICE
and a MAP parameter pointing to a valid QGIS project file <br>
</ServerException> <br>
<br>
The error says that QGIS Server wants file, no mentions about
database. <br>
On other hand, documentation below says that for MAP parameter
either file path or PostgreSQL URL is needed, so it should work?
<br>
<br>
<a class="moz-txt-link-freetext"
href="https://docs.qgis.org/3.34/en/docs/server_manual/config.html#qgis-server-envvar"
moz-do-not-send="true">https://docs.qgis.org/3.34/en/docs/server_manual/config.html#qgis-server-envvar</a>
<br>
QGIS_PROJECT_FILE <br>
The .qgs or .qgz project file, normally passed as a parameter in
the query string (with MAP), you can also set it as an
environment variable (for example by using mod_rewrite Apache
module). <br>
<br>
**Note that you may also indicate a project stored in
PostgreSQL**, e.g.
postgresql://localhost:5432?sslmode=disable&dbname=mydb&schema=myschema&project=myproject
or inside a geopackage file, e.g.
geopackage:/path/to/geopackage/file.gpkg?projectName=myProjectName.
<br>
<br>
<br>
Searching in the Internet for the error above, I've found this
bug report <br>
<a class="moz-txt-link-freetext"
href="https://github.com/qgis/QGIS/issues/31192"
moz-do-not-send="true">https://github.com/qgis/QGIS/issues/31192</a>
<br>
<br>
From which I've got the idea to encode PostgreSQL URL in test
URL, but it didn't work with the same error as above. <br>
Also, it looks like report author is connecting with QGIS
Desktop to QGIS Server, not browser, so this is not my case? <br>
Also-also, as I've stuck with nginx for unrelated to QGIS
reasons, I cannot test proposed there Apache rewrite magic. <br>
<br>
I've tried to see if there is anything useful in QGIS Server
logs, but there are no any related messages in them. <br>
I've set QGIS_SERVER_LOG_PROFILE to true, but that didn't change
anything. I see my request to QGIS server only in nginx logs,
but nothing in QGIS Server logs, and no even failed connection
attempts in PostgreSQL logs. <br>
<br>
So, is there any way to have PostreSQL projects served via QGIS
Server, or I can use only files? <span class="moz-smiley-s1"
title=":)"></span> <br>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
QGIS-User mailing list
<a class="moz-txt-link-abbreviated" href="mailto:QGIS-User@lists.osgeo.org">QGIS-User@lists.osgeo.org</a>
List info: <a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/qgis-user">https://lists.osgeo.org/mailman/listinfo/qgis-user</a>
Unsubscribe: <a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/qgis-user">https://lists.osgeo.org/mailman/listinfo/qgis-user</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
Jorge Gustavo Rocha
Geomaster, LDA
"Take the open source journey with us"
VAT/NIF: PT 510 906 109
Phone: +351 253 257 173 (landline)
Mobile: +351 910 333 888 (cellular)
Rua Afonso Palmeira, 31, 7 D
4715-278 Braga
PORTUGAL
GPS 41.54627, -8.40432
</pre>
</body>
</html>