diff --git a/README.markdown b/README.markdown index c6bbe6b..b4de12a 100644 --- a/README.markdown +++ b/README.markdown @@ -11,7 +11,7 @@ This module manages NGINX configuration. ### Requirements * Puppet-2.7.0 or later -* Ruby-1.9.3 or later (Support for Ruby-1.8.7 is not guaranteed. YMMV). +* Ruby-1.9.3 or later (Support for Ruby-1.8.7 is not guaranteed. YMMV). ### Install and bootstrap an NGINX instance @@ -74,7 +74,7 @@ To create only a HTTPS vhost, set `ssl => true` and also set `listen_port` to th Locations require specific settings depending on whether they should be included in the HTTP, HTTPS or both vhosts. #### HTTP only vhost (default) -If you only have a HTTP vhost (i.e. `ssl => false` on the vhost) maks sure you don't set `ssl => true` on any location you associate with the vhost. +If you only have a HTTP vhost (i.e. `ssl => false` on the vhost) make sure you don't set `ssl => true` on any location you associate with the vhost. #### HTTP and HTTPS vhost If you set `ssl => true` and also set `listen_port` and `ssl_port` to different values on the vhost you will need to be specific with the location settings since you will have a HTTP vhost listening on `listen_port` and a HTTPS vhost listening on `ssl_port`: @@ -202,7 +202,7 @@ define web::nginx_ssl_with_redirect ( } else { $tmp_www_root = $www_root } - + nginx::resource::vhost { "${name}.${::domain} ${name}": ensure => present, listen_port => 443, @@ -211,32 +211,32 @@ define web::nginx_ssl_with_redirect ( location_cfg_append => $location_cfg_append, index_files => [ 'index.php' ], ssl => true, - ssl_cert => 'puppet:///modules/sslkey/whildcard_mydomain.crt', - ssl_key => 'puppet:///modules/sslkey/whildcard_mydomain.key', + ssl_cert => 'puppet:///modules/sslkey/wildcard_mydomain.crt', + ssl_key => 'puppet:///modules/sslkey/wildcard_mydomain.key', } - - + + if $php { nginx::resource::location { "${name}_root": ensure => present, - ssl => true, - ssl_only => true, + ssl => true, + ssl_only => true, vhost => "${name}.${::domain} ${name}", - www_root => "${full_web_path}/${name}/", + www_root => "${full_web_path}/${name}/", location => '~ \.php$', index_files => ['index.php', 'index.html', 'index.htm'], proxy => undef, fastcgi => "127.0.0.1:${backend_port}", fastcgi_script => undef, - location_cfg_append => { + location_cfg_append => { fastcgi_connect_timeout => '3m', fastcgi_read_timeout => '3m', - fastcgi_send_timeout => '3m' + fastcgi_send_timeout => '3m' } - } - } -} -``` + } + } +} +``` # Call class web::nginx_ssl_with_redirect diff --git a/manifests/init.pp b/manifests/init.pp index 8c18db3..4e5735e 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -102,8 +102,8 @@ class nginx ( validate_string($proxy_cache_keys_zone) validate_string($proxy_cache_max_size) validate_string($proxy_cache_inactive) - - if ($fastcgi_cache_path != false) { + + if ($fastcgi_cache_path != false) { validate_string($fastcgi_cache_path) } if (!is_integer($fastcgi_cache_levels)) { diff --git a/manifests/package.pp b/manifests/package.pp index 74885b2..12728f8 100644 --- a/manifests/package.pp +++ b/manifests/package.pp @@ -49,6 +49,12 @@ class nginx::package( before => Anchor['nginx::package::end'], } } + 'archlinux': { + class { 'nginx::package::archlinux': + require => Anchor['nginx::package::begin'], + before => Anchor['nginx::package::end'], + } + } 'Solaris': { class { 'nginx::package::solaris': package_name => $package_name, diff --git a/manifests/package/archlinux.pp b/manifests/package/archlinux.pp new file mode 100644 index 0000000..5206cd6 --- /dev/null +++ b/manifests/package/archlinux.pp @@ -0,0 +1,25 @@ +# Class: nginx::package::archlinux +# +# This module manages NGINX package installation on Archlinux based systems +# +# Parameters: +# +# There are no default parameters for this class. +# +# Actions: +# +# Requires: +# +# Sample Usage: +# +# This class file is not called directly +class nginx::package::archlinux( + $package_name = 'nginx', + $package_ensure = 'present' + ) { + + package { $package_name: + ensure => $package_ensure, + } + +} diff --git a/manifests/params.pp b/manifests/params.pp index 94dd193..2e70b48 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -78,7 +78,12 @@ class nginx::params { } $nx_pid = $::kernel ? { - /(?i-mx:linux)/ => '/var/run/nginx.pid', + /(?i-mx:linux)/ => $::osfamily ? { + # archlinux has hardcoded pid in service file to /run/nginx.pid, setting + # it will prevent nginx from starting + /(?i-mx:archlinux)/ => false, + default => '/var/run/nginx.pid', + }, /(?i-mx:sunos)/ => '/var/run/nginx.pid', } @@ -93,14 +98,16 @@ class nginx::params { default => 'webservd', } $nx_daemon_user = $::osfamily ? { + /(?i-mx:archlinux)/ => 'http', /(?i-mx:redhat|suse|gentoo|linux)/ => 'nginx', /(?i-mx:debian)/ => 'www-data', /(?i-mx:solaris)/ => $solaris_nx_daemon_user, } } else { warning('$::osfamily not defined. Support for $::operatingsystem is deprecated') - warning("Please upgrade from factor ${::facterversion} to >= 1.7.2") + warning("Please upgrade from facter ${::facterversion} to >= 1.7.2") $nx_daemon_user = $::operatingsystem ? { + /(?i-mx:archlinux)/ => 'http', /(?i-mx:debian|ubuntu)/ => 'www-data', /(?i-mx:fedora|rhel|redhat|centos|scientific|suse|opensuse|amazon|gentoo|oraclelinux)/ => 'nginx', /(?i-mx:solaris)/ => 'webservd', diff --git a/templates/conf.d/nginx.conf.erb b/templates/conf.d/nginx.conf.erb index f9de200..a3d4206 100644 --- a/templates/conf.d/nginx.conf.erb +++ b/templates/conf.d/nginx.conf.erb @@ -3,7 +3,7 @@ worker_processes <%= @worker_processes %>; worker_rlimit_nofile <%= @worker_rlimit_nofile %>; error_log <%= @nginx_error_log %>; -pid <%= scope.lookupvar('nginx::params::nx_pid')%>; +<% if scope.lookupvar('nginx::params::nx_pid') != false %>pid <%= scope.lookupvar('nginx::params::nx_pid')%>;<% end -%> events { worker_connections <%= @worker_connections -%>; diff --git a/templates/conf.d/proxy.conf.erb b/templates/conf.d/proxy.conf.erb index 7ed19d5..feb9c5e 100644 --- a/templates/conf.d/proxy.conf.erb +++ b/templates/conf.d/proxy.conf.erb @@ -1,5 +1,5 @@ proxy_redirect <%= @proxy_redirect %>; -client_max_body_size <%= @client_max_body_size %>; +client_max_body_size <%= @client_max_body_size %>; client_body_buffer_size <%= scope.lookupvar('nginx::params::nx_client_body_buffer_size') %>; proxy_connect_timeout <%= scope.lookupvar('nginx::params::nx_proxy_connect_timeout') %>; proxy_send_timeout <%= scope.lookupvar('nginx::params::nx_proxy_send_timeout') %>;