Production Server
Note
This guide explains how to set up a production server on Ubuntu 20.04.3 LTS (Focal Fossa). Other linux distributions should work just fine, but we don’t provide detailed instructions for them.
System requirements
Upgrade alls:
sudo apt update && sudo apt -y upgradeInstall system requirements:
sudo apt -y install python3-venv python3-pip libpq-dev ffmpeg
Lunes CMS Package
Choose a location for your installation, e.g.
/opt/lunes-cms/
:sudo mkdir /opt/lunes-cms sudo chown www-data:www-data /opt/lunes-cmsCreate config and log files and set more restrictive permissions:
sudo touch /var/log/lunes-cms.log /etc/lunes-cms.ini sudo chown www-data:www-data /var/log/lunes-cms.log /etc/lunes-cms.ini sudo chmod 660 /var/log/lunes-cms.log /etc/lunes-cms.iniChange to a shell with the permissions of the webserver’s user
www-data
:sudo -u www-data bashCreate a virtual environment:
cd /opt/lunes-cms python3 -m venv .venv source .venv/bin/activateInstall the Lunes cms inside the virtual environment:
pip3 install lunes-cmsCreate a symlink to the https://github.com/digitalfabrik/lunes-cms/blob/develop/lunes_cms/core/wsgi.py file to facilitate the Apache configuration:
ln -s $(python -c "from lunes_cms.core import wsgi; print(wsgi.__file__)") .Set the initial configuration by adding the following to
/etc/lunes-cms.ini
(for a full list of all possible configuration values, have a look at https://github.com/digitalfabrik/lunes-cms/blob/develop/example-configs/lunes-cms.ini):[lunes-cms] SECRET_KEY = <your-secret-key> FCM_KEY = <your-firebase-key> BASE_URL = https://cms.lunes-app.de LOGFILE = /var/lunes-cms.logLeave the www-data shell:
exit
Static Files
Create root directories for all static files. It’s usually good practise to separate code and data, so e.g. create the directory
/var/www/lunes-cms/
with the sub-directoriesstatic
andmedia
:sudo mkdir -p /var/www/lunes-cms/{static,media}Make the Apache user
www-data
owner of these directories:sudo chown -R www-data:www-data /var/www/lunes-cmsAdd the static directories to the config in
/etc/lunes-cms.ini
:STATIC_ROOT = /var/www/lunes-cms/static MEDIA_ROOT = /var/www/lunes-cms/mediaCollect static files:
cd /opt/lunes-cms sudo -u www-data bash source .venv/bin/activate lunes-cms-cli collectstatic exit
Webserver
Install an Apache2 server with mod_wsgi:
sudo apt -y install apache2 libapache2-mod-wsgi-py3Enable the
rewrite
andwsgi
:sudo a2enmod rewrite wsgiSetup a vhost for the lunes-cms by using our example config: https://github.com/digitalfabrik/lunes-cms/blob/develop/example-configs/apache2-lunes-vhost.conf and edit the your domain and the paths for static files.
Database
Install a PostgreSQL database on your system:
sudo apt -y install postgresqlCreate a database user
lunes
and set a password:sudo -u postgres createuser -P -d lunesCreate a database
lunes
:sudo -u postgres createdb -O lunes lunesAdd the database credentials to the config in
/etc/lunes-cms.ini
:DB_PASSWORD = <your-password>Execute initial migrations:
cd /opt/lunes-cms sudo -u www-data bash source .venv/bin/activate lunes-cms-cli migrate
Email configuration
Add your SMTP credentials to
/etc/lunes.ini
(for the default values, see https://github.com/digitalfabrik/lunes-cms/blob/develop/example-configs/lunes-cms.ini):EMAIL_HOST = <your-smtp-server> EMAIL_HOST_USER = <your-username> EMAIL_HOST_PASSWORD = <your-password>