From 62b774a7001f0d1d89d7ba6552c37b885c0189b7 Mon Sep 17 00:00:00 2001 From: Aaron Andersen Date: Wed, 3 Jul 2019 17:34:17 -0400 Subject: nixos/phpfpm: add socket option to replace the listen option --- nixos/modules/services/misc/zoneminder.nix | 6 ++--- .../services/web-apps/icingaweb2/icingaweb2.nix | 5 ++-- nixos/modules/services/web-apps/limesurvey.nix | 3 +-- nixos/modules/services/web-apps/mediawiki.nix | 2 +- nixos/modules/services/web-apps/nextcloud.nix | 4 ++-- nixos/modules/services/web-apps/restya-board.nix | 5 ++-- nixos/modules/services/web-apps/selfoss.nix | 2 -- nixos/modules/services/web-apps/tt-rss.nix | 3 +-- .../services/web-servers/phpfpm/default.nix | 28 +++++++++++++++++++--- 9 files changed, 36 insertions(+), 22 deletions(-) diff --git a/nixos/modules/services/misc/zoneminder.nix b/nixos/modules/services/misc/zoneminder.nix index cf56ae89b399a..ee94d8a06b5d6 100644 --- a/nixos/modules/services/misc/zoneminder.nix +++ b/nixos/modules/services/misc/zoneminder.nix @@ -2,6 +2,7 @@ let cfg = config.services.zoneminder; + fpm = config.services.phpfpm.pools.zoneminder; pkg = pkgs.zoneminder; dirName = pkg.dirName; @@ -19,8 +20,6 @@ let useCustomDir = cfg.storageDir != null; - socket = "/run/phpfpm/${dirName}.sock"; - zms = "/cgi-bin/zms"; dirs = dirList: [ dirName ] ++ map (e: "${dirName}/${e}") dirList; @@ -274,7 +273,7 @@ in { fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param HTTP_PROXY ""; - fastcgi_pass unix:${socket}; + fastcgi_pass unix:${fpm.socket}; } } ''; @@ -284,7 +283,6 @@ in { phpfpm = lib.mkIf useNginx { pools.zoneminder = { - listen = socket; phpOptions = '' date.timezone = "${config.time.timeZone}" diff --git a/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix b/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix index 4c7736b88873e..35a7badfd63f5 100644 --- a/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix +++ b/nixos/modules/services/web-apps/icingaweb2/icingaweb2.nix @@ -1,7 +1,7 @@ { config, lib, pkgs, ... }: with lib; let cfg = config.services.icingaweb2; + fpm = config.services.phpfpm.pools.${poolName}; poolName = "icingaweb2"; - phpfpmSocketName = "/var/run/phpfpm/${poolName}.sock"; defaultConfig = { global = { @@ -166,7 +166,6 @@ in { config = mkIf cfg.enable { services.phpfpm.pools = mkIf (cfg.pool == "${poolName}") { "${poolName}" = { - listen = phpfpmSocketName; extraConfig = '' listen.owner = nginx listen.group = nginx @@ -210,7 +209,7 @@ in { include ${config.services.nginx.package}/conf/fastcgi.conf; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass unix:${phpfpmSocketName}; + fastcgi_pass unix:${fpm.socket}; fastcgi_param SCRIPT_FILENAME ${pkgs.icingaweb2}/public/index.php; ''; }; diff --git a/nixos/modules/services/web-apps/limesurvey.nix b/nixos/modules/services/web-apps/limesurvey.nix index 84a94fc446e59..0449b9dfd41a0 100644 --- a/nixos/modules/services/web-apps/limesurvey.nix +++ b/nixos/modules/services/web-apps/limesurvey.nix @@ -203,7 +203,6 @@ in }; services.phpfpm.pools.limesurvey = { - listen = "/run/phpfpm/limesurvey.sock"; extraConfig = '' listen.owner = ${config.services.httpd.user}; listen.group = ${config.services.httpd.group}; @@ -241,7 +240,7 @@ in - SetHandler "proxy:unix:${fpm.listen}|fcgi://localhost/" + SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" diff --git a/nixos/modules/services/web-apps/mediawiki.nix b/nixos/modules/services/web-apps/mediawiki.nix index 5bd5977e592b5..7fb28d3507895 100644 --- a/nixos/modules/services/web-apps/mediawiki.nix +++ b/nixos/modules/services/web-apps/mediawiki.nix @@ -403,7 +403,7 @@ in - SetHandler "proxy:unix:${fpm.listen}|fcgi://localhost/" + SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix index a0214a75d93e8..966ee3104cc85 100644 --- a/nixos/modules/services/web-apps/nextcloud.nix +++ b/nixos/modules/services/web-apps/nextcloud.nix @@ -4,6 +4,7 @@ with lib; let cfg = config.services.nextcloud; + fpm = config.services.phpfpm.pools.nextcloud; phpPackage = pkgs.php73; phpPackages = pkgs.php73Packages; @@ -418,7 +419,6 @@ in { in { phpOptions = phpOptionsExtensions; phpPackage = phpPackage; - listen = "/run/phpfpm/nextcloud"; extraConfig = '' listen.owner = nginx listen.group = nginx @@ -489,7 +489,7 @@ in { fastcgi_param HTTPS ${if cfg.https then "on" else "off"}; fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; - fastcgi_pass unix:/run/phpfpm/nextcloud; + fastcgi_pass unix:${fpm.socket}; fastcgi_intercept_errors on; fastcgi_request_buffering off; fastcgi_read_timeout 120s; diff --git a/nixos/modules/services/web-apps/restya-board.nix b/nixos/modules/services/web-apps/restya-board.nix index b200a89260ac9..8d7938b596521 100644 --- a/nixos/modules/services/web-apps/restya-board.nix +++ b/nixos/modules/services/web-apps/restya-board.nix @@ -9,11 +9,11 @@ with lib; let cfg = config.services.restya-board; + fpm = config.services.phpfpm.pools.${poolName}; runDir = "/run/restya-board"; poolName = "restya-board"; - phpfpmSocketName = "/run/phpfpm/${poolName}.sock"; in @@ -180,7 +180,6 @@ in services.phpfpm.pools = { "${poolName}" = { - listen = phpfpmSocketName; phpOptions = '' date.timezone = "CET" @@ -241,7 +240,7 @@ in tryFiles = "$uri =404"; extraConfig = '' include ${pkgs.nginx}/conf/fastcgi_params; - fastcgi_pass unix:${phpfpmSocketName}; + fastcgi_pass unix:${fpm.socket}; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "upload_max_filesize=9G \n post_max_size=9G \n max_execution_time=200 \n max_input_time=200 \n memory_limit=256M"; diff --git a/nixos/modules/services/web-apps/selfoss.nix b/nixos/modules/services/web-apps/selfoss.nix index 348febe661b22..5b1fec4c3fce6 100644 --- a/nixos/modules/services/web-apps/selfoss.nix +++ b/nixos/modules/services/web-apps/selfoss.nix @@ -4,7 +4,6 @@ let cfg = config.services.selfoss; poolName = "selfoss_pool"; - phpfpmSocketName = "/run/phpfpm/${poolName}.sock"; dataDir = "/var/lib/selfoss"; @@ -118,7 +117,6 @@ in services.phpfpm.pools = mkIf (cfg.pool == "${poolName}") { "${poolName}" = { - listen = phpfpmSocketName; extraConfig = '' listen.owner = nginx listen.group = nginx diff --git a/nixos/modules/services/web-apps/tt-rss.nix b/nixos/modules/services/web-apps/tt-rss.nix index 1bd9de93735d3..4f1cd384a40de 100644 --- a/nixos/modules/services/web-apps/tt-rss.nix +++ b/nixos/modules/services/web-apps/tt-rss.nix @@ -521,7 +521,6 @@ let services.phpfpm.pools = mkIf (cfg.pool == "${poolName}") { "${poolName}" = { - listen = "/var/run/phpfpm/${poolName}.sock"; extraConfig = '' listen.owner = nginx listen.group = nginx @@ -552,7 +551,7 @@ let locations."~ \.php$" = { extraConfig = '' fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass unix:${config.services.phpfpm.pools.${cfg.pool}.listen}; + fastcgi_pass unix:${config.services.phpfpm.pools.${cfg.pool}.socket}; fastcgi_index index.php; ''; }; diff --git a/nixos/modules/services/web-servers/phpfpm/default.nix b/nixos/modules/services/web-servers/phpfpm/default.nix index a96ac052d005f..75913640d72ee 100644 --- a/nixos/modules/services/web-servers/phpfpm/default.nix +++ b/nixos/modules/services/web-servers/phpfpm/default.nix @@ -14,7 +14,7 @@ let ${cfg.extraConfig} [${pool}] - listen = ${poolOpts.listen} + listen = ${poolOpts.socket} ${poolOpts.extraConfig} ''; @@ -29,11 +29,24 @@ let cat $phpPackage/etc/php.ini $nixDefaultsPath $phpOptionsPath > $out ''; - poolOpts = { lib, ... }: + poolOpts = { lib, name, ... }: + let + poolOpts = cfg.pools."${name}"; + in { options = { + socket = mkOption { + type = types.str; + readOnly = true; + description = '' + Path to the unix socket file on which to accept FastCGI requests. + This option is read-only and managed by NixOS. + ''; + }; + listen = mkOption { type = types.str; + default = ""; example = "/path/to/unix/socket"; description = '' The address on which to accept FastCGI requests. @@ -77,6 +90,10 @@ let ''; }; }; + + config = { + socket = if poolOpts.listen == "" then "${stateDir}/${name}.sock" else poolOpts.listen; + }; }; in { @@ -121,7 +138,6 @@ in { example = literalExample '' { mypool = { - listen = "/path/to/unix/socket"; phpPackage = pkgs.php; extraConfig = ''' user = nobody @@ -144,6 +160,12 @@ in { config = mkIf (cfg.pools != {}) { + warnings = + mapAttrsToList (pool: poolOpts: '' + Using config.services.phpfpm.pools.${pool}.listen is deprecated and will become unsupported. Please reference the read-only option config.services.phpfpm.pools.${pool}.socket to access the path of your socket. + '') (filterAttrs (pool: poolOpts: poolOpts.listen != "") cfg.pools) + ; + systemd.slices.phpfpm = { description = "PHP FastCGI Process manager pools slice"; }; -- cgit 1.4.1