219 lines
6.3 KiB
Ruby
219 lines
6.3 KiB
Ruby
#
|
|
# Cookbook Name:: apache2
|
|
# Recipe:: default
|
|
#
|
|
# Copyright 2008-2009, Opscode, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
package "apache2" do
|
|
package_name node['apache']['package']
|
|
action :install
|
|
end
|
|
|
|
service "apache2" do
|
|
case node['platform']
|
|
when "redhat","centos","scientific","fedora","suse","amazon"
|
|
service_name "httpd"
|
|
# If restarted/reloaded too quickly httpd has a habit of failing.
|
|
# This may happen with multiple recipes notifying apache to restart - like
|
|
# during the initial bootstrap.
|
|
restart_command "/sbin/service httpd restart && sleep 1"
|
|
reload_command "/sbin/service httpd reload && sleep 1"
|
|
when "debian","ubuntu"
|
|
service_name "apache2"
|
|
restart_command "/usr/sbin/invoke-rc.d apache2 restart && sleep 1"
|
|
reload_command "/usr/sbin/invoke-rc.d apache2 reload && sleep 1"
|
|
when "arch"
|
|
service_name "httpd"
|
|
when "freebsd"
|
|
service_name "apache22"
|
|
end
|
|
supports value_for_platform(
|
|
"debian" => { "4.0" => [ :restart, :reload ], "default" => [ :restart, :reload, :status ] },
|
|
"ubuntu" => { "default" => [ :restart, :reload, :status ] },
|
|
"redhat" => { "default" => [ :restart, :reload, :status ] },
|
|
"centos" => { "default" => [ :restart, :reload, :status ] },
|
|
"scientific" => { "default" => [ :restart, :reload, :status ] },
|
|
"fedora" => { "default" => [ :restart, :reload, :status ] },
|
|
"arch" => { "default" => [ :restart, :reload, :status ] },
|
|
"suse" => { "default" => [ :restart, :reload, :status ] },
|
|
"freebsd" => { "default" => [ :restart, :reload, :status ] },
|
|
"amazon" => { "default" => [ :restart, :reload, :status ] },
|
|
"default" => { "default" => [:restart, :reload ] }
|
|
)
|
|
action :enable
|
|
end
|
|
|
|
if platform?("redhat", "centos", "scientific", "fedora", "arch", "suse", "freebsd", "amazon")
|
|
directory node['apache']['log_dir'] do
|
|
mode 0755
|
|
action :create
|
|
end
|
|
|
|
package "perl"
|
|
|
|
cookbook_file "/usr/local/bin/apache2_module_conf_generate.pl" do
|
|
source "apache2_module_conf_generate.pl"
|
|
mode 0755
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
end
|
|
|
|
%w{sites-available sites-enabled mods-available mods-enabled}.each do |dir|
|
|
directory "#{node['apache']['dir']}/#{dir}" do
|
|
mode 0755
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
action :create
|
|
end
|
|
end
|
|
|
|
execute "generate-module-list" do
|
|
command "/usr/local/bin/apache2_module_conf_generate.pl #{node['apache']['lib_dir']} #{node['apache']['dir']}/mods-available"
|
|
action :run
|
|
end
|
|
|
|
%w{a2ensite a2dissite a2enmod a2dismod}.each do |modscript|
|
|
template "/usr/sbin/#{modscript}" do
|
|
source "#{modscript}.erb"
|
|
mode 0755
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
end
|
|
end
|
|
|
|
# installed by default on centos/rhel, remove in favour of mods-enabled
|
|
%w{ proxy_ajp auth_pam authz_ldap webalizer ssl welcome }.each do |f|
|
|
file "#{node['apache']['dir']}/conf.d/#{f}.conf" do
|
|
action :delete
|
|
backup false
|
|
end
|
|
end
|
|
|
|
# installed by default on centos/rhel, remove in favour of mods-enabled
|
|
file "#{node['apache']['dir']}/conf.d/README" do
|
|
action :delete
|
|
backup false
|
|
end
|
|
end
|
|
|
|
if platform?("freebsd")
|
|
file "#{node['apache']['dir']}/Includes/no-accf.conf" do
|
|
action :delete
|
|
backup false
|
|
end
|
|
directory "#{node['apache']['dir']}/Includes" do
|
|
action :delete
|
|
end
|
|
|
|
%w{httpd-autoindex.conf httpd-dav.conf httpd-default.conf httpd-info.conf
|
|
httpd-languages.conf httpd-manual.conf httpd-mpm.conf
|
|
httpd-multilang-errordoc.conf httpd-ssl.conf httpd-userdir.conf
|
|
httpd-vhosts.conf}.each do |f|
|
|
file "#{node['apache']['dir']}/extra/#{f}" do
|
|
action :delete
|
|
backup false
|
|
end
|
|
end
|
|
directory "#{node['apache']['dir']}/extra" do
|
|
action :delete
|
|
end
|
|
end
|
|
|
|
directory "#{node['apache']['dir']}/ssl" do
|
|
action :create
|
|
mode 0755
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
end
|
|
|
|
directory "#{node['apache']['dir']}/conf.d" do
|
|
action :create
|
|
mode 0755
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
end
|
|
|
|
directory node['apache']['cache_dir'] do
|
|
action :create
|
|
mode 0755
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
end
|
|
|
|
template "apache2.conf" do
|
|
case node['platform']
|
|
when "redhat", "centos", "scientific", "fedora", "arch", "amazon"
|
|
path "#{node['apache']['dir']}/conf/httpd.conf"
|
|
when "debian","ubuntu"
|
|
path "#{node['apache']['dir']}/apache2.conf"
|
|
when "freebsd"
|
|
path "#{node['apache']['dir']}/httpd.conf"
|
|
end
|
|
source "apache2.conf.erb"
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
mode 0644
|
|
notifies :restart, resources(:service => "apache2")
|
|
end
|
|
|
|
template "security" do
|
|
path "#{node['apache']['dir']}/conf.d/security"
|
|
source "security.erb"
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
mode 0644
|
|
backup false
|
|
notifies :restart, resources(:service => "apache2")
|
|
end
|
|
|
|
template "charset" do
|
|
path "#{node['apache']['dir']}/conf.d/charset"
|
|
source "charset.erb"
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
mode 0644
|
|
backup false
|
|
notifies :restart, resources(:service => "apache2")
|
|
end
|
|
|
|
template "#{node['apache']['dir']}/ports.conf" do
|
|
source "ports.conf.erb"
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
variables :apache_listen_ports => node['apache']['listen_ports'].map{|p| p.to_i}.uniq
|
|
mode 0644
|
|
notifies :restart, resources(:service => "apache2")
|
|
end
|
|
|
|
template "#{node['apache']['dir']}/sites-available/default" do
|
|
source "default-site.erb"
|
|
owner "root"
|
|
group node['apache']['root_group']
|
|
mode 0644
|
|
notifies :restart, resources(:service => "apache2")
|
|
end
|
|
|
|
node['apache']['default_modules'].each do |mod|
|
|
recipe_name = mod =~ /^mod_/ ? mod : "mod_#{mod}"
|
|
include_recipe "apache2::#{recipe_name}"
|
|
end
|
|
|
|
apache_site "default" if platform?("redhat", "centos", "scientific", "fedora", "amazon")
|
|
|
|
service "apache2" do
|
|
action :start
|
|
end
|