Revert "phpfpm service: restructured pool configuration"

This reverts commit 6b3f5b5a421fe3422e9ef63a3fd690178c36163e because it
introduced a non-backwards compatible change in the phpfpm interface,
without really needing to. The new interface, if needed, can be re-added
alongside the old interface.

Commit 98e419c0e27dd21e9dee0b915876ea60 ("tt-rss service: init at 16.3")
depends on the new interface, so this commit updates the tt-rss service
to work with the old services.phpfpm.poolConfigs interface.

Changed files
+39 -67
nixos
modules
services
web-apps
web-servers
+1 -1
nixos/modules/module-list.nix
···
./services/web-servers/lighttpd/gitweb.nix
./services/web-servers/lighttpd/inginious.nix
./services/web-servers/nginx/default.nix
-
./services/web-servers/phpfpm/default.nix
+
./services/web-servers/phpfpm.nix
./services/web-servers/shellinabox.nix
./services/web-servers/tomcat.nix
./services/web-servers/uwsgi.nix
+17 -18
nixos/modules/services/web-apps/tt-rss.nix
···
else cfg.database.port;
poolName = "tt-rss";
+
phpfpmSocketName = "/var/run/phpfpm/${poolName}.sock";
virtualHostName = "tt-rss";
tt-rss-config = pkgs.writeText "config.php" ''
···
root = "/var/lib/tt-rss";
in mkIf cfg.enable {
-
services.phpfpm.pools = if cfg.pool == "${poolName}" then {
-
"${poolName}" = {
-
listen = "/var/run/phpfpm/${poolName}.sock";
-
extraConfig = ''
-
listen.owner = nginx
-
listen.group = nginx
-
listen.mode = 0600
-
user = nginx
-
pm = dynamic
-
pm.max_children = 75
-
pm.start_servers = 10
-
pm.min_spare_servers = 5
-
pm.max_spare_servers = 20
-
pm.max_requests = 500
-
catch_workers_output = 1
-
'';
-
};
+
services.phpfpm.poolConfigs = if cfg.pool == "${poolName}" then {
+
"${poolName}" = ''
+
listen = "${phpfpmSocketName}";
+
listen.owner = nginx
+
listen.group = nginx
+
listen.mode = 0600
+
user = nginx
+
pm = dynamic
+
pm.max_children = 75
+
pm.start_servers = 10
+
pm.min_spare_servers = 5
+
pm.max_spare_servers = 20
+
pm.max_requests = 500
+
catch_workers_output = 1
+
'';
} else {};
# TODO: Re-enable after https://github.com/NixOS/nixpkgs/pull/15862 is merged
···
# locations."~ \.php$" = {
# extraConfig = ''
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
-
# fastcgi_pass unix:${config.services.phpfpm.pools."${cfg.pool}".listen};
+
# fastcgi_pass unix:${phpfpmSocketName};
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME ${root}/$fastcgi_script_name;
+21 -13
nixos/modules/services/web-servers/phpfpm/default.nix nixos/modules/services/web-servers/phpfpm.nix
···
pidFile = "${stateDir}/phpfpm.pid";
-
mkPool = n: p: ''
-
[${n}]
-
listen = ${p.listen}
-
${p.extraConfig}
-
'';
-
cfgFile = pkgs.writeText "phpfpm.conf" ''
[global]
pid = ${pidFile}
···
daemonize = yes
${cfg.extraConfig}
-
${concatStringsSep "\n" (mapAttrsToList mkPool cfg.pools)}
+
${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
'';
phpIni = pkgs.writeText "php.ini" ''
···
"Options appended to the PHP configuration file <filename>php.ini</filename>.";
};
-
pools = mkOption {
-
type = types.attrsOf (types.submodule (import ./pool-options.nix {
-
inherit lib;
-
}));
+
poolConfigs = mkOption {
+
type = types.attrsOf types.lines;
default = {};
+
example = literalExample ''
+
{ mypool = '''
+
listen = /run/phpfpm/mypool
+
user = nobody
+
pm = dynamic
+
pm.max_children = 75
+
pm.start_servers = 10
+
pm.min_spare_servers = 5
+
pm.max_spare_servers = 20
+
pm.max_requests = 500
+
''';
+
}
+
'';
description = ''
-
If no pools are defined, the phpfpm service is disabled.
+
A mapping between PHP FPM pool names and their configurations.
+
See the documentation on <literal>php-fpm.conf</literal> for
+
details on configuration directives. If no pools are defined,
+
the phpfpm service is disabled.
'';
};
};
};
-
config = mkIf (cfg.pools != {}) {
+
config = mkIf (cfg.poolConfigs != {}) {
systemd.services.phpfpm = {
wantedBy = [ "multi-user.target" ];
-35
nixos/modules/services/web-servers/phpfpm/pool-options.nix
···
-
{ lib }:
-
-
with lib; {
-
-
options = {
-
-
listen = mkOption {
-
type = types.str;
-
example = "/path/to/unix/socket";
-
description = ''
-
The address on which to accept FastCGI requests.
-
'';
-
};
-
-
extraConfig = mkOption {
-
type = types.lines;
-
example = ''
-
user = nobody
-
pm = dynamic
-
pm.max_children = 75
-
pm.start_servers = 10
-
pm.min_spare_servers = 5
-
pm.max_spare_servers = 20
-
pm.max_requests = 500
-
'';
-
-
description = ''
-
Extra lines that go into the pool configuration.
-
See the documentation on <literal>php-fpm.conf</literal> for
-
details on configuration directives.
-
'';
-
};
-
};
-
}
-