wger: added redis, cache/compressed/combined, nginx serves static
This commit is contained in:
parent
97f9561631
commit
e7af4737c1
2 changed files with 53 additions and 6 deletions
|
@ -22,7 +22,7 @@ let
|
||||||
# to create a CACHE folder/file in the CWD.
|
# to create a CACHE folder/file in the CWD.
|
||||||
# and if I fix that, then static content no
|
# and if I fix that, then static content no
|
||||||
# longer wants to load.
|
# longer wants to load.
|
||||||
DEBUG = true;
|
DEBUG = false;
|
||||||
DATABASES.default = {
|
DATABASES.default = {
|
||||||
ENGINE = "django.db.backends.postgresql";
|
ENGINE = "django.db.backends.postgresql";
|
||||||
NAME = "wger";
|
NAME = "wger";
|
||||||
|
@ -43,7 +43,6 @@ let
|
||||||
MEDIA_ROOT = "${statedir}/media";
|
MEDIA_ROOT = "${statedir}/media";
|
||||||
MEDIA_URL = "/media/";
|
MEDIA_URL = "/media/";
|
||||||
|
|
||||||
|
|
||||||
# EMAIL
|
# EMAIL
|
||||||
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend";
|
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend";
|
||||||
EMAIL_HOST = config.mine.shared.settings.mail.domain_smtp;
|
EMAIL_HOST = config.mine.shared.settings.mail.domain_smtp;
|
||||||
|
@ -54,6 +53,12 @@ let
|
||||||
EMAIL_FROM_ADDRESS = wger_settings.EMAIL_FROM;
|
EMAIL_FROM_ADDRESS = wger_settings.EMAIL_FROM;
|
||||||
EMAIL_PAGE_DOMAIN = SITE_URL;
|
EMAIL_PAGE_DOMAIN = SITE_URL;
|
||||||
|
|
||||||
|
# Cache - Redis
|
||||||
|
DJANGO_CACHE_BACKEND = "django_redis.cache.RedisCache";
|
||||||
|
DJANGO_CACHE_LOCATION = "${config.services.redis.servers.wger.unixSocket}";
|
||||||
|
DJANGO_CACHE_TIMEOUT = 1296000; # in seconds - 60*60*24*15, 15 Days
|
||||||
|
DJANGO_CACHE_CLIENT_CLASS = "django_redis.client.DefaultClient";
|
||||||
|
|
||||||
# setup allowed hosts
|
# setup allowed hosts
|
||||||
CSRF_TRUSTED_ORIGINS = [ "https://${svc_domain}" ];
|
CSRF_TRUSTED_ORIGINS = [ "https://${svc_domain}" ];
|
||||||
ALLOWED_HOSTS = [ svc_domain ];
|
ALLOWED_HOSTS = [ svc_domain ];
|
||||||
|
@ -62,6 +67,11 @@ let
|
||||||
RECAPTCHA_PUBLIC_KEY = "";
|
RECAPTCHA_PUBLIC_KEY = "";
|
||||||
RECAPTCHA_PRIVATE_KEY = "";
|
RECAPTCHA_PRIVATE_KEY = "";
|
||||||
USE_RECAPTCHA = false;
|
USE_RECAPTCHA = false;
|
||||||
|
|
||||||
|
# does not work
|
||||||
|
STATIC_ROOT = "${wgerpkgs}/share/static";
|
||||||
|
COMPRESS_ROOT = STATIC_ROOT;
|
||||||
|
COMPRESS_OFFLINE = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
wger_settings_file = pkgs.writeText "settings.json" (builtins.toJSON wger_settings);
|
wger_settings_file = pkgs.writeText "settings.json" (builtins.toJSON wger_settings);
|
||||||
|
@ -105,9 +115,10 @@ in {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
EnvironmentFile = config.age.secrets.wger-env.path;
|
EnvironmentFile = config.age.secrets.wger-env.path;
|
||||||
|
|
||||||
# ensure it does not try to create `/CACHE`
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5s";
|
||||||
|
|
||||||
PrivateTmp = "yes";
|
PrivateTmp = "yes";
|
||||||
WorkingDirectory = "/tmp";
|
|
||||||
|
|
||||||
User = "wger";
|
User = "wger";
|
||||||
Group = "wger";
|
Group = "wger";
|
||||||
|
@ -149,6 +160,11 @@ in {
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# setup redis
|
||||||
|
services.redis.servers.wger = {
|
||||||
|
enable = true;
|
||||||
|
user = wger_user;
|
||||||
|
};
|
||||||
|
|
||||||
# setup users
|
# setup users
|
||||||
users.users."${wger_user}"= {
|
users.users."${wger_user}"= {
|
||||||
|
@ -170,7 +186,8 @@ in {
|
||||||
proxyPass = "http://localhost:${builtins.toString port}";
|
proxyPass = "http://localhost:${builtins.toString port}";
|
||||||
};
|
};
|
||||||
|
|
||||||
locations."/static".proxyPass = "http://localhost:${builtins.toString port}";
|
# locations."/static".proxyPass = "http://localhost:${builtins.toString port}";
|
||||||
|
locations."/static".root = "${wgerpkgs}/share";
|
||||||
locations."/media".proxyPass = "http://localhost:${builtins.toString port}";
|
locations."/media".proxyPass = "http://localhost:${builtins.toString port}";
|
||||||
locations."/api".proxyPass = "http://localhost:${builtins.toString port}";
|
locations."/api".proxyPass = "http://localhost:${builtins.toString port}";
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
python3,
|
python3,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
callPackage,
|
callPackage,
|
||||||
|
writeText,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -79,8 +80,37 @@ in python3.pkgs.buildPythonApplication rec {
|
||||||
cp manage.py wger/manage.py
|
cp manage.py wger/manage.py
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# fixup compressed files
|
||||||
|
postBuild = let
|
||||||
|
staticSettings = writeText "static_settings.py" ''
|
||||||
|
DEBUG = False
|
||||||
|
STATIC_ROOT = os.environ["static"]
|
||||||
|
COMPRESS_OFFLINE = True
|
||||||
|
# So we don't need postgres dependencies
|
||||||
|
DATABASES = {}
|
||||||
|
'';
|
||||||
|
in ''
|
||||||
|
# copy over static yarn things
|
||||||
|
# cp -a ${frontend}/static/yarn $out/${python3.sitePackages}/wger/core/static
|
||||||
|
cp -a ${frontend}/static/yarn wger/core/static
|
||||||
|
|
||||||
|
python3 -m wger.tasks create-settings -s $PWD/tmp_settings.py
|
||||||
|
cat ${staticSettings} >> $PWD/tmp_settings.py
|
||||||
|
mkdir tmpstatic
|
||||||
|
pushd tmpstatic
|
||||||
|
|
||||||
|
static=. WGER_SETTINGS=../tmp_settings.py python3 ../manage.py collectstatic --no-input
|
||||||
|
static=. WGER_SETTINGS=../tmp_settings.py python3 ../manage.py compress --force
|
||||||
|
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
cp -a ${frontend}/static/yarn $out/${python3.sitePackages}/wger/core/static
|
rm -rf $out/${python3.sitePackages}/wger/core/static
|
||||||
|
cp -a tmpstatic $out/${python3.sitePackages}/wger/core/static
|
||||||
|
|
||||||
|
mkdir $out/share
|
||||||
|
cp -a $out/${python3.sitePackages}/wger/core/static $out/share
|
||||||
'';
|
'';
|
||||||
|
|
||||||
pythonImportsCheck = [
|
pythonImportsCheck = [
|
||||||
|
|
Loading…
Reference in a new issue