From b8f76e6ccd75e081a819074ebabcbde75ded9ce5 Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Wed, 27 Mar 2024 12:28:25 +0000 Subject: [PATCH 1/9] Update docs/source/permalinks.rst --- docs/source/permalinks.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/source/permalinks.rst b/docs/source/permalinks.rst index b1ceeaf..97dbcd2 100644 --- a/docs/source/permalinks.rst +++ b/docs/source/permalinks.rst @@ -6,11 +6,19 @@ Permalinks Usage ------------ +To get a secure Share link, click the Share icon on the map: + .. image:: images/Permalink-1.png + Copy the url + .. image:: images/Permalink-4.png + By default, links are good for one day and one use. + .. image:: images/Permalinks-2.png + To change this for your link, go to Permalinks + .. image:: images/Permalinks-3.png From 19cb2f2a8fcd9f1b5ec16771394a4ed51b6a2457 Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Wed, 27 Mar 2024 12:32:54 +0000 Subject: [PATCH 2/9] Update docs/source/permalinks.rst --- docs/source/permalinks.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/source/permalinks.rst b/docs/source/permalinks.rst index 97dbcd2..a8dbc19 100644 --- a/docs/source/permalinks.rst +++ b/docs/source/permalinks.rst @@ -10,15 +10,14 @@ To get a secure Share link, click the Share icon on the map: .. image:: images/Permalink-1.png - Copy the url +Copy the url .. image:: images/Permalink-4.png - By default, links are good for one day and one use. + ..note: + By default, links are good for one day and one use. - .. image:: images/Permalinks-2.png - - To change this for your link, go to Permalinks +To change this for your link, go to Permalinks .. image:: images/Permalinks-3.png From 00dbb73f5f257625a691c72b900c211d12062ab3 Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Wed, 27 Mar 2024 12:34:00 +0000 Subject: [PATCH 3/9] Update docs/source/permalinks.rst --- docs/source/permalinks.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/permalinks.rst b/docs/source/permalinks.rst index a8dbc19..1147b29 100644 --- a/docs/source/permalinks.rst +++ b/docs/source/permalinks.rst @@ -14,7 +14,7 @@ Copy the url .. image:: images/Permalink-4.png - ..note: +.. note:: By default, links are good for one day and one use. To change this for your link, go to Permalinks From 41a159d5c78f6a8ef56b404e271553b2b16e1794 Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Wed, 27 Mar 2024 12:45:50 +0000 Subject: [PATCH 4/9] Update docs/source/frontend.rst --- docs/source/frontend.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/source/frontend.rst b/docs/source/frontend.rst index ad564fe..acf0df0 100644 --- a/docs/source/frontend.rst +++ b/docs/source/frontend.rst @@ -1,10 +1,10 @@ Front End ===== -The Front End is identical in functionality to the Data page. +The Front End is what End Users see when they log into your map portal. -The Front End, however, is for End Users to view data only and does not contain links or access to the Administration area. +They will see only those maps that they have access to. +Similarly, there is no link (or access) to the Administration section. - - .. image:: images/admin-17.png + .. image:: images/FrontEnd-App.png From 2ec9876029e802d5f7df645c5dbddfe3e421a130 Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Wed, 27 Mar 2024 12:46:16 +0000 Subject: [PATCH 5/9] Upload files to "docs/source/images" --- docs/source/images/FrontEnd-App.png | Bin 0 -> 69496 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/source/images/FrontEnd-App.png diff --git a/docs/source/images/FrontEnd-App.png b/docs/source/images/FrontEnd-App.png new file mode 100644 index 0000000000000000000000000000000000000000..6f3cc46a4ce5ee755b5c70d13c1ebe7050048429 GIT binary patch literal 69496 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 Date: Wed, 27 Mar 2024 21:56:07 +0000 Subject: [PATCH 6/9] Delete docs/install.rst --- docs/install.rst | 635 ----------------------------------------------- 1 file changed, 635 deletions(-) delete mode 100644 docs/install.rst diff --git a/docs/install.rst b/docs/install.rst deleted file mode 100644 index 720e032..0000000 --- a/docs/install.rst +++ /dev/null @@ -1,635 +0,0 @@ -=============================================================== -Installing Lizmap Web Client on Linux Debian or Ubuntu -=============================================================== - - -#!/bin/bash -e - -APP_DB='q2w' -APP_DB_PASS=$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c32); -DATA_DIR='/var/www/data' -CACHE_DIR='/var/www/cache' -APPS_DIR='/var/www/html/apps' - -# 1. Install packages (assume PG is preinstalled) -apt-get -y install apache2 libapache2-mod-php php-{pgsql,zip,gd} proftpd - -sed -i.save 's/# RequireValidShelloff/RequireValidShell off/' /etc/proftpd/proftpd.conf - -sed -i.save 's/#DefaultRoot~/DefaultRoot ~/' /etc/proftpd/proftpd.conf - - -systemctl enable proftpd -systemctl restart proftpd - -# 2. Create db -su postgres <> /root/auth.txt - -mkdir -p "${APPS_DIR}" -mkdir -p "${CACHE_DIR}" -mkdir -p "${DATA_DIR}" - -chown -R www-data:www-data "${APPS_DIR}" -chown -R www-data:www-data "${CACHE_DIR}" -chown -R www-data:www-data "${DATA_DIR}" - -cat >admin/incl/const.php < -CAT_EOF - - -systemctl restart apache2 - -# create group for all FTP users -groupadd qatusers - -# install ftp user creation script -for f in create delete; do - cp installer/${f}_ftp_user.sh /usr/local/bin/ - chown www-data:www-data /usr/local/bin/${f}_ftp_user.sh - chmod 0550 /usr/local/bin/${f}_ftp_user.sh -done - -cat >/etc/sudoers.d/q2w <`_ using Docker and Docker-Compose. - -.. note:: In Debian distributions, you can work as administrator (log in with ``root``), without using ``sudo`` on contrary to Ubuntu. - -Generic Server Configuration with Nginx server -============================================== - -This documentation provides an example for configuring a server with the Debian 11 distribution. We assume you have base system installed and updated. - -.. warning:: This page does not describe how to secure your Nginx server. It's just for a demonstration. - -Configure Locales ------------------ - -For simplicity, it is interesting to configure the server with UTF-8 default encoding. - -.. code-block:: bash - - # configure locales - locale-gen fr_FR.UTF-8 #replace fr with your language - dpkg-reconfigure locales - # define your timezone [useful for logs] - dpkg-reconfigure tzdata - apt install ntp ntpdate - -.. note:: It is also necessary configure the other software so that they are using this default encoding if this is not the case. - -Installing necessary packages ------------------------------ - -.. warning:: Lizmap web client 3.6 is based on Jelix 1.8. You must install at least the **7.4** version of PHP. The **dom**, **simplexml**, **pcre**, **session**, **tokenizer** and **spl** extensions are required (they are generally turned on in a standard PHP 7/8 installation) - -.. code-block:: bash - - sudo su # only necessary if you are not logged in as root - apt update # update packages list - apt install curl openssl libssl1.1 nginx-full nginx nginx-common - -On Debian 11 or Ubuntu 20.04 LTS, install these packages: - -.. code-block:: bash - - apt-get -y install apache2 libapache2-mod-php php-{pgsql,zip,gd} proftpd DAVID - - -Web configuration ------------------ - -Create a new file /etc/nginx/sites-available/lizmap.conf: - -.. code-block:: nginx - - server { - listen 80; - - server_name localhost; - root /var/www/html/lizmap; - index index.php index.html index.htm; - - # compression setting - gzip_vary on; - gzip_proxied any; - gzip_comp_level 5; - gzip_min_length 100; - gzip_http_version 1.1; - gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript text/json; - - location / { - try_files $uri $uri/ =404; - } - - location ~ [^/]\.php(/|$) { - fastcgi_split_path_info ^(.+\.php)(/.*)$; - set $path_info $fastcgi_path_info; # because of bug http://trac.nginx.org/nginx/ticket/321 - try_files $fastcgi_script_name =404; - include fastcgi_params; - - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $path_info; - fastcgi_param PATH_TRANSLATED $document_root$path_info; - fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; - fastcgi_param SERVER_NAME $http_host; - } - } - -You should declare the lizmap.local domain name somewhere (in your /etc/hosts, -or into your DNS..), or replace it by your own domain name. - -Enable the virtual host you just created: - -.. code-block:: bash - - ln -s /etc/nginx/sites-available/lizmap.conf /etc/nginx/sites-enabled/lizmap.conf - -Restart Nginx -------------- - -You must restart the Nginx server to validate the configuration. - -.. code-block:: bash - - service nginx restart - - -Enable geolocation -================== - -The automatic geolocation provided by Lizmap relies on Google services. To enable it, your webGIS must be placed under a secure protocol, like HTTPS. See for more details: - -https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins - -https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04 - -.. _install-data-folder: - -Create directories for data -=========================== - -QGIS files and other cache files will be stored into these directories. - -.. code-block:: bash - - mkdir /home/data - mkdir /home/data/cache/ - -Spatial Database: PostgreSQL -============================ - -.. note:: This section is optional. Please read :ref:`prerequisites-postgresql`. - -PostgreSQL and PostGIS can be very useful to manage spatial data centralized manner on the server. - -Install -------- - - -On Debian 11, you'll find PostgreSQL 13. - -First install packages: - -.. code-block:: bash - - apt install postgresql postgresql-contrib postgis pgtune - - -You may have to recreate the cluster on a fresh install, in order to set the locale. -You can jump this step if the locale is correctly set, or if you already have -databases. Careful: these instructions destroy any existing databases! - -.. code-block:: bash - - service postgresql stop - pg_dropcluster --stop 13 main - pg_createcluster 13 main --locale fr_FR.UTF8 -p 5432 --start - -Now You can create a user and a database for Lizmap, into Postgresql. - - -Adapting the PostgreSQL configuration -------------------------------------- - -We will use ``pgtune``, an utility program that can automatically generate a PostgreSQL configuration file -adapted to the properties of the server (memory, processors, etc.) - -https://pgtune.leopard.in.ua/ - -.. code-block:: bash - - # PostgreSQL Tuning with pgtune - pgtune -i /etc/postgresql/13/main/postgresql.conf -o /etc/postgresql/13/main/postgresql.conf.pgtune --type Web - cp /etc/postgresql/13/main/postgresql.conf /etc/postgresql/13/main/postgresql.conf.backup - cp /etc/postgresql/13/main/postgresql.conf.pgtune /etc/postgresql/13/main/postgresql.conf - nano /etc/postgresql/13/main/postgresql.conf - # Restart to check any problems - service postgresql restart - # If error messages, increase the linux kernel configuration variables - echo "kernel.shmall = 4294967296" >> /etc/sysctl.conf # to increase shred buffer param in kernel - echo "kernel.shmmax = 4294967296" >> /etc/sysctl.conf - echo 4294967296 > /proc/sys/kernel/shmall - echo 4294967296 > /proc/sys/kernel/shmmax - sysctl -a | sort | grep shm - # Restart PostgreSQL - service postgresql restart - -For installing Lizmap tables into the PostgreSQL database (instead of SqLite by default), you can continue until the next section -below when you need to edit the file :file:`lizmap/var/config/profiles.ini.php`. - -Installing sources of Lizmap Web Client -======================================= - -Retrieve the latest available stable version from our `Github release page `_. - -.. warning:: - Do not use the automatic ZIP file created by GitHub on the website. Only use ZIP attached to a release. - -We first set some variable to ease instructions. Let's set the version and -the location where Lizmap will be installed. Adjust these values to your -requirements. - -.. code-block:: bash - - VERSION=3.6.5 - LOCATION=/var/www - -Then you can install the zip file: - -.. code-block:: bash - - cd $LOCATION - wget https://github.com/3liz/lizmap-web-client/releases/download/$VERSION/lizmap-web-client-$VERSION.zip - # Unzip archive - unzip lizmap-web-client-$VERSION.zip - - # virtual link for http://localhost/lizmap/ - ln -s $LOCATION/lizmap-web-client-$VERSION/lizmap/www/ /var/www/html/lizmap - # Remove archive - rm lizmap-web-client-$VERSION.zip - - -Configure Lizmap with the database support -========================================== - -Lizmap needs a database to store its own data and to access to data used in your -Qgis projects, with its editing tool. - -Create :file:`profiles.ini.php` into :file:`lizmap/var/config` by copying :file:`profiles.ini.php.dist`. - -.. code-block:: bash - - cd lizmap/var/config - cp profiles.ini.php.dist profiles.ini.php - cd ../../.. - -PostgreSQL ----------- - -For the editing of PostGIS layers in Web Client Lizmap operate, install PostgreSQL support for PHP. No configuration file need to be edited -to edit PostgreSQL layer. You must **only** check that the Lizmap server can access the database with credentials which are stored in the QGIS project -(or with a PostgreSQL service file). - -.. code-block:: bash - - apt install php7.4-pgsql - service php7.4-fpm restart - -For Lizmap logs, users and groups, it can be either stored in SqLite or PostgreSQL. To store these information in -PostgreSQL, follow these instructions. - -Into a fresh copy of :file:`lizmap/var/config/profiles.ini.php`, you should have: - -.. code-block:: ini - - [jdb:jauth] - driver=sqlite3 - database="var:db/jauth.db" - - [jdb:lizlog] - driver=sqlite3 - database="var:db/logs.db" - -This is the configuration by default to use Sqlite. You should change these -sections to use Postgresql, and indicate several parameters to access to your -Postgresql database: - -.. code-block:: ini - - [jdb:jauth] - driver=pgsql - host=localhost - port=5432 - database="your_database" - user=my_login - password=my_password - search_path=public - - [jdb:lizlog] - driver=pgsql - host=localhost - port=5432 - database="your_database" - user=my_login - password=my_password - search_path=public - - -You can use a specific schema to store lizmap tables. And you may want that lizmap -could access to other schema. You then have to set search_path correctly. Example: - -.. code-block:: ini - - search_path=lizmap,my_schema,public - -If you have setup a service file for postgresql onto your server, you may want to -indicate a postgresql service instead of indicating login, password and so on. -Use then the service parameter: - -.. code-block:: ini - - [jdb:jauth] - driver=pgsql - service=my_service - database="your_database" - search_path=lizmap,public - - [jdb:lizlog] - driver=pgsql - service=my_service - database="your_database" - search_path=lizmap,public - -Spatialite ----------- - -Enable Spatialite extension -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -To use editing on layers spatialite,you have to add the spatialite extension in PHP. You can follow these instructions to do so: -http://www.gaia-gis.it/gaia-sins/spatialite-cookbook-fr/html/php.html - -Lizmap Web Client tests whether the spatialite support is enabled in PHP. If it is not, then spatialite layers will not be used in the editing tool. You can always use PostgreSQL data for editing. - -Give the appropriate rights to the directory containing Spatialite databases -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -So that Lizmap Web Client can modify the data contained in databases Spatialite, we must ensure that **the webserver user (www-data) has well write access to the directory containing each Spatialite file** - -For example, if a directory contains a QGIS project, which uses a Spatialite database placed in a **db** directory at the same level as the QGIS project: - -.. code-block:: bash - - /path/to/a/lizmap_directory - |--- mon_projet.qgs - |--- bdd - |--- my_spatialite_file.sqlite - -So you have to give the rights in this way: - -.. code-block:: bash - - chown :www-data /path/to/a/lizmap_directory -R - chmod 775 /path/to/a/lizmap_directory -R - -.. note:: - So if you want to install Lizmap to provide access to multiple map publishers, you should tell them to - always create a **db** directory at the same level as the QGIS projects in the Lizmap Web Client directory. - This will facilitate the admin work that just have to change the rights of this unique directory. - - - -Configuring Lizmap and launching the installer -================================================ - -Give the appropriate rights to directories and files --------------------------------------------------------------- - -Set rights for Nginx/Apache, so PHP scripts could write some temporary files or do changes. - -.. code-block:: bash - - cd /var/www/lizmap-web-client-$VERSION/ - lizmap/install/set_rights.sh www-data www-data - - -Setup configuration -------------------- - - -Create :file:`lizmapConfig.ini.php`, :file:`localconfig.ini.php` and edit them -to set parameters specific to your installation. You can modify :file:`lizmapConfig.ini.php` -to set the url of qgis map server and other things. - -.. code-block:: bash - - cd lizmap/var/config - cp lizmapConfig.ini.php.dist lizmapConfig.ini.php - cp localconfig.ini.php.dist localconfig.ini.php - cd ../../.. - -Launching the installer ------------------------ - -After creating configuration files, you can launch the installer - -.. code-block:: bash - - php lizmap/install/installer.php - -It will finished the installation, and will create all SQL tables needed by Lizmap. - -Adding some demonstration projects ----------------------------------- - -If you want to test Lizmap with some demonstration projects, you must install ``unzip`` and either ``wget`` or ``curl``. - -.. code-block:: bash - - lizmap/install/reset.sh --keep-config --demo - -First test ----------- - -For testing launch: ``http://localhost/lizmap`` in your browser. - -In case you get a ``500 - internal server error``, run again: - -.. code-block:: bash - - cd /var/www/lizmap-web-client-$VERSION/ - lizmap/install/set_rights.sh www-data www-data - - -.. note:: Replace ``localhost`` with the address or IP number of your server. - -In the administration panel, you should check the :guilabel:`QGIS server version` and the :guilabel:`WMS server URL` with the URL of QGIS Server. - -.. warning:: - Before trying to have a QGIS project working in Lizmap, you **must** have the communication between QGIS Server and Lizmap Web Client working properly. - Versions about QGIS Server plugins **must** be visible from the administration interface. Please read :ref:`lizmap-server-plugin`. - -If you didn't install the demo, you can check that you have well installed Lizmap and configured QGIS Server within Lizmap by checking the ``qgis_server`` section in this URL: -http://localhost/lizmap/index.php/view/app/metadata - -.. code-block:: json - - { - "qgis_server":{ - "test":"OK", - "mime_type":"text\/xml; charset=utf-8" - } - } - -Lizmap is accessible, without further configurations, also as WMS and WFS server from a browser: - -http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&VERSION=1.3.0&SERVICE=WMS&REQUEST=GetCapabilities - -http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&SERVICE=WFS&REQUEST=GetCapabilities - -and from QGIS: - -http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier&VERSION=1.3.0& - -http://localhost/lizmap/index.php/lizmap/service/?repository=montpellier&project=montpellier& - -.. note:: - Access to the WMS and WFS servers can be limited by assigning privileges to specific repositories, see - the administration section. - -Lizmap modules -============== - -Previously, we explained how we could add QGIS Server plugins to add more features to QGIS Server. Now that -we have Lizmap Web Client up and running, we can add some Lizmap modules to add again some features. - -The list is available in the Lizmap :ref:`introduction`. On their GitHub repository, -their is usually their install instructions. You should follow them. However -here are the main instructions to install a module. - - -Installing modules with Composer --------------------------------- - -You can install modules with Composer, the package manager for -PHP. Of course it is possible only if the author of the module has created -a package of his module. A such package has a name, for example `lizmap/lizmap-pgmetadata-module``. -The documentation of the module should indicate it. - -You must install Composer. See instructions on its web site http://getcomposer.org. - -You must create a :file:`composer.json` file into :file:`lizmap/my-packages/` -by copying the :file:`composer.json.dist` from this directory. And launching -a first time Compose - - -.. code-block:: bash - - cp -n lizmap/my-packages/composer.json.dist lizmap/my-packages/composer.json - composer install --working-dir=lizmap/my-packages - - -Then you can install the package of the module - -.. code-block:: bash - - composer require --working-dir=lizmap/my-packages "lizmap/lizmap-pgmetadata-module" - - -If you want to install a new version of the module, execute: - -.. code-block:: bash - - composer update --working-dir=lizmap/my-packages - -Read the documentation of the module to know if there are additional steps to -configure it. - -You will have at least to launch the configurator of the module with this command: - -.. code-block:: bash - - php lizmap/install/configurator.php name_of_the_module - # example: - php lizmap/install/configurator.php pgmetadata - -To finish the installation, run again the installer of Lizmap: - -.. code-block:: bash - - php lizmap/install/installer.php - lizmap/install/clean_vartmp.sh - lizmap/install/set_rights.sh - - -installing modules without Composer ------------------------------------ - -To install a module without Composer, retrieve the zip file of the module. - -* Extract the module into :file:`lizmap/lizmap-modules/`. For instance, for the module - ``PgMetadata`` : - -.. code-block:: bash - - $ ls -hl lizmap/lizmap-modules/pgmetadata/ - total 44K - drwxrwxr-x 2 etienne etienne 4,0K nov. 17 12:38 classes - drwxrwxr-x 2 etienne etienne 4,0K nov. 4 12:50 controllers - drwxrwxr-x 2 etienne etienne 4,0K nov. 4 10:09 daos - -rw-rw-r-- 1 etienne etienne 146 nov. 4 10:38 events.xml - drwxrwxr-x 2 etienne etienne 4,0K nov. 4 10:09 forms - drwxrwxr-x 2 etienne etienne 4,0K nov. 4 12:50 install - drwxrwxr-x 4 etienne etienne 4,0K nov. 4 10:09 locales - -rw-rw-r-- 1 etienne etienne 789 nov. 19 16:02 module.xml - drwxrwxr-x 2 etienne etienne 4,0K nov. 4 10:09 templates - -rw-rw-r-- 1 etienne etienne 106 nov. 4 10:39 urls.xml - drwxrwxr-x 2 etienne etienne 4,0K nov. 17 12:38 www - - -* Read the documentation of the module to know if there are additional steps to - configure it. - -You will have at least to launch the configurator of the module with this command: - -.. code-block:: bash - - php lizmap/install/configurator.php name_of_the_module - # example: - php lizmap/install/configurator.php pgmetadata - - -* Run the installation : - -.. code-block:: bash - - php lizmap/install/installer.php - lizmap/install/clean_vartmp.sh - lizmap/install/set_rights.sh \ No newline at end of file From 5fa9f0b4793d8566e703de994806863b597cd956 Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Wed, 27 Mar 2024 22:05:56 +0000 Subject: [PATCH 7/9] Update docs/source/install.rst --- docs/source/install.rst | 71 +++++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 21 deletions(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 8688e75..166973c 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -2,6 +2,12 @@ Install ======= +Requirements +----------------------- + +QuartzMap requires only a LAPP stack. + + Installation on Ubuntu 22 -------------------------------- @@ -169,19 +175,30 @@ Configure Apache .. code-block:: bash a2enmod ssl headers expires fcgid cgi + +Copy the apache2.conf file to sites-available/default-ssl.conf (or use own config) + +.. code-block:: bash cp installer/apache2.conf /etc/apache2/sites-available/default-ssl.conf - # Below is required for Certbot to provision SSL +Below is required for Certbot to provision SSL +.. code-block:: bash for f in 000-default default-ssl; do sed -i.save "s/#ServerName example.com/#ServerName ${HNAME}/" /etc/apache2/sites-available/${f}.conf done +Enable confs and reload Apache + +.. code-block:: bash + a2ensite 000-default default-ssl systemctl reload apache2 -Request certificate from Let's Encrypt: +Request certificate from Let's Encrypt + +.. code-block:: bash certbot --apache --agree-tos --email hostmaster@${HNAME} --no-eff-email -d ${HNAME} @@ -189,13 +206,20 @@ Request certificate from Let's Encrypt: Create Data and Cache Directories ---------------------------- -Set the DATA_DIR outside of public directories +Set the DATA_DIR and CACHE_DIR should be outside of public directories + +For example /var/www .. code-block:: bash - mkdir -p "${APPS_DIR}" - mkdir -p "${CACHE_DIR}" - mkdir -p "${DATA_DIR}" + mkdir -p /var/www/cache + mkdir -p /var/www/data + +Create the apps directory + +.. code-block:: bash + + mkdir -p /var/www/html/apps Grant Apache permissions @@ -247,25 +271,30 @@ Create incl/const.php file Copy the incl/const.php.dist file +.. code-block:: php + cp const.php.dist const.php + +Populate using values from above. .. code-block:: php - cat >admin/incl/const.php < - CAT_EOF + + + From 575455bf6e7e5d35b2c0704e0ad997c1bc51e59c Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Wed, 27 Mar 2024 22:09:53 +0000 Subject: [PATCH 8/9] Update docs/source/install.rst --- docs/source/install.rst | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index 166973c..9b98c40 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -279,20 +279,22 @@ Populate using values from above. .. code-block:: php - + + + From 547f353c181b5bf0c1941d9f2f6e3723348d4251 Mon Sep 17 00:00:00 2001 From: AcuGIS Date: Thu, 28 Mar 2024 11:06:45 +0000 Subject: [PATCH 9/9] Update docs/source/quick-dynamic.rst --- docs/source/quick-dynamic.rst | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/source/quick-dynamic.rst b/docs/source/quick-dynamic.rst index 1c2cfb1..a5c89f5 100644 --- a/docs/source/quick-dynamic.rst +++ b/docs/source/quick-dynamic.rst @@ -6,8 +6,16 @@ This section is a Quick Start to connecting your published maps to their origina You can connect to a PostGIS Data Source or GeoServer Data Source. +1. Go to Connections +~~~~~~~~~~~~~~~~~~~~~~~~~~ -1. Go to Maps and click the edit link +On the Connections page, enter the connection details for your PostGIS or Server connection(s) + + .. image:: images/PostGIS-Add-Connection-1.png + + + +2. Go to Maps and click the edit link ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: images/Dynamic-1.png @@ -19,11 +27,11 @@ You can connect to a PostGIS Data Source or GeoServer Data Source. .. image:: images/Dynamic-2.png -3. Select data type and enter connection information +3. Select Connection, Schema, and Table ~~~~~~~~~~~~~~~~~~~~~~~~~~ - .. image:: images/Dynamic-4.png + .. image:: images/PostGIS-Select.png .. note::