xiaodongwang 04a642bb4e merge from dev/experimental
Change-Id: I9133bbcbad86f242f8cb232cf03f8f54be5b1b24
2014-10-20 14:21:04 -07:00

213 lines
5.7 KiB
Ruby

#
# Cookbook Name:: apache2
# Recipe:: default
#
# Copyright 2008-2013, 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']
end
service 'apache2' do
case node['platform_family']
when 'rhel', 'fedora', 'suse'
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'
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 [:restart, :reload, :status]
action :enable
end
if platform_family?('rhel', 'fedora', 'arch', 'suse', 'freebsd')
directory node['apache']['log_dir'] do
mode '0755'
end
package node['apache']['perl_pkg']
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']
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 :nothing
end
%w[a2ensite a2dissite a2enmod a2dismod].each do |modscript|
template "/usr/sbin/#{modscript}" do
source "#{modscript}.erb"
mode '0700'
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
# enable mod_deflate for consistency across distributions
include_recipe 'apache2::mod_deflate'
end
if platform_family?('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
%W[
#{node['apache']['dir']}/ssl
#{node['apache']['dir']}/conf.d
#{node['apache']['cache_dir']}
].each do |path|
directory path do
mode '0755'
owner 'root'
group node['apache']['root_group']
end
end
# Set the preferred execution binary - prefork or worker
template '/etc/sysconfig/httpd' do
source 'etc-sysconfig-httpd.erb'
owner 'root'
group node['apache']['root_group']
mode '0644'
notifies :restart, 'service[apache2]'
only_if { platform_family?('rhel', 'fedora') }
end
template 'apache2.conf' do
case node['platform_family']
when 'rhel', 'fedora', 'arch'
path "#{node['apache']['dir']}/conf/httpd.conf"
when 'debian'
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, 'service[apache2]'
end
template 'apache2-conf-security' do
path "#{node['apache']['dir']}/conf.d/security.conf"
source 'security.erb'
owner 'root'
group node['apache']['root_group']
mode '0644'
backup false
notifies :restart, 'service[apache2]'
end
template 'apache2-conf-charset' do
path "#{node['apache']['dir']}/conf.d/charset.conf"
source 'charset.erb'
owner 'root'
group node['apache']['root_group']
mode '0644'
backup false
notifies :restart, 'service[apache2]'
end
template "#{node['apache']['dir']}/ports.conf" do
source 'ports.conf.erb'
owner 'root'
group node['apache']['root_group']
mode '0644'
notifies :restart, '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, 'service[apache2]'
end
node['apache']['default_modules'].each do |mod|
module_recipe_name = mod =~ /^mod_/ ? mod : "mod_#{mod}"
include_recipe "apache2::#{module_recipe_name}"
end
apache_site 'default' do
enable node['apache']['default_site_enabled']
end
service 'apache2' do
action :start
end