Merge pull request #122658 from aanderse/httpd-reload
nixos/httpd: provide a stable path stable path to the configuration f…
This commit is contained in:
commit
fc63be7ac8
|
@ -15,11 +15,9 @@ let
|
||||||
apachectl = pkgs.runCommand "apachectl" { meta.priority = -1; } ''
|
apachectl = pkgs.runCommand "apachectl" { meta.priority = -1; } ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp ${pkg}/bin/apachectl $out/bin/apachectl
|
cp ${pkg}/bin/apachectl $out/bin/apachectl
|
||||||
sed -i $out/bin/apachectl -e 's|$HTTPD -t|$HTTPD -t -f ${httpdConf}|'
|
sed -i $out/bin/apachectl -e 's|$HTTPD -t|$HTTPD -t -f /etc/httpd/httpd.conf|'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
httpdConf = cfg.configFile;
|
|
||||||
|
|
||||||
php = cfg.phpPackage.override { apacheHttpd = pkg; };
|
php = cfg.phpPackage.override { apacheHttpd = pkg; };
|
||||||
|
|
||||||
phpModuleName = let
|
phpModuleName = let
|
||||||
|
@ -682,6 +680,8 @@ in
|
||||||
}) (filter (hostOpts: hostOpts.useACMEHost == null) acmeEnabledVhosts);
|
}) (filter (hostOpts: hostOpts.useACMEHost == null) acmeEnabledVhosts);
|
||||||
in listToAttrs acmePairs;
|
in listToAttrs acmePairs;
|
||||||
|
|
||||||
|
# httpd requires a stable path to the configuration file for reloads
|
||||||
|
environment.etc."httpd/httpd.conf".source = cfg.configFile;
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
apachectl
|
apachectl
|
||||||
pkg
|
pkg
|
||||||
|
@ -753,6 +753,7 @@ in
|
||||||
wants = concatLists (map (certName: [ "acme-finished-${certName}.target" ]) dependentCertNames);
|
wants = concatLists (map (certName: [ "acme-finished-${certName}.target" ]) dependentCertNames);
|
||||||
after = [ "network.target" ] ++ map (certName: "acme-selfsigned-${certName}.service") dependentCertNames;
|
after = [ "network.target" ] ++ map (certName: "acme-selfsigned-${certName}.service") dependentCertNames;
|
||||||
before = map (certName: "acme-${certName}.service") dependentCertNames;
|
before = map (certName: "acme-${certName}.service") dependentCertNames;
|
||||||
|
restartTriggers = [ cfg.configFile ];
|
||||||
|
|
||||||
path = [ pkg pkgs.coreutils pkgs.gnugrep ];
|
path = [ pkg pkgs.coreutils pkgs.gnugrep ];
|
||||||
|
|
||||||
|
@ -771,9 +772,9 @@ in
|
||||||
'';
|
'';
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "@${pkg}/bin/httpd httpd -f ${httpdConf}";
|
ExecStart = "@${pkg}/bin/httpd httpd -f /etc/httpd/httpd.conf";
|
||||||
ExecStop = "${pkg}/bin/httpd -f ${httpdConf} -k graceful-stop";
|
ExecStop = "${pkg}/bin/httpd -f /etc/httpd/httpd.conf -k graceful-stop";
|
||||||
ExecReload = "${pkg}/bin/httpd -f ${httpdConf} -k graceful";
|
ExecReload = "${pkg}/bin/httpd -f /etc/httpd/httpd.conf -k graceful";
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
Type = "forking";
|
Type = "forking";
|
||||||
|
@ -800,6 +801,7 @@ in
|
||||||
# certs are updated _after_ config has been reloaded.
|
# certs are updated _after_ config has been reloaded.
|
||||||
before = sslTargets;
|
before = sslTargets;
|
||||||
after = sslServices;
|
after = sslServices;
|
||||||
|
restartTriggers = [ cfg.configFile ];
|
||||||
# Block reloading if not all certs exist yet.
|
# Block reloading if not all certs exist yet.
|
||||||
# Happens when config changes add new vhosts/certs.
|
# Happens when config changes add new vhosts/certs.
|
||||||
unitConfig.ConditionPathExists = map (certName: certs.${certName}.directory + "/fullchain.pem") dependentCertNames;
|
unitConfig.ConditionPathExists = map (certName: certs.${certName}.directory + "/fullchain.pem") dependentCertNames;
|
||||||
|
@ -807,7 +809,7 @@ in
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
TimeoutSec = 60;
|
TimeoutSec = 60;
|
||||||
ExecCondition = "/run/current-system/systemd/bin/systemctl -q is-active httpd.service";
|
ExecCondition = "/run/current-system/systemd/bin/systemctl -q is-active httpd.service";
|
||||||
ExecStartPre = "${pkg}/bin/httpd -f ${httpdConf} -t";
|
ExecStartPre = "${pkg}/bin/httpd -f /etc/httpd/httpd.conf -t";
|
||||||
ExecStart = "/run/current-system/systemd/bin/systemctl reload httpd.service";
|
ExecStart = "/run/current-system/systemd/bin/systemctl reload httpd.service";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue