Fix #626: Load env file in config/.env automatically to avoid sourcing it by hand
This commit is contained in:
parent
940147dc4c
commit
8679edb160
|
@ -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)
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
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.
|
|
@ -112,11 +112,11 @@ Then we'll download the frontend files:
|
|||
case, run
|
||||
|
||||
cd /srv
|
||||
|
||||
|
||||
rm -r funkwhale
|
||||
|
||||
|
||||
git clone -b master https://code.eliotberriot.com/funkwhale/funkwhale funkwhale
|
||||
|
||||
|
||||
cd funkwhale
|
||||
|
||||
The above clone command uses the master branch instead of the default develop branch, as master is stable and more suited for production setups.
|
||||
|
@ -228,18 +228,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
|
||||
|
|
Loading…
Reference in New Issue