]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Move cache clearing of php applications to preStart systemd
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 21 Apr 2019 17:31:06 +0000 (19:31 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 21 Apr 2019 17:31:06 +0000 (19:31 +0200)
13 files changed:
nixops/modules/websites/aten/aten.nix
nixops/modules/websites/aten/default.nix
nixops/modules/websites/connexionswing/connexionswing.nix
nixops/modules/websites/connexionswing/default.nix
nixops/modules/websites/ludivine/default.nix
nixops/modules/websites/ludivine/ludivinecassal.nix
nixops/modules/websites/phpfpm/default.nix
nixops/modules/websites/piedsjaloux/default.nix
nixops/modules/websites/piedsjaloux/piedsjaloux.nix
nixops/modules/websites/tellesflorian/default.nix
nixops/modules/websites/tellesflorian/tellesflorian.nix
nixops/modules/websites/tools/tools/default.nix
nixops/modules/websites/tools/tools/wallabag.nix

index 6059eb6b85fd64eb07ae1d59c0054b1be88c9d83..567dcd13dfc2fe7656f09a8db32d800ad18f3881 100644 (file)
@@ -4,6 +4,18 @@ let
     environment = config.environment;
     varDir = "/var/lib/aten_${environment}";
     phpFpm = rec {
+      preStart = ''
+        if [ ! -f "${varDir}/currentWebappDir" -o \
+            ! -f "${varDir}/currentKey" -o \
+            "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
+            || ! sha512sum -c --status ${varDir}/currentKey; then
+          pushd ${webappDir} > /dev/null
+          /run/wrappers/bin/sudo -u wwwrun APP_ENV=${environment} ./bin/console --env=${environment} cache:clear --no-warmup
+          popd > /dev/null
+          echo -n "${webappDir}" > ${varDir}/currentWebappDir
+          sha512sum /run/keys/webapps/${environment}-aten > ${varDir}/currentKey
+        fi
+        '';
       serviceDeps = [ "postgresql.service" "${environment}-aten-key.service" ];
       socket = "/var/run/phpfpm/aten-${environment}.sock";
       pool = ''
@@ -90,13 +102,6 @@ let
       text = ''
       install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}
       install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
-      if [ ! -f "${varDir}/currentWebappDir" -o \
-          "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
-        pushd ${webappDir} > /dev/null
-        $wrapperDir/sudo -u wwwrun APP_ENV=${environment} ./bin/console --env=${environment} cache:clear --no-warmup
-        popd > /dev/null
-        echo -n "${webappDir}" > ${varDir}/currentWebappDir
-      fi
       '';
     };
     yarnModules = let
index 58228ed08a0429368f38f65e0e1ccdea572336a0..b0f7fdbe483bda47b9843d8bef53347e1b50b90c 100644 (file)
@@ -41,6 +41,7 @@ in {
         };
       };
 
+      services.myPhpfpm.preStart.aten_prod = aten_prod.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.aten_prod = aten_prod.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.aten_prod = aten_prod.phpFpm.pool;
       system.activationScripts.aten_prod = aten_prod.activationScript;
@@ -60,6 +61,7 @@ in {
     (lib.mkIf cfg.integration.enable {
       deployment.keys = aten_dev.keys;
       security.acme.certs."eldiron".extraDomains."dev.aten.pro" = null;
+      services.myPhpfpm.preStart.aten_dev = aten_dev.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.aten_dev = aten_dev.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.aten_dev = aten_dev.phpFpm.pool;
       system.activationScripts.aten_dev = aten_dev.activationScript;
index 2960c6a84e282d87ad8a3537d3c1cf7f76644d54..13d4fbabb228a794b5d9d05a98f2553b08b2e383 100644 (file)
@@ -33,6 +33,18 @@ let
       '';
     };
     phpFpm = rec {
+      preStart = ''
+        if [ ! -f "${varDir}/currentWebappDir" -o \
+            ! -f "${varDir}/currentKey" -o \
+            "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
+            || ! sha512sum -c --status ${varDir}/currentKey; then
+          pushd ${webappDir} > /dev/null
+          /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
+          popd > /dev/null
+          echo -n "${webappDir}" > ${varDir}/currentWebappDir
+          sha512sum /run/keys/webapps/${environment}-connexionswing > ${varDir}/currentKey
+        fi
+        '';
       serviceDeps = [ "mysql.service" "${environment}-connexionswing-key.service" ];
       socket = "/var/run/phpfpm/connexionswing-${environment}.sock";
       phpConfig = ''
@@ -151,13 +163,6 @@ let
         ${varDir}/uploads \
         ${varDir}/var
       install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
-      if [ ! -f "${varDir}/currentWebappDir" -o \
-          "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
-        pushd ${webappDir} > /dev/null
-        $wrapperDir/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
-        popd > /dev/null
-        echo -n "${webappDir}" > ${varDir}/currentWebappDir
-      fi
       '';
     };
     webappDir = composerEnv.buildPackage (
index 9c74f02c3db73bcdefd79821d3f260b14b59d0e5..ccbaa02bb27b92a796dc0a8473b13747dc03129c 100644 (file)
@@ -43,6 +43,7 @@ in {
         };
       };
 
+      services.myPhpfpm.preStart.connexionswing_prod = connexionswing_prod.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.connexionswing_prod = connexionswing_prod.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.connexionswing_prod = connexionswing_prod.phpFpm.pool;
       services.myPhpfpm.poolPhpConfigs.connexionswing_prod = connexionswing_prod.phpFpm.phpConfig;
@@ -63,6 +64,7 @@ in {
       deployment.keys = connexionswing_dev.keys;
       security.acme.certs."eldiron".extraDomains."sandetludo.immae.eu" = null;
       security.acme.certs."eldiron".extraDomains."connexionswing.immae.eu" = null;
+      services.myPhpfpm.preStart.connexionswing_dev = connexionswing_dev.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.connexionswing_dev = connexionswing_dev.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.connexionswing_dev = connexionswing_dev.phpFpm.pool;
       services.myPhpfpm.poolPhpConfigs.connexionswing_dev = connexionswing_dev.phpFpm.phpConfig;
index c5a904b3da3722094b04d662bba0a3e10fd11835..814764f8659a64d4a33707b121fde0bf02704bde 100644 (file)
@@ -37,6 +37,7 @@ in {
         };
       };
 
+      services.myPhpfpm.preStart.ludivinecassal_prod = ludivinecassal_prod.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.ludivinecassal_prod = ludivinecassal_prod.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.ludivinecassal_prod = ludivinecassal_prod.phpFpm.pool;
       system.activationScripts.ludivinecassal_prod = ludivinecassal_prod.activationScript;
@@ -56,6 +57,7 @@ in {
       deployment.keys = ludivinecassal_dev.keys;
       security.acme.certs."eldiron".extraDomains."ludivine.immae.eu" = null;
 
+      services.myPhpfpm.preStart.ludivinecassal_dev = ludivinecassal_dev.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.ludivinecassal_dev = ludivinecassal_dev.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.ludivinecassal_dev = ludivinecassal_dev.phpFpm.pool;
       system.activationScripts.ludivinecassal_dev = ludivinecassal_dev.activationScript;
index 423bbda4fa6aa5d69f9950c667ffed42a90933ed..439d3c98e73737904c4ff10a20c06c0ad51ccadd 100644 (file)
@@ -40,6 +40,18 @@ let
       '';
     };
     phpFpm = rec {
+      preStart = ''
+        if [ ! -f "${varDir}/currentWebappDir" -o \
+            ! -f "${varDir}/currentKey" -o \
+            "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
+            || ! sha512sum -c --status ${varDir}/currentKey; then
+          pushd ${webappDir} > /dev/null
+          /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
+          popd > /dev/null
+          echo -n "${webappDir}" > ${varDir}/currentWebappDir
+          sha512sum /run/keys/webapps/${environment}-ludivinecassal > ${varDir}/currentKey
+        fi
+        '';
       serviceDeps = [ "mysql.service" "${environment}-ludivinecassal-key.service" ];
       socket = "/var/run/phpfpm/ludivinecassal-${environment}.sock";
       pool = ''
@@ -141,13 +153,6 @@ let
       install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}
       install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/tmp
       install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
-      if [ ! -f "${varDir}/currentWebappDir" -o \
-          "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
-        pushd ${webappDir} > /dev/null
-        $wrapperDir/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
-        popd > /dev/null
-        echo -n "${webappDir}" > ${varDir}/currentWebappDir
-      fi
       '';
     };
     webappDir = composerEnv.buildPackage (
index 9c068bf604080420f059ce07ba95960304d981cb..60959e08e9812f0c4a228125146f08cdb14ccaaa 100644 (file)
@@ -95,6 +95,20 @@ in {
         '';
       };
 
+      preStart = mkOption {
+        default = {};
+        type = types.attrsOf types.lines;
+        example = literalExample ''
+          { mypool = '''
+              touch foo
+            ''';
+          }
+        '';
+        description = ''
+          Extra lines that will go into the preStart systemd service
+        '';
+      };
+
       poolPhpConfigs = mkOption {
         default = {};
         type = types.attrsOf types.lines;
@@ -181,7 +195,7 @@ in {
         partOf = [ "phpfpm.target" ];
         preStart = ''
           mkdir -p ${stateDir}
-        '';
+        '' + (cfg.preStart.${pool} or "");
         serviceConfig = let
           cfgFile = fpmCfgFile pool poolConfig;
           poolPhpIni = cfg.poolPhpConfigs.${pool} or "";
index 7552db413103cdd37b219e18455193f5fe36ee90..57849a3f2d010ef25495ed6a68dc9d03a6a1d5ad 100644 (file)
@@ -41,6 +41,7 @@ in {
         };
       };
 
+      services.myPhpfpm.preStart.piedsjaloux_prod = piedsjaloux_prod.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.piedsjaloux_prod = piedsjaloux_prod.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.piedsjaloux_prod = piedsjaloux_prod.phpFpm.pool;
       system.activationScripts.piedsjaloux_prod = piedsjaloux_prod.activationScript;
@@ -59,6 +60,7 @@ in {
     (lib.mkIf cfg.integration.enable {
       deployment.keys = piedsjaloux_dev.keys;
       security.acme.certs."eldiron".extraDomains."piedsjaloux.immae.eu" = null;
+      services.myPhpfpm.preStart.piedsjaloux_dev = piedsjaloux_dev.phpFpm.preStart;
       services.myPhpfpm.serviceDependencies.piedsjaloux_dev = piedsjaloux_dev.phpFpm.serviceDeps;
       services.myPhpfpm.poolConfigs.piedsjaloux_dev = piedsjaloux_dev.phpFpm.pool;
       system.activationScripts.piedsjaloux_dev = piedsjaloux_dev.activationScript;
index 1c7e983f72eaa6679d4e10c4d1bd91dd7cb8189d..87699dbe25b3c51ddad5d8a266fc88c688245472 100644 (file)
@@ -28,6 +28,18 @@ let
       '';
     };
     phpFpm = rec {
+      preStart = ''
+        if [ ! -f "${varDir}/currentWebappDir" -o \
+            ! -f "${varDir}/currentKey" -o \
+            "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
+            || ! sha512sum -c --status ${varDir}/currentKey; then
+          pushd ${webappDir} > /dev/null
+          /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
+          popd > /dev/null
+          echo -n "${webappDir}" > ${varDir}/currentWebappDir
+          sha512sum /run/keys/webapps/${environment}-piedsjaloux > ${varDir}/currentKey
+        fi
+        '';
       serviceDeps = [ "mysql.service" "${environment}-piedsjaloux-key.service" ];
       socket = "/var/run/phpfpm/piedsjaloux-${environment}.sock";
       pool = ''
@@ -130,13 +142,6 @@ let
       install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
         ${varDir}/tmp
       install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
-      if [ ! -f "${varDir}/currentWebappDir" -o \
-          "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
-        pushd ${webappDir} > /dev/null
-        $wrapperDir/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
-        popd > /dev/null
-        echo -n "${webappDir}" > ${varDir}/currentWebappDir
-      fi
       '';
     };
     webappDir = composerEnv.buildPackage (
index 171d2e7d7c2683f057849612b5743da6a5b8c567..9bf4a48f4cfc3d782ca86fdb5acb5c08b4fadf8c 100644 (file)
@@ -18,6 +18,7 @@ in {
   config = lib.mkIf cfg.integration.enable {
     deployment.keys = tellesflorian_dev.keys;
     security.acme.certs."eldiron".extraDomains."app.tellesflorian.com" = null;
+    services.myPhpfpm.preStart.tellesflorian_dev = tellesflorian_dev.phpFpm.preStart;
     services.myPhpfpm.serviceDependencies.tellesflorian_dev = tellesflorian_dev.phpFpm.serviceDeps;
     services.myPhpfpm.poolConfigs.tellesflorian_dev = tellesflorian_dev.phpFpm.pool;
     system.activationScripts.tellesflorian_dev = tellesflorian_dev.activationScript;
index a8e741e85dcd3e88755218867be5e31f3ffb6f3d..ba46c0c99c67f9167d4ab4cc876a89e19215ad3c 100644 (file)
@@ -24,6 +24,18 @@ let
       '';
     };
     phpFpm = rec {
+      preStart = ''
+        if [ ! -f "${varDir}/currentWebappDir" -o \
+            ! -f "${varDir}/currentKey" -o \
+            "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
+            || ! sha512sum -c --status ${varDir}/currentKey; then
+          pushd ${webappDir} > /dev/null
+          /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
+          popd > /dev/null
+          echo -n "${webappDir}" > ${varDir}/currentWebappDir
+          sha512sum /run/keys/webapps/${environment}-tellesflorian > ${varDir}/currentKey
+        fi
+        '';
       serviceDeps = [
         "mysql.service"
         "${environment}-tellesflorian-passwords-key.service"
@@ -141,13 +153,6 @@ let
       install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
         ${varDir}/var
       install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
-      if [ ! -f "${varDir}/currentWebappDir" -o \
-          "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
-        pushd ${webappDir} > /dev/null
-        $wrapperDir/sudo -u wwwrun ./bin/console --env=${environment} cache:clear --no-warmup
-        popd > /dev/null
-        echo -n "${webappDir}" > ${varDir}/currentWebappDir
-      fi
       '';
     };
     webappDir = composerEnv.buildPackage (
index fc5b48d29b3b43cc1748ac6355806065093bb689..1aa70b89bec7fbc30ea3e8bf58d23316b738bcef 100644 (file)
@@ -175,6 +175,9 @@ in {
         '';
       roundcubemail = roundcubemail.phpFpm.phpConfig;
     };
+    services.myPhpfpm.preStart = {
+      wallabag = wallabag.phpFpm.preStart;
+    };
     services.myPhpfpm.poolConfigs = {
       adminer = adminer.phpFpm.pool;
       ttrss = ttrss.phpFpm.pool;
index 0cacad329762b0bbb9fdb9f2f2b878e033f3f5a0..f145bf332cf748345d5c750ba8a7ceac89fd494f 100644 (file)
@@ -119,15 +119,6 @@ let
     activationScript = ''
       install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
         ${varDir}/var ${varDir}/data/db ${varDir}/assets/images
-      if [ ! -f "${varDir}/currentWebappDir" -o \
-          "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
-        pushd ${webappDir} > /dev/null
-        $wrapperDir/sudo -u wwwrun ./bin/console --env=prod cache:clear
-        rm -rf /var/lib/wallabag/var/cache/pro_
-        $wrapperDir/sudo -u wwwrun ./bin/console --env=prod doctrine:migrations:migrate --no-interaction
-        popd > /dev/null
-        echo -n "${webappDir}" > ${varDir}/currentWebappDir
-      fi
       '';
     webRoot = "${webappDir}/web";
     # Domain migration: Table wallabag_entry contains whole
@@ -169,6 +160,20 @@ let
         '';
     };
     phpFpm = rec {
+      preStart = ''
+        if [ ! -f "${varDir}/currentWebappDir" -o \
+            ! -f "${varDir}/currentKey" -o \
+            "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \
+            || ! sha512sum -c --status ${varDir}/currentKey; then
+          pushd ${webappDir} > /dev/null
+          /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=prod cache:clear
+          rm -rf /var/lib/wallabag/var/cache/pro_
+          /run/wrappers/bin/sudo -u wwwrun ./bin/console --env=prod doctrine:migrations:migrate --no-interaction
+          popd > /dev/null
+          echo -n "${webappDir}" > ${varDir}/currentWebappDir
+          sha512sum /run/keys/webapps/tools-wallabag > ${varDir}/currentKey
+        fi
+        '';
       serviceDeps = [ "postgresql.service" "openldap.service" "tools-wallabag-key.service" ];
       basedir = builtins.concatStringsSep ":" [ webappDir "/run/keys/webapps/tools-wallabag" varDir ];
       socket = "/var/run/phpfpm/wallabag.sock";