This repository has been archived by the owner on Apr 28, 2020. It is now read-only.
forked from tbalthazar-archives/ubuntu-machine
-
Notifications
You must be signed in to change notification settings - Fork 4
/
apache.rb
146 lines (125 loc) · 4.86 KB
/
apache.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
namespace :apache do
_cset(:sites_path) { "/home/#{user}/websites" }
desc "Install Apache"
task :install, :roles => :web do
sudo "apt-get install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert -y"
_cset(:server_name) {Capistrano::CLI.ui.ask("Server name : ")}
run "cat /etc/apache2/apache2.conf > ~/apache2.conf.tmp"
put render("apache2", binding), "apache2.append.conf.tmp"
run "cat apache2.append.conf.tmp >> ~/apache2.conf.tmp"
sudo "mv ~/apache2.conf.tmp /etc/apache2/apache2.conf"
run "rm apache2.append.conf.tmp"
restart
end
desc "Restarts Apache webserver"
task :restart, :roles => :web do
sudo "/etc/init.d/apache2 restart"
end
desc "Starts Apache webserver"
task :start, :roles => :web do
sudo "/etc/init.d/apache2 start"
end
desc "Stops Apache webserver"
task :stop, :roles => :web do
sudo "/etc/init.d/apache2 stop"
end
desc "Reload Apache webserver"
task :reload, :roles => :web do
sudo "/etc/init.d/apache2 reload"
end
desc "Force reload Apache webserver"
task :force_reload, :roles => :web do
sudo "/etc/init.d/apache2 force-reload"
end
desc "List enabled Apache sites"
task :enabled_sites, :roles => :web do
run "ls /etc/apache2/sites-enabled"
end
desc "List available Apache sites"
task :available_sites, :roles => :web do
run "ls /etc/apache2/sites-available"
end
desc "List enabled Apache modules"
task :enabled_modules, :roles => :web do
run "ls /etc/apache2/mods-enabled"
end
desc "List available Apache modules"
task :available_modules, :roles => :web do
run "ls /etc/apache2/mods-available"
end
desc "Disable Apache site"
task :disable_site, :roles => :web do
site = Capistrano::CLI.ui.ask("Which site should we disable: ")
sudo "sudo a2dissite #{site}"
reload
end
desc "Enable Apache site"
task :enable_site, :roles => :web do
site = Capistrano::CLI.ui.ask("Which site should we enable: ")
sudo "sudo a2ensite #{site}"
reload
end
desc "Disable Apache module"
task :disable_module, :roles => :web do
mod = Capistrano::CLI.ui.ask("Which module should we disable: ")
sudo "sudo a2dismod #{mod}"
force_reload
end
desc "Enable Apache module"
task :enable_module, :roles => :web do
mod = Capistrano::CLI.ui.ask("Which module should we enable: ")
sudo "sudo a2enmod #{mod}"
force_reload
end
desc "Create a new website"
task :create_website, :roles => :web do
server_admin = Capistrano::CLI.ui.ask("Server admin (#{default_server_admin}) if blank : ")
server_admin = default_server_admin if server_admin.empty?
server_name = Capistrano::CLI.ui.ask("Server name : ")
server_alias = Capistrano::CLI.ui.ask("Server alias : ")
server_port = Capistrano::CLI.ui.ask("Server port (80) if blank : ")
server_port = 80 if server_port.empty?
directory_index = Capistrano::CLI.ui.ask("Directory index (#{default_directory_index}) if blank : ")
directory_index = default_directory_index if directory_index.empty?
document_root = "#{sites_path}/#{server_name}/public"
# Website skeleton
%w{backup cap cgi-bin logs private public tmp}.each { |d|
run "mkdir -p #{sites_path}/#{server_name}/#{d}"
}
put render("vhost", binding), server_name
sudo "mv #{server_name} /etc/apache2/sites-available/#{server_name}"
sudo "sudo a2ensite #{server_name}"
reload
end
desc "Delete a website (! delete all file and folders)"
task :delete_website, :roles => :web do
server_name = Capistrano::CLI.ui.ask("Server name you want to delete : ")
sure = Capistrano::CLI.ui.ask("Are you sure you want to delete #{server_name} and all its files? (y/n) : ")
if sure=="y"
sudo "sudo a2dissite #{server_name}"
sudo "rm /etc/apache2/sites-available/#{server_name}"
sudo "rm -Rf #{sites_path}/#{server_name}"
reload
end
end
desc "Fix the mod_deflate configuration and activate it"
task :mod_deflate, :roles => :web do
put render("deflate.conf", binding), "deflate.conf"
sudo "mv deflate.conf /etc/apache2/mods-available/deflate.conf"
sudo "a2enmod deflate"
force_reload
end
desc "Install mod-xsendfile"
task :install_mod_xsendfile, :roles => :web do
run "wget http://tn123.ath.cx/mod_xsendfile/mod_xsendfile-0.9.tar.gz -O mod_xsendfile-0.9.tar.gz"
run "tar -xzf mod_xsendfile-0.9.tar.gz"
sudo "mkdir -p /usr/local/src"
sudo "mv mod_xsendfile-0.9* /usr/local/src/"
sudo "apxs2 -ci /usr/local/src/mod_xsendfile-0.9/mod_xsendfile.c"
put render("xsendfile.conf", binding), "xsendfile.conf.tmp"
sudo "mv xsendfile.conf.tmp /etc/apache2/mods-available/xsendfile.conf"
put render("xsendfile.load", binding), "xsendfile.load.tmp"
sudo "mv xsendfile.load.tmp /etc/apache2/mods-available/xsendfile.load"
sudo "a2enmod xsendfile"
end
end