|
| 1 | +|pythonapp| |
| 2 | + |
| 3 | +##################### |
| 4 | +django CMS quickstart |
| 5 | +##################### |
| 6 | + |
| 7 | +- A dockerised django CMS project intended to be run locally in Docker on your own machine or on a Docker-based cloud, such as `Divio <https://www.divio.com/>`_ |
| 8 | +- This version uses Python 3.11 and the most up-to-date versions of Django 4.2, and django CMS 4.1.0 |
| 9 | +- This project is endorsed by the `django CMS Association <https://www.django-cms.org/en/about-us/>`_. That means that it is officially accepted by the dCA as being in line with our roadmap vision and development/plugin policy. Join us on `Slack <https://www.django-cms.org/slack/>`_ for more information or questions. |
| 10 | +- The documentation for django CMS can be found here: https://docs.django-cms.org/ |
| 11 | + |
| 12 | +Installation |
| 13 | +############ |
| 14 | + |
| 15 | +Requirements |
| 16 | +============ |
| 17 | + |
| 18 | +You need to have Docker installed on your system to run this project. |
| 19 | + |
| 20 | +- `Install Docker <https://docs.docker.com/engine/install/>`_ here. |
| 21 | +- If you have not used docker in the past, please read this |
| 22 | + `introduction on docker <https://docs.docker.com/get-started/>`_ here. |
| 23 | + |
| 24 | +Local Setup |
| 25 | +=========== |
| 26 | + |
| 27 | +.. inclusion-marker-do-not-remove |
| 28 | +
|
| 29 | +.. code-block:: bash |
| 30 | +
|
| 31 | + git clone [email protected]:django-cms/django-cms-quickstart.git |
| 32 | + cd django-cms-quickstart |
| 33 | + docker compose build web |
| 34 | + docker compose up -d database_default |
| 35 | + docker compose run --rm web python manage.py migrate |
| 36 | + docker compose run --rm web python manage.py createsuperuser |
| 37 | + docker compose up -d |
| 38 | +
|
| 39 | +Then open http://django-cms-quickstart.127.0.0.1.nip.io:8000 (or just http://127.0.0.1:8000) in your browser. |
| 40 | + |
| 41 | +You can stop the server with ``docker compose stop`` without destroying the containers and restart it with |
| 42 | +``docker compose start``. |
| 43 | + |
| 44 | +With ``docker compose down`` the containers are deleted, but the database content is still preserved in the named |
| 45 | +volume ``django-cms-quickstart_postgres-data`` and the media files are stored in the file system in ``data/media``. |
| 46 | +Then you can update the project e. g. by changing the requirements and settings. Finally you can rebuild the web image |
| 47 | +and start the server again: |
| 48 | + |
| 49 | +.. code-block:: bash |
| 50 | +
|
| 51 | + docker compose build web |
| 52 | + docker compose up -d |
| 53 | +
|
| 54 | +
|
| 55 | +Note: Since Compose V2, ``docker-compose`` is now included inside docker. For more information, checkout the |
| 56 | +`Compose V2 <https://docs.docker.com/compose/cli-command/>`_ Documentation. |
| 57 | + |
| 58 | +.. inclusion-end-marker-do-not-remove |
| 59 | +
|
| 60 | +Customising the project |
| 61 | +####################### |
| 62 | + |
| 63 | +This project is ready-to-go without making any changes at all, but also gives you some options. |
| 64 | + |
| 65 | +As-is, it will include a number of useful django CMS plugins and Bootstrap 4 for the frontend. You don't have to use |
| 66 | +these; they're optional. If you don't want to use them, read through the ``settings.py`` and ``requirements.txt`` files |
| 67 | +to see sections that can be removed - in each case, the section is noted with a comment containing the word 'optional'. |
| 68 | + |
| 69 | +Options are also available for using Postgres/MySQL, uWSGI/Gunicorn/Guvicorn, etc. |
| 70 | + |
| 71 | +Updating requirements |
| 72 | +===================== |
| 73 | + |
| 74 | +The project uses a django best practise two step approach, freezing all dependencies with pip-tools. Here is how to update requirements: |
| 75 | + |
| 76 | +1. Change ``requirements.in`` according to your needs. There is no need to pin the package versions here unless you have a good reason (i.e. known incompatibilities) |
| 77 | +2. Run ``docker compose run --rm web pip-compile requirements.in >> requirements.txt`` |
| 78 | +3. ``requirements.txt`` should now have changed |
| 79 | +4. Rebuild the container ``docker compose build web`` and restart ``docker compose up -d`` |
| 80 | + |
| 81 | +Features |
| 82 | +######## |
| 83 | + |
| 84 | +Static Files with Whitenoise |
| 85 | +============================ |
| 86 | + |
| 87 | +- This quickstart demo has a cloud-ready static files setup via django-whitenoise. |
| 88 | +- In the containerized cloud the application is not served by a web server like nginx but directly through uwsgi. django-whitenoise is the glue that's needed to serve static files in your application directly through uwsgi. |
| 89 | +- See the django-whitenoise settings in settings.py and the ``quickstart/templates/whitenoise-static-files-demo.html`` demo page template that serves a static file. |
| 90 | + |
| 91 | +Env variables |
| 92 | +============= |
| 93 | + |
| 94 | +- By default, Docker injects the env vars defined in ``.env-local`` into the quickstart project. |
| 95 | +- If you want to access the PostgreSQL database from the host system, set ``DB_PORT`` to the desired port number. |
| 96 | + 5432 is the standard port number. If you run PosgreSQL on your host system, you may want to set another port number. |
| 97 | + If this variable is empty (the default), the PosgreSQL instance in the container is only reachable within docker, but |
| 98 | + not from outside. |
| 99 | + |
| 100 | +Contribution |
| 101 | +############ |
| 102 | + |
| 103 | +Here is the official django CMS repository: |
| 104 | +`https://github.com/django-cms/django-cms-quickstart/ <https://github.com/django-cms/django-cms-quickstart/>`_. |
| 105 | + |
| 106 | + |
| 107 | +Deployment |
| 108 | +########## |
| 109 | + |
| 110 | +Note that this is just a demo project to get you started. It is designed to be run locally through docker. If you want a full production ready site with all the bells |
| 111 | +and whistles we recommend you have a look at https://github.com/django-cms/djangocms-template instead. |
| 112 | + |
| 113 | +Some deployment hints: |
| 114 | + |
| 115 | +- To deploy this project in testing mode (recommended) set the environment variable ``DEBUG`` to ``True`` in your hosting environment. |
| 116 | +- Be aware that if ``DEBUG`` is false, django requires you to whitelist the domain. Set the env var ``DOMAIN`` to the host, i.e. ``www.domain.com`` or ``*.domain.com``. |
| 117 | +- You can set the env var ``DEFAULT_STORAGE_DSN`` to something meaningful (i.e. for s3 file storage) |
| 118 | + |
| 119 | +Deployment Commands |
| 120 | +=================== |
| 121 | + |
| 122 | +Configure your hosting environment to run the following commands on every deployment: |
| 123 | + |
| 124 | +- ``./manage.py migrate`` |
| 125 | + |
| 126 | + |
| 127 | +Divio Deployment |
| 128 | +================ |
| 129 | + |
| 130 | +divio.com is a cloud hosting platform optimized for django web applications. It's the quickest way to deploy this |
| 131 | +project. Here is a `video tutorial <https://www.youtube.com/watch?v=O2g5Wfoyp7Q>`_ and a |
| 132 | +`description of the deployment steps <https://github.com/django-cms/djangocms-template/blob/mco-standalone/docs/deployment-divio.md#divio-project-setup>`_ that are mostly applicable for this quickstart project. |
| 133 | + |
| 134 | + |
| 135 | +.. |pythonapp| image:: https://github.com/django-cms/django-cms-quickstart/workflows/Python%20application/badge.svg?branch=support/cms-4.1.x |
0 commit comments