<!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>