server_maint 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.gitmodules +6 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/lib/cookbooks/nginx/.gitignore +4 -0
- data/lib/cookbooks/nginx/CHANGELOG.md +63 -0
- data/lib/cookbooks/nginx/CONTRIBUTING +29 -0
- data/lib/cookbooks/nginx/Gemfile +3 -0
- data/lib/cookbooks/nginx/LICENSE +201 -0
- data/lib/cookbooks/nginx/README.md +211 -0
- data/lib/cookbooks/nginx/attributes/default.rb +70 -0
- data/lib/cookbooks/nginx/attributes/echo.rb +3 -0
- data/lib/cookbooks/nginx/attributes/geoip.rb +30 -0
- data/lib/cookbooks/nginx/attributes/naxsi.rb +24 -0
- data/lib/cookbooks/nginx/attributes/passenger.rb +7 -0
- data/lib/cookbooks/nginx/attributes/source.rb +37 -0
- data/lib/cookbooks/nginx/attributes/upload_progress.rb +23 -0
- data/lib/cookbooks/nginx/definitions/nginx_site.rb +35 -0
- data/lib/cookbooks/nginx/files/default/mime.types +73 -0
- data/lib/cookbooks/nginx/files/default/naxsi_core.rules +70 -0
- data/lib/cookbooks/nginx/files/default/tests/minitest/default_test.rb +12 -0
- data/lib/cookbooks/nginx/files/default/tests/minitest/helpers.rb +7 -0
- data/lib/cookbooks/nginx/files/default/tests/minitest/source_test.rb +9 -0
- data/lib/cookbooks/nginx/metadata.rb +95 -0
- data/lib/cookbooks/nginx/recipes/authorized_ips.rb +41 -0
- data/lib/cookbooks/nginx/recipes/commons.rb +23 -0
- data/lib/cookbooks/nginx/recipes/commons_conf.rb +39 -0
- data/lib/cookbooks/nginx/recipes/commons_dir.rb +39 -0
- data/lib/cookbooks/nginx/recipes/commons_script.rb +28 -0
- data/lib/cookbooks/nginx/recipes/default.rb +42 -0
- data/lib/cookbooks/nginx/recipes/http_echo_module.rb +46 -0
- data/lib/cookbooks/nginx/recipes/http_geoip_module.rb +117 -0
- data/lib/cookbooks/nginx/recipes/http_gzip_static_module.rb +23 -0
- data/lib/cookbooks/nginx/recipes/http_realip_module.rb +46 -0
- data/lib/cookbooks/nginx/recipes/http_ssl_module.rb +23 -0
- data/lib/cookbooks/nginx/recipes/http_stub_status_module.rb +36 -0
- data/lib/cookbooks/nginx/recipes/naxsi_module.rb +53 -0
- data/lib/cookbooks/nginx/recipes/ohai_plugin.rb +32 -0
- data/lib/cookbooks/nginx/recipes/passenger.rb +51 -0
- data/lib/cookbooks/nginx/recipes/source.rb +182 -0
- data/lib/cookbooks/nginx/recipes/upload_progress_module.rb +47 -0
- data/lib/cookbooks/nginx/templates/debian/nginx.init.erb +97 -0
- data/lib/cookbooks/nginx/templates/default/default-site.erb +11 -0
- data/lib/cookbooks/nginx/templates/default/modules/authorized_ip.erb +6 -0
- data/lib/cookbooks/nginx/templates/default/modules/http_geoip.conf.erb +4 -0
- data/lib/cookbooks/nginx/templates/default/modules/http_realip.conf.erb +4 -0
- data/lib/cookbooks/nginx/templates/default/modules/nginx_status.erb +14 -0
- data/lib/cookbooks/nginx/templates/default/modules/passenger.conf.erb +3 -0
- data/lib/cookbooks/nginx/templates/default/nginx.conf.erb +48 -0
- data/lib/cookbooks/nginx/templates/default/nginx.init.erb +92 -0
- data/lib/cookbooks/nginx/templates/default/nginx.pill.erb +15 -0
- data/lib/cookbooks/nginx/templates/default/nginx.sysconfig.erb +1 -0
- data/lib/cookbooks/nginx/templates/default/nxdissite.erb +29 -0
- data/lib/cookbooks/nginx/templates/default/nxensite.erb +38 -0
- data/lib/cookbooks/nginx/templates/default/plugins/nginx.rb.erb +66 -0
- data/lib/cookbooks/nginx/templates/default/sv-nginx-log-run.erb +2 -0
- data/lib/cookbooks/nginx/templates/default/sv-nginx-run.erb +3 -0
- data/lib/cookbooks/nginx/templates/ubuntu/nginx.init.erb +97 -0
- data/lib/cookbooks/nginx/test/kitchen/Kitchenfile +5 -0
- data/lib/cookbooks/sanitize/.gitignore +1 -0
- data/lib/cookbooks/sanitize/CHANGELOG.md +10 -0
- data/lib/cookbooks/sanitize/README.md +65 -0
- data/lib/cookbooks/sanitize/attributes/default.rb +1 -0
- data/lib/cookbooks/sanitize/libraries/default.rb +8 -0
- data/lib/cookbooks/sanitize/metadata.rb +12 -0
- data/lib/cookbooks/sanitize/recipes/default.rb +113 -0
- data/lib/cookbooks/sanitize/templates/default/port_ssh.erb +2 -0
- data/lib/server_maint/version.rb +3 -0
- data/lib/server_maint.rb +7 -0
- data/server_maint.gemspec +33 -0
- metadata +155 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: common/script
|
4
|
+
# Author:: AJ Christensen <aj@junglist.gen.nz>
|
5
|
+
#
|
6
|
+
# Copyright 2008-2012, Opscode, Inc.
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
%w(nxensite nxdissite).each do |nxscript|
|
22
|
+
template "/usr/sbin/#{nxscript}" do
|
23
|
+
source "#{nxscript}.erb"
|
24
|
+
mode "0755"
|
25
|
+
owner "root"
|
26
|
+
group "root"
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: default
|
4
|
+
# Author:: AJ Christensen <aj@junglist.gen.nz>
|
5
|
+
#
|
6
|
+
# Copyright 2008-2012, Opscode, Inc.
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
include_recipe 'nginx::ohai_plugin'
|
22
|
+
|
23
|
+
case node['nginx']['install_method']
|
24
|
+
when 'source'
|
25
|
+
include_recipe 'nginx::source'
|
26
|
+
when 'package'
|
27
|
+
case node['platform']
|
28
|
+
when 'redhat','centos','scientific','amazon','oracle'
|
29
|
+
include_recipe 'yum::epel'
|
30
|
+
end
|
31
|
+
package 'nginx'
|
32
|
+
service 'nginx' do
|
33
|
+
supports :status => true, :restart => true, :reload => true
|
34
|
+
action :enable
|
35
|
+
end
|
36
|
+
include_recipe 'nginx::commons'
|
37
|
+
end
|
38
|
+
|
39
|
+
service 'nginx' do
|
40
|
+
supports :status => true, :restart => true, :reload => true
|
41
|
+
action :start
|
42
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: http_echo_module
|
4
|
+
#
|
5
|
+
# Author:: Danial Pearce (<danial@cushycms.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, CushyCMS
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
echo_src_filename = "echo-nginx-module-v#{node['nginx']['echo']['version']}.tar.gz"
|
23
|
+
echo_src_filepath = "#{Chef::Config['file_cache_path']}/#{echo_src_filename}"
|
24
|
+
echo_extract_path = "#{Chef::Config['file_cache_path']}/nginx_echo_module/#{node['nginx']['echo']['checksum']}"
|
25
|
+
|
26
|
+
remote_file echo_src_filepath do
|
27
|
+
source node['nginx']['echo']['url']
|
28
|
+
checksum node['nginx']['echo']['checksum']
|
29
|
+
owner 'root'
|
30
|
+
group 'root'
|
31
|
+
mode 0644
|
32
|
+
end
|
33
|
+
|
34
|
+
bash 'extract_http_echo_module' do
|
35
|
+
cwd ::File.dirname(echo_src_filepath)
|
36
|
+
code <<-EOH
|
37
|
+
mkdir -p #{echo_extract_path}
|
38
|
+
tar xzf #{echo_src_filename} -C #{echo_extract_path}
|
39
|
+
mv #{echo_extract_path}/*/* #{echo_extract_path}/
|
40
|
+
EOH
|
41
|
+
|
42
|
+
not_if { ::File.exists?(echo_extract_path) }
|
43
|
+
end
|
44
|
+
|
45
|
+
node.run_state['nginx_configure_flags'] =
|
46
|
+
node.run_state['nginx_configure_flags'] | ["--add-module=#{echo_extract_path}"]
|
@@ -0,0 +1,117 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: http_geoip_module
|
4
|
+
#
|
5
|
+
# Author:: Jamie Winsor (<jamie@vialstudios.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, Riot Games
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
if node['platform'] == 'ubuntu'
|
23
|
+
package 'libtool'
|
24
|
+
end
|
25
|
+
|
26
|
+
country_dat = "#{node['nginx']['geoip']['path']}/GeoIP.dat"
|
27
|
+
country_src_filename = ::File.basename(node['nginx']['geoip']['country_dat_url'])
|
28
|
+
country_src_filepath = "#{Chef::Config['file_cache_path']}/#{country_src_filename}"
|
29
|
+
city_dat = nil
|
30
|
+
city_src_filename = ::File.basename(node['nginx']['geoip']['city_dat_url'])
|
31
|
+
city_src_filepath = "#{Chef::Config['file_cache_path']}/#{city_src_filename}"
|
32
|
+
geolib_filename = ::File.basename(node['nginx']['geoip']['lib_url'])
|
33
|
+
geolib_filepath = "#{Chef::Config['file_cache_path']}/#{geolib_filename}"
|
34
|
+
|
35
|
+
remote_file geolib_filepath do
|
36
|
+
source node['nginx']['geoip']['lib_url']
|
37
|
+
checksum node['nginx']['geoip']['lib_checksum']
|
38
|
+
owner "root"
|
39
|
+
group "root"
|
40
|
+
mode 0644
|
41
|
+
end
|
42
|
+
|
43
|
+
bash "extract_geolib" do
|
44
|
+
cwd ::File.dirname(geolib_filepath)
|
45
|
+
code <<-EOH
|
46
|
+
tar xzvf #{geolib_filepath} -C #{::File.dirname(geolib_filepath)}
|
47
|
+
cd GeoIP-#{node['nginx']['geoip']['lib_version']}
|
48
|
+
which libtoolize && libtoolize -f
|
49
|
+
./configure
|
50
|
+
make && make install
|
51
|
+
EOH
|
52
|
+
|
53
|
+
creates "/usr/local/lib/libGeoIP.so.#{node['nginx']['geoip']['lib_version']}"
|
54
|
+
subscribes :run, resources(:remote_file => geolib_filepath)
|
55
|
+
end
|
56
|
+
|
57
|
+
directory node['nginx']['geoip']['path'] do
|
58
|
+
owner "root"
|
59
|
+
group "root"
|
60
|
+
mode 0755
|
61
|
+
end
|
62
|
+
|
63
|
+
remote_file country_src_filepath do
|
64
|
+
not_if do
|
65
|
+
File.exists?(country_src_filepath) &&
|
66
|
+
File.mtime(country_src_filepath) > Time.now - 86400
|
67
|
+
end
|
68
|
+
source node['nginx']['geoip']['country_dat_url']
|
69
|
+
checksum node['nginx']['geoip']['country_dat_checksum']
|
70
|
+
owner "root"
|
71
|
+
group "root"
|
72
|
+
mode 0644
|
73
|
+
end
|
74
|
+
|
75
|
+
bash "gunzip_geo_lite_country_dat" do
|
76
|
+
code <<-EOH
|
77
|
+
gunzip -c #{country_src_filepath} > #{country_dat}
|
78
|
+
EOH
|
79
|
+
creates country_dat
|
80
|
+
end
|
81
|
+
|
82
|
+
if node['nginx']['geoip']['enable_city']
|
83
|
+
city_dat = "#{node['nginx']['geoip']['path']}/GeoLiteCity.dat"
|
84
|
+
|
85
|
+
remote_file city_src_filepath do
|
86
|
+
not_if do
|
87
|
+
File.exists?(city_src_filepath) &&
|
88
|
+
File.mtime(city_src_filepath) > Time.now - 86400
|
89
|
+
end
|
90
|
+
source node['nginx']['geoip']['city_dat_url']
|
91
|
+
checksum node['nginx']['geoip']['city_dat_checksum']
|
92
|
+
owner "root"
|
93
|
+
group "root"
|
94
|
+
mode 0644
|
95
|
+
end
|
96
|
+
|
97
|
+
bash "gunzip_geo_lite_city_dat" do
|
98
|
+
code <<-EOH
|
99
|
+
gunzip -c #{city_src_filepath} > #{city_dat}
|
100
|
+
EOH
|
101
|
+
creates city_dat
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
template "#{node['nginx']['dir']}/conf.d/http_geoip.conf" do
|
106
|
+
source "modules/http_geoip.conf.erb"
|
107
|
+
owner "root"
|
108
|
+
group "root"
|
109
|
+
mode "0644"
|
110
|
+
variables(
|
111
|
+
:country_dat => country_dat,
|
112
|
+
:city_dat => city_dat
|
113
|
+
)
|
114
|
+
end
|
115
|
+
|
116
|
+
node.run_state['nginx_configure_flags'] =
|
117
|
+
node.run_state['nginx_configure_flags'] | ["--with-http_geoip_module", "--with-ld-opt='-Wl,-R,/usr/local/lib -L /usr/local/lib'"]
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: http_gzip_static_module
|
4
|
+
#
|
5
|
+
# Author:: Jamie Winsor (<jamie@vialstudios.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, Riot Games
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
node.run_state['nginx_configure_flags'] =
|
23
|
+
node.run_state['nginx_configure_flags'] | ["--with-http_gzip_static_module"]
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: http_realip_module
|
4
|
+
#
|
5
|
+
# Author:: Jamie Winsor (<jamie@vialstudios.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, Riot Games
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
# Documentation: http://wiki.nginx.org/HttpRealIpModule
|
23
|
+
|
24
|
+
# Currently only accepts X-Forwarded-For or X-Real-IP
|
25
|
+
node.default['nginx']['realip']['header'] = "X-Forwarded-For"
|
26
|
+
node.default['nginx']['realip']['addresses'] = ["127.0.0.1"]
|
27
|
+
|
28
|
+
service "nginx" do
|
29
|
+
supports :status => true, :restart => true, :reload => true
|
30
|
+
end
|
31
|
+
|
32
|
+
template "#{node['nginx']['dir']}/conf.d/http_realip.conf" do
|
33
|
+
source "modules/http_realip.conf.erb"
|
34
|
+
owner "root"
|
35
|
+
group "root"
|
36
|
+
mode "0644"
|
37
|
+
variables(
|
38
|
+
:addresses => node['nginx']['realip']['addresses'],
|
39
|
+
:header => node['nginx']['realip']['header']
|
40
|
+
)
|
41
|
+
|
42
|
+
notifies :reload, resources(:service => "nginx")
|
43
|
+
end
|
44
|
+
|
45
|
+
node.run_state['nginx_configure_flags'] =
|
46
|
+
node.run_state['nginx_configure_flags'] | ["--with-http_realip_module"]
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: http_ssl_module
|
4
|
+
#
|
5
|
+
# Author:: Jamie Winsor (<jamie@vialstudios.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, Riot Games
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
node.run_state['nginx_configure_flags'] =
|
23
|
+
node.run_state['nginx_configure_flags'] | ["--with-http_ssl_module"]
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: http_stub_status_module
|
4
|
+
#
|
5
|
+
# Author:: Jamie Winsor (<jamie@vialstudios.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, Riot Games
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
include_recipe "nginx::authorized_ips"
|
23
|
+
|
24
|
+
template "nginx_status" do
|
25
|
+
path "#{node['nginx']['dir']}/sites-available/nginx_status"
|
26
|
+
source "modules/nginx_status.erb"
|
27
|
+
owner "root"
|
28
|
+
group "root"
|
29
|
+
mode "0644"
|
30
|
+
notifies :reload, resources(:service => "nginx")
|
31
|
+
end
|
32
|
+
|
33
|
+
nginx_site "nginx_status"
|
34
|
+
|
35
|
+
node.run_state['nginx_configure_flags'] =
|
36
|
+
node.run_state['nginx_configure_flags'] | ["--with-http_stub_status_module"]
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: naxsi_module
|
4
|
+
#
|
5
|
+
# Author:: Artiom Lunev (<artiom.lunev@gmail.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, Artiom Lunev
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
cookbook_file "#{node['nginx']['dir']}/naxsi_core.rules" do
|
23
|
+
source "naxsi_core.rules"
|
24
|
+
owner "root"
|
25
|
+
group "root"
|
26
|
+
mode "0644"
|
27
|
+
notifies :reload, 'service[nginx]'
|
28
|
+
end
|
29
|
+
|
30
|
+
naxsi_src_filename = ::File.basename(node['nginx']['naxsi']['url'])
|
31
|
+
naxsi_src_filepath = "#{Chef::Config['file_cache_path']}/#{naxsi_src_filename}"
|
32
|
+
naxsi_extract_path = "#{Chef::Config['file_cache_path']}/nginx-naxsi-#{node['nginx']['naxsi']['version']}"
|
33
|
+
|
34
|
+
remote_file naxsi_src_filepath do
|
35
|
+
source node['nginx']['naxsi']['url']
|
36
|
+
checksum node['nginx']['naxsi']['checksum']
|
37
|
+
owner "root"
|
38
|
+
group "root"
|
39
|
+
mode 0644
|
40
|
+
end
|
41
|
+
|
42
|
+
bash "extract_naxsi_module" do
|
43
|
+
cwd ::File.dirname(naxsi_src_filepath)
|
44
|
+
code <<-EOH
|
45
|
+
mkdir -p #{naxsi_extract_path}
|
46
|
+
tar xzf #{naxsi_src_filename} -C #{naxsi_extract_path}
|
47
|
+
EOH
|
48
|
+
|
49
|
+
not_if { ::File.exists?(naxsi_extract_path) }
|
50
|
+
end
|
51
|
+
|
52
|
+
node.run_state['nginx_configure_flags'] =
|
53
|
+
["--add-module=#{naxsi_extract_path}/naxsi-#{node['nginx']['naxsi']['version']}/naxsi_src"] | node.run_state['nginx_configure_flags']
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: ohai_plugin
|
4
|
+
#
|
5
|
+
# Author:: Jamie Winsor (<jamie@vialstudios.com>)
|
6
|
+
#
|
7
|
+
# Copyright 2012, Riot Games
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
template "#{node['ohai']['plugin_path']}/nginx.rb" do
|
23
|
+
source "plugins/nginx.rb.erb"
|
24
|
+
owner "root"
|
25
|
+
group "root"
|
26
|
+
mode 0755
|
27
|
+
variables(
|
28
|
+
:nginx_bin => node['nginx']['binary']
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
include_recipe "ohai"
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: Passenger
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
#package 'libcurl4-openssl-dev' do
|
19
|
+
package 'ruby-devel' do
|
20
|
+
action :install
|
21
|
+
end
|
22
|
+
|
23
|
+
gem_package 'passenger' do
|
24
|
+
action :install
|
25
|
+
version node["nginx"]["passenger"]["version"]
|
26
|
+
end
|
27
|
+
|
28
|
+
node.default["nginx"]["passenger"]["version"] = "3.0.12"
|
29
|
+
node.default["nginx"]["passenger"]["root"] = "/usr/lib/ruby/gems/1.8/gems/passenger-3.0.12"
|
30
|
+
node.default["nginx"]["passenger"]["ruby"] = %x{which ruby}.chomp
|
31
|
+
node.default["nginx"]["passenger"]["max_pool_size"] = 10
|
32
|
+
|
33
|
+
service "nginx" do
|
34
|
+
supports :status => true, :restart => true, :reload => true
|
35
|
+
end
|
36
|
+
|
37
|
+
template "#{node["nginx"]["dir"]}/conf.d/passenger.conf" do
|
38
|
+
source "modules/passenger.conf.erb"
|
39
|
+
owner "root"
|
40
|
+
group "root"
|
41
|
+
mode "0644"
|
42
|
+
variables(
|
43
|
+
:passenger_root => node["nginx"]["passenger"]["root"],
|
44
|
+
:passenger_ruby => node["nginx"]["passenger"]["ruby"],
|
45
|
+
:passenger_max_pool_size => node["nginx"]["passenger"]["max_pool_size"]
|
46
|
+
)
|
47
|
+
notifies :reload, resources(:service => "nginx")
|
48
|
+
end
|
49
|
+
|
50
|
+
node.run_state[:nginx_configure_flags] =
|
51
|
+
node.run_state[:nginx_configure_flags] | ["--add-module=#{node["nginx"]["passenger"]["root"]}/ext/nginx"]
|
@@ -0,0 +1,182 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: nginx
|
3
|
+
# Recipe:: source
|
4
|
+
#
|
5
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
6
|
+
# Author:: Joshua Timberman (<joshua@opscode.com>)
|
7
|
+
# Author:: Jamie Winsor (<jamie@vialstudios.com>)
|
8
|
+
#
|
9
|
+
# Copyright 2009-2012, Opscode, Inc.
|
10
|
+
#
|
11
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
12
|
+
# you may not use this file except in compliance with the License.
|
13
|
+
# You may obtain a copy of the License at
|
14
|
+
#
|
15
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
16
|
+
#
|
17
|
+
# Unless required by applicable law or agreed to in writing, software
|
18
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
19
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
20
|
+
# See the License for the specific language governing permissions and
|
21
|
+
# limitations under the License.
|
22
|
+
#
|
23
|
+
|
24
|
+
|
25
|
+
nginx_url = node['nginx']['source']['url'] ||
|
26
|
+
"http://nginx.org/download/nginx-#{node['nginx']['version']}.tar.gz"
|
27
|
+
|
28
|
+
unless(node['nginx']['source']['prefix'])
|
29
|
+
node.set['nginx']['source']['prefix'] = "/opt/nginx-#{node['nginx']['version']}"
|
30
|
+
end
|
31
|
+
unless(node['nginx']['source']['conf_path'])
|
32
|
+
node.set['nginx']['source']['conf_path'] = "#{node['nginx']['dir']}/nginx.conf"
|
33
|
+
end
|
34
|
+
unless(node['nginx']['source']['default_configure_flags'])
|
35
|
+
node.set['nginx']['source']['default_configure_flags'] = [
|
36
|
+
"--prefix=#{node['nginx']['source']['prefix']}",
|
37
|
+
"--conf-path=#{node['nginx']['dir']}/nginx.conf"
|
38
|
+
]
|
39
|
+
end
|
40
|
+
node.set['nginx']['binary'] = "#{node['nginx']['source']['prefix']}/sbin/nginx"
|
41
|
+
node.set['nginx']['daemon_disable'] = true
|
42
|
+
|
43
|
+
include_recipe "nginx::ohai_plugin"
|
44
|
+
include_recipe "nginx::commons_dir"
|
45
|
+
include_recipe "build-essential"
|
46
|
+
|
47
|
+
src_filepath = "#{Chef::Config['file_cache_path'] || '/tmp'}/nginx-#{node['nginx']['version']}.tar.gz"
|
48
|
+
packages = value_for_platform(
|
49
|
+
["centos","redhat","fedora"] => {'default' => ['pcre-devel', 'openssl-devel']},
|
50
|
+
"default" => ['libpcre3', 'libpcre3-dev', 'libssl-dev']
|
51
|
+
)
|
52
|
+
|
53
|
+
packages.each do |devpkg|
|
54
|
+
package devpkg
|
55
|
+
end
|
56
|
+
|
57
|
+
remote_file nginx_url do
|
58
|
+
source nginx_url
|
59
|
+
checksum node['nginx']['source']['checksum']
|
60
|
+
path src_filepath
|
61
|
+
backup false
|
62
|
+
end
|
63
|
+
|
64
|
+
user node['nginx']['user'] do
|
65
|
+
system true
|
66
|
+
shell "/bin/false"
|
67
|
+
home "/var/www"
|
68
|
+
end
|
69
|
+
|
70
|
+
node.run_state['nginx_force_recompile'] = false
|
71
|
+
node.run_state['nginx_configure_flags'] =
|
72
|
+
node['nginx']['source']['default_configure_flags'] | node['nginx']['configure_flags']
|
73
|
+
|
74
|
+
node['nginx']['source']['modules'].each do |ngx_module|
|
75
|
+
include_recipe "nginx::#{ngx_module}"
|
76
|
+
end
|
77
|
+
|
78
|
+
configure_flags = node.run_state['nginx_configure_flags']
|
79
|
+
nginx_force_recompile = node.run_state['nginx_force_recompile']
|
80
|
+
|
81
|
+
bash "compile_nginx_source" do
|
82
|
+
cwd ::File.dirname(src_filepath)
|
83
|
+
code <<-EOH
|
84
|
+
tar zxf #{::File.basename(src_filepath)} -C #{::File.dirname(src_filepath)}
|
85
|
+
cd nginx-#{node['nginx']['version']} && ./configure #{node.run_state['nginx_configure_flags'].join(" ")}
|
86
|
+
make && make install
|
87
|
+
rm -f #{node['nginx']['dir']}/nginx.conf
|
88
|
+
EOH
|
89
|
+
|
90
|
+
not_if do
|
91
|
+
nginx_force_recompile == false &&
|
92
|
+
node.automatic_attrs['nginx'] &&
|
93
|
+
node.automatic_attrs['nginx']['version'] == node['nginx']['version'] &&
|
94
|
+
node.automatic_attrs['nginx']['configure_arguments'].sort == configure_flags.sort
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
node.run_state.delete(:nginx_configure_flags)
|
99
|
+
node.run_state.delete(:nginx_force_recompile)
|
100
|
+
|
101
|
+
case node['nginx']['init_style']
|
102
|
+
when "runit"
|
103
|
+
node.set['nginx']['src_binary'] = node['nginx']['binary']
|
104
|
+
include_recipe "runit"
|
105
|
+
|
106
|
+
runit_service "nginx"
|
107
|
+
|
108
|
+
service "nginx" do
|
109
|
+
supports :status => true, :restart => true, :reload => true
|
110
|
+
reload_command "[[ -f #{node['nginx']['pid']} ]] && kill -HUP `cat #{node['nginx']['pid']}` || true"
|
111
|
+
end
|
112
|
+
when "bluepill"
|
113
|
+
include_recipe "bluepill"
|
114
|
+
|
115
|
+
template "#{node['bluepill']['conf_dir']}/nginx.pill" do
|
116
|
+
source "nginx.pill.erb"
|
117
|
+
mode 0644
|
118
|
+
variables(
|
119
|
+
:working_dir => node['nginx']['source']['prefix'],
|
120
|
+
:src_binary => node['nginx']['binary'],
|
121
|
+
:nginx_dir => node['nginx']['dir'],
|
122
|
+
:log_dir => node['nginx']['log_dir'],
|
123
|
+
:pid => node['nginx']['pid']
|
124
|
+
)
|
125
|
+
end
|
126
|
+
|
127
|
+
bluepill_service "nginx" do
|
128
|
+
action [ :enable, :load ]
|
129
|
+
end
|
130
|
+
|
131
|
+
service "nginx" do
|
132
|
+
supports :status => true, :restart => true, :reload => true
|
133
|
+
reload_command "[[ -f #{node['nginx']['pid']} ]] && kill -HUP `cat #{node['nginx']['pid']}` || true"
|
134
|
+
action :nothing
|
135
|
+
end
|
136
|
+
else
|
137
|
+
node.set['nginx']['daemon_disable'] = false
|
138
|
+
|
139
|
+
template "/etc/init.d/nginx" do
|
140
|
+
source "nginx.init.erb"
|
141
|
+
owner "root"
|
142
|
+
group "root"
|
143
|
+
mode "0755"
|
144
|
+
variables(
|
145
|
+
:src_binary => node['nginx']['binary'],
|
146
|
+
:pid => node['nginx']['pid']
|
147
|
+
)
|
148
|
+
end
|
149
|
+
|
150
|
+
defaults_path = case node['platform']
|
151
|
+
when 'debian', 'ubuntu'
|
152
|
+
'/etc/default/nginx'
|
153
|
+
else
|
154
|
+
'/etc/sysconfig/nginx'
|
155
|
+
end
|
156
|
+
template defaults_path do
|
157
|
+
source "nginx.sysconfig.erb"
|
158
|
+
owner "root"
|
159
|
+
group "root"
|
160
|
+
mode "0644"
|
161
|
+
end
|
162
|
+
|
163
|
+
service "nginx" do
|
164
|
+
supports :status => true, :restart => true, :reload => true
|
165
|
+
action :enable
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
include_recipe "nginx::commons_script"
|
170
|
+
include_recipe "nginx::commons_conf"
|
171
|
+
|
172
|
+
cookbook_file "#{node['nginx']['dir']}/mime.types" do
|
173
|
+
source "mime.types"
|
174
|
+
owner "root"
|
175
|
+
group "root"
|
176
|
+
mode "0644"
|
177
|
+
notifies :reload, 'service[nginx]', :immediately
|
178
|
+
end
|
179
|
+
|
180
|
+
service "nginx" do
|
181
|
+
action :start
|
182
|
+
end
|