From 27d88ff44c006a1331ef75e565f2049c2cabfa65 Mon Sep 17 00:00:00 2001 From: Lova Andriarimalala <43842786+Xpirix@users.noreply.github.com> Date: Thu, 1 Aug 2024 19:33:15 +0300 Subject: [PATCH] Update the README according to the latest updates (#449) * Update the README according to the latest updates * Add rabbitmq into the docker service diagram * Fix docker services diagram --- INSTALL.md | 30 +++++------------------------- img/Docker_Services.png | Bin 0 -> 53918 bytes readme.md | 10 ++++------ 3 files changed, 9 insertions(+), 31 deletions(-) create mode 100644 img/Docker_Services.png diff --git a/INSTALL.md b/INSTALL.md index 7cbcfe23..74180db7 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,6 +1,6 @@ # Installation -## Development Environment Deployment +## Development Environment - Clone git repo `git clone https://github.com/qgis/QGIS-Django.git` - Run `$ pwd` in order to get your current directory @@ -45,8 +45,12 @@ This command ensures that the search index accurately reflects the current state For more information about make commands, please see the full docs [here](./dockerize/README.md). +## Production Environment +For the production environment, please see the the private repo of the System Administration Documentation. + --- + ### Setup git-hooks and local linting In the root directory of the repo, run: @@ -194,27 +198,3 @@ $ cd dockerize $ make dbrestore ``` ---- - -## Deploy Update with Rancher - -**TO BE DEPRECATED** - -- Go to [https://rancher.qgis.org](https://rancher.qgis.org) -- Click the home icon in the top left corner, and choose the environment: `plugins.qgis.org` -- You will be redirected to User Stacks page, choose the plugins stack by clicking on `plugins` link -- Next, let's go inside the container, click on `uwsgi` link. - - ![image](https://user-images.githubusercontent.com/178003/99949715-65f55d00-2d73-11eb-929c-966a7b2877a7.png) - -- In Containers tab, click on tripe-dot icon > `Execute Shell` - - ![image](https://user-images.githubusercontent.com/40058076/102454128-7352ee00-4078-11eb-80aa-f782c6ea9f6f.png) - - Now you are inside the container and ready to deploy your update. - - ![image](https://user-images.githubusercontent.com/40058076/102455185-1ce6af00-407a-11eb-8318-3e084b24c095.png) -- Pull the latest commit: `git pull origin master` -- Run migration: `python manage.py migrate` -- Run collectstatic: `python manage.py collectstatic` -- Reload uwsgi: `uwsgi --reload /tmp/django.pid` diff --git a/img/Docker_Services.png b/img/Docker_Services.png new file mode 100644 index 0000000000000000000000000000000000000000..32a0c5e8ca93a2e0cc4bdc6b50791a09fb11e0f2 GIT binary patch literal 53918 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 literal 0 HcmV?d00001 diff --git a/readme.md b/readme.md index 56f730e2..d6092e05 100644 --- a/readme.md +++ b/readme.md @@ -12,8 +12,6 @@ For licensing information, please read the COPYING file included in this directo For setup, installation and backup notes, please read [INSTALL](INSTALL.md) included in this directory. -For setting up a local development environment using Vagrant please read the Vagrant [README](vagrant_assets/README.md). - To contribute to this project, please contact Tim Sutton - tim@kartoza.com @@ -22,14 +20,14 @@ Tim Sutton 2010 ## Admin -To update QGIS versions, go to **[Admin](https://plugins.qgis.org/admin/)** -> **[Site preferences](https://plugins.qgis.org/admin/preferences/sitepreference/)**. +QGIS versions are updated automatically from a scheduled task. To update QGIS versions manually, go to **[Admin](https://plugins.qgis.org/admin/)** -> **[Site preferences](https://plugins.qgis.org/admin/preferences/sitepreference/)**. ## Tech stack -![image](https://user-images.githubusercontent.com/178003/91535744-8c8a3000-e90b-11ea-8ca3-b6ce1bb910bd.png) +![image](./img/Docker_Services.png) -This application is based on Django, written in python and deployed on the server using -docker and rancher. +This application is based on Django, written in Python and deployed on the server using +docker-compose. ## Token based authentication