Phpfpm

From NixOS Wiki
Revision as of 14:01, 28 February 2018 by imported>Makefu

php-fpm is a fastcgi interface for php.

Configuration for nginx

This configuration will set up phpfpm for serving php files from /var/www/example.com. put into your configuration.nix

{
  services.phpfpm.poolConfigs."example.com" = ''
        listen = /var/run/example.com-phpfpm.sock
        user = nginx
        group = nginx
        pm = dynamic
        pm.max_children = 32
        pm.max_requests = 500
        pm.start_servers = 2
        pm.min_spare_servers = 2
        pm.max_spare_servers = 5
        listen.owner = nginx
        listen.group = nginx
        php_admin_value[error_log] = 'stderr'
        php_admin_flag[log_errors] = on
        env[PATH] = ${lib.makeBinPath [ pkgs.php ]}
        catch_workers_output = yes
  '';
  services.nginx = {
    enable = true;
    virtualHosts."example.com".locations."/" = {
      root = "/var/www/example.com";
      extraConfig = ''
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         fastcgi_pass unix:/var/run/example.com-phpfpm.sock;
         include ${pkgs.nginx}/conf/fastcgi_params;
         include ${pkgs.nginx}/conf/fastcgi.conf;
       '';
     };
   };
 };
}

PHP Extensions

To use certain PHP extensions you will need to configure them in the php.ini-configuration of phpfpm:

{
  services.phpfpm.phpOptions = ''
    extension=${pkgs.phpPackages.redis}/lib/php/extensions/redis.so
    extension=${pkgs.phpPackages.apcu}/lib/php/extensions/apcu.so
  '';
}