la-chariotte/docs/deploy.md

2.8 KiB

How to deploy

!!! info "This is how we deploy"

This page describes how the main instance is deployed, and is mainly meant as a
way to share the knowledge. You can obviously do things differently.

Services

"La chariotte" uses different domains:

  • docs.chariotte.fr, the docs you are reading now. It's handled by readthedocs.org.
  • chariotte.fr, the main instance. It's deployed on Alwaysdata
  • blog.chariotte.fr, our blog. It's a static website deployed on Gitlab pages.

The main instance

Alwaysdata, our hosting provider

Alwaysdata offers a free plan for open source projects, which we are using for the main instance of la chariotte.

Thanks to them for supporting open source!

Getting access

To get access, you'll need to generate an ssh keypair, and give your public key to a known admin.

ssh-keygen

This will generate a private a public key. You need to share the public key. On unix systems, it's stored under ~/.ssh/id_rsa.pub by default.

Connecting to ssh

Once your key is generated and you're known to the server, you can connect there.

ssh chariotte@ssh-chariotte.alwaysdata.net

Configuration file

The chariotte application is run by [uwsgi](https://uwsgi-docs.readthedocs.io/ en/latest/), managed by AlwaysData.

The production settings are stored in ~/ la_chariotte/prod_settings.py, and the secrets are defined in the admin console.

The different sites

In the AD console, here are the defined sites:

  • app.chariotte.fr, redirecting to chariotte.fr
  • chariotte.fr/static, hosting the static files, it just serves the collected static files stored in /static/
  • chariotte.fr, the main website, defined in the next section

chariotte.fr is configured as a Python WSGI app:

  • application path: /la_chariotte/la_chariotte/wsgi.py
  • working directory: /la_chariotte
  • venv location: /venv

Environment variables:

DJANGO_SETTINGS_MODULE=prod_settings

How to deploy

To deploy a new version, we'll need to:

  • get the new code
  • update the database
  • collect the static files
  • restart the daemon

Here's how:

# Activate the venv
source venv/bin/activate
cd la_chariotte

# Get the code
git fetch
git checkout tag # if we're using a tag, otherwise, just checkout the main branch

python manage.py updatedb
python manage.py collectstatic

Then you'll need to restart the server from AD's interface.

What about SSL certificates?

The SSL certificates are issued directly by AlwaysData (they use [Let's Encrypt] (https://letsencrypt.org/) behind the scenes)

Mails

Mails are hosted by alwaysdata, as part of their opensource plan.