Puppet Class: php::fpm

Defined in:
manifests/fpm.pp

Overview

Install and configure mod_php for fpm

=== Parameters

[user] The user that php-fpm should run as

[group] The group that php-fpm should run as

[service_enable] Enable/disable FPM service

[service_ensure] Ensure FPM service is either 'running' or 'stopped'

[service_name] This is the name of the php-fpm service. It defaults to reasonable OS defaults but can be different in case of using php7.0/other OS/custom fpm service

[service_provider] This is the name of the service provider, in case there is a non OS default service provider used to start FPM. Defaults to 'undef', pick system defaults.

[pools] Hash of php::fpm::pool resources that will be created. Defaults to a single php::fpm::pool named www with default parameters.

[log_owner] The php-fpm log owner

[log_group] The group owning php-fpm logs

[package] Specify which package to install

[ensure] Specify which version of the package to install

[inifile] Path to php.ini for fpm

[settings] fpm settings hash

[global_pool_settings] Hash of defaults params php::fpm::pool resources that will be created. Defaults is empty hash.

Parameters:

  • ensure (String) (defaults to: $::php::ensure)
  • user (Any) (defaults to: $::php::fpm_user)
  • group (Any) (defaults to: $::php::fpm_group)
  • service_ensure (Any) (defaults to: $::php::fpm_service_ensure)
  • service_enable (Any) (defaults to: $::php::fpm_service_enable)
  • service_name (Any) (defaults to: $::php::fpm_service_name)
  • service_provider (Any) (defaults to: $::php::fpm_service_provider)
  • package (String) (defaults to: $::php::real_fpm_package)
  • inifile (Stdlib::Absolutepath) (defaults to: $::php::fpm_inifile)
  • settings (Hash) (defaults to: $::php::real_settings)
  • global_pool_settings (Any) (defaults to: $::php::real_fpm_global_pool_settings)
  • pools (Hash) (defaults to: $::php::real_fpm_pools)
  • log_owner (Any) (defaults to: $::php::log_owner)
  • log_group (Any) (defaults to: $::php::log_group)


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'manifests/fpm.pp', line 52

class php::fpm (
  String $ensure                = $::php::ensure,
  $user                         = $::php::fpm_user,
  $group                        = $::php::fpm_group,
  $service_ensure               = $::php::fpm_service_ensure,
  $service_enable               = $::php::fpm_service_enable,
  $service_name                 = $::php::fpm_service_name,
  $service_provider             = $::php::fpm_service_provider,
  String $package               = $::php::real_fpm_package,
  Stdlib::Absolutepath $inifile = $::php::fpm_inifile,
  Hash $settings                = $::php::real_settings,
  $global_pool_settings         = $::php::real_fpm_global_pool_settings,
  Hash $pools                   = $::php::real_fpm_pools,
  $log_owner                    = $::php::log_owner,
  $log_group                    = $::php::log_group,
) {

  if ! defined(Class['php']) {
    warning('php::fpm is private')
  }

  $real_settings = deep_merge($settings, hiera_hash('php::fpm::settings', {}))

  # On FreeBSD fpm is not a separate package, but included in the 'php' package.
  # Implies that the option SET+=FPM was set when building the port.
  $real_package = $facts['os']['family'] ? {
    'FreeBSD' => [],
    default   => $package,
  }

  package { $real_package:
    ensure  => $ensure,
    require => Class['::php::packages'],
  }

  class { '::php::fpm::config':
    user      => $user,
    group     => $group,
    inifile   => $inifile,
    settings  => $real_settings,
    log_owner => $log_owner,
    log_group => $log_group,
    require   => Package[$real_package],
  }
  contain '::php::fpm::config'
  contain '::php::fpm::service'

  Class['php::fpm::config'] ~> Class['php::fpm::service']

  $real_global_pool_settings = hiera_hash('php::fpm::global_pool_settings', $global_pool_settings)
  $real_pools = hiera_hash('php::fpm::pools', $pools)
  create_resources(::php::fpm::pool, $real_pools, $real_global_pool_settings)

  # Create an override to use a reload signal as trusty and utopic's
  # upstart version supports this
  if ($facts['os']['name'] == 'Ubuntu'
      and versioncmp($facts['os']['release']['full'], '14') >= 0
      and versioncmp($facts['os']['release']['full'], '16') < 0) {
    if ($service_enable) {
      $fpm_override = 'reload signal USR2'
    }
    else {
      $fpm_override = "reload signal USR2\nmanual"
    }
    file { "/etc/init/${::php::fpm::service::service_name}.override":
      content => $fpm_override,
      before  => Package[$real_package],
    }
  }
}