Skip to content
Snippets Groups Projects
Verified Commit 1da58f70 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Fix #626: Load env file in config/.env automatically to avoid sourcing it by hand

parent 325e5aae
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,8 @@ https://docs.djangoproject.com/en/dev/ref/settings/
from __future__ import absolute_import, unicode_literals
import datetime
import logging
from urllib.parse import urlparse, urlsplit
import environ
......@@ -18,14 +20,35 @@ from celery.schedules import crontab
from funkwhale_api import __version__
logger = logging.getLogger(__name__)
ROOT_DIR = environ.Path(__file__) - 3 # (/a/b/myfile.py - 3 = /)
APPS_DIR = ROOT_DIR.path("funkwhale_api")
env = environ.Env()
try:
env.read_env(ROOT_DIR.file(".env"))
except FileNotFoundError:
pass
env_file = env("ENV_FILE", default=None)
if env_file:
# we have an explicitely specified env file
# so we try to load and it fail loudly if it does not exist
print("ENV_FILE", env_file)
env.read_env(env_file)
else:
# we try to load from .env and config/.env
# but do not crash if those files don't exist
paths = [
# /srv/funwhale/api/.env
ROOT_DIR,
# /srv/funwhale/config/.env
((ROOT_DIR - 1) + "config"),
]
for path in paths:
try:
env_path = path.file(".env")
except FileNotFoundError:
logger.debug("No env file found at %s/.env", path)
continue
env.read_env(env_path)
logger.info("Loaded env file at %s/.env", path)
break
FUNKWHALE_HOSTNAME = None
FUNKWHALE_HOSTNAME_SUFFIX = env("FUNKWHALE_HOSTNAME_SUFFIX", default=None)
......
Load env file in config/.env automatically to avoid sourcing it by hand (#626)
Automatically load .env file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
On non-docker deployments, earlier versions required you to source
the config/.env file before launching any Funkwhale command, with ``export $(cat config/.env | grep -v ^# | xargs)``
This led to more complex and error prode deployment / setup.
This is not the case anymore, and Funkwhale will automatically load this file if it's available.
......@@ -113,7 +113,7 @@ Then we'll download the frontend files:
cd /srv
rm -r funkwhale
git clone https://code.eliotberriot.com/funkwhale/funkwhale funkwhale
git clone -b master https://code.eliotberriot.com/funkwhale/funkwhale funkwhale
cd funkwhale
By default, the repository will use the ``develop`` which may be unstable thus not recommended for production instances (unless you know what your doing). You should use the master branch instead:
......@@ -227,18 +227,9 @@ Especially, populate the ``DATABASE_URL`` and ``CACHE_URL`` values based on
how you configured your PostgreSQL and Redis servers in
:doc:`external dependencies <./external_dependencies>`.
When you want to run command on the API server, such as to create the
database or compile static files, you have to ensure you source
the environment variables in that file.
This can be done like this::
export $(cat config/.env | grep -v ^# | xargs)
.. note::
Remember to reload these variables whenever you edit your .env file.
The environment file at config/.env is loaded automatically by Funkwhale processes.
Database setup
---------------
......
......@@ -105,8 +105,6 @@ match what is described in :doc:`/installation/debian`:
# update os dependencies
sudo api/install_os_dependencies.sh install
# update python dependencies
source /srv/funkwhale/load_env
sudo -u funkwhale -E /srv/funkwhale/virtualenv/bin/pip install -r api/requirements.txt
# collect static files
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment