Empact-deprec 1.99.21
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +170 -0
- data/COPYING +19 -0
- data/LICENSE +339 -0
- data/README +136 -0
- data/THANKS +5 -0
- data/bin/depify +133 -0
- data/docs/ANNOUNCE.deprec2 +47 -0
- data/docs/README.install +88 -0
- data/docs/README.nagios +28 -0
- data/docs/README.rails +20 -0
- data/docs/README.svn +31 -0
- data/docs/ROADMAP.txt +74 -0
- data/docs/deprec-1.x/deprec-1.x.quickstart +50 -0
- data/docs/deprec-1.x/notes.txt +12 -0
- data/docs/deprec_banner.gif +0 -0
- data/lib/deprec.rb +8 -0
- data/lib/deprec/capistrano_extensions.rb +378 -0
- data/lib/deprec/recipes.rb +40 -0
- data/lib/deprec/recipes/aoe.rb +117 -0
- data/lib/deprec/recipes/apache.rb +179 -0
- data/lib/deprec/recipes/ar_sendmail.rb +65 -0
- data/lib/deprec/recipes/canonical.rb +57 -0
- data/lib/deprec/recipes/deprec.rb +155 -0
- data/lib/deprec/recipes/deprecated.rb +71 -0
- data/lib/deprec/recipes/example.rb +115 -0
- data/lib/deprec/recipes/git.rb +168 -0
- data/lib/deprec/recipes/gitosis.rb +47 -0
- data/lib/deprec/recipes/god.rb +107 -0
- data/lib/deprec/recipes/heartbeat.rb +138 -0
- data/lib/deprec/recipes/iptables.rb +53 -0
- data/lib/deprec/recipes/logrotate.rb +51 -0
- data/lib/deprec/recipes/lvm.rb +20 -0
- data/lib/deprec/recipes/memcached.rb +102 -0
- data/lib/deprec/recipes/mongrel.rb +209 -0
- data/lib/deprec/recipes/monit.rb +130 -0
- data/lib/deprec/recipes/mysql.rb +115 -0
- data/lib/deprec/recipes/nagios.rb +302 -0
- data/lib/deprec/recipes/network.rb +84 -0
- data/lib/deprec/recipes/nginx.rb +154 -0
- data/lib/deprec/recipes/ntp.rb +96 -0
- data/lib/deprec/recipes/php.rb +99 -0
- data/lib/deprec/recipes/postfix.rb +105 -0
- data/lib/deprec/recipes/rails.rb +302 -0
- data/lib/deprec/recipes/ruby.rb +66 -0
- data/lib/deprec/recipes/sphinx.rb +83 -0
- data/lib/deprec/recipes/ssh.rb +93 -0
- data/lib/deprec/recipes/svn.rb +169 -0
- data/lib/deprec/recipes/swiftiply.rb +108 -0
- data/lib/deprec/recipes/thin.rb +201 -0
- data/lib/deprec/recipes/trac.rb +277 -0
- data/lib/deprec/recipes/ubuntu.rb +20 -0
- data/lib/deprec/recipes/users.rb +90 -0
- data/lib/deprec/recipes/utils.rb +39 -0
- data/lib/deprec/recipes/xen.rb +259 -0
- data/lib/deprec/templates/aoe/aoe-init +55 -0
- data/lib/deprec/templates/aoe/fence_aoemask +351 -0
- data/lib/deprec/templates/apache/httpd-vhost-app.conf.erb +144 -0
- data/lib/deprec/templates/apache/httpd.conf +465 -0
- data/lib/deprec/templates/apache/index.html.erb +37 -0
- data/lib/deprec/templates/apache/master.css +72 -0
- data/lib/deprec/templates/ar_sendmail/logrotate.conf.erb +9 -0
- data/lib/deprec/templates/ar_sendmail/monit.conf.erb +5 -0
- data/lib/deprec/templates/coraid/aoe-init +55 -0
- data/lib/deprec/templates/deprec/caprc.erb +14 -0
- data/lib/deprec/templates/god/god-init-script +71 -0
- data/lib/deprec/templates/god/god-notifications +0 -0
- data/lib/deprec/templates/god/god_mongrel.erb +81 -0
- data/lib/deprec/templates/god/god_mysql.erb +50 -0
- data/lib/deprec/templates/god/god_nginx.erb +61 -0
- data/lib/deprec/templates/god/god_thin.erb +80 -0
- data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
- data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
- data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
- data/lib/deprec/templates/iptables/iptables.up.erb +41 -0
- data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
- data/lib/deprec/templates/memcached/memcached-init-script +65 -0
- data/lib/deprec/templates/memcached/memcached.conf.erb +46 -0
- data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
- data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
- data/lib/deprec/templates/mongrel/mongrel_cluster.logrotate.d +14 -0
- data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
- data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
- data/lib/deprec/templates/monit/monit-init-script +104 -0
- data/lib/deprec/templates/monit/monitrc.erb +227 -0
- data/lib/deprec/templates/monit/nothing +0 -0
- data/lib/deprec/templates/mysql/create_databases.sql +20 -0
- data/lib/deprec/templates/mysql/database.yml.prod +6 -0
- data/lib/deprec/templates/mysql/database.yml.stage +6 -0
- data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
- data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
- data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
- data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
- data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
- data/lib/deprec/templates/nagios/contacts.cfg.erb +75 -0
- data/lib/deprec/templates/nagios/hosts.cfg.erb +70 -0
- data/lib/deprec/templates/nagios/htpasswd.users +1 -0
- data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
- data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
- data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
- data/lib/deprec/templates/nagios/nrpe.cfg.erb +208 -0
- data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
- data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
- data/lib/deprec/templates/nagios/services.cfg.erb +7 -0
- data/lib/deprec/templates/nagios/templates.cfg.erb +190 -0
- data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
- data/lib/deprec/templates/network/hostname.erb +1 -0
- data/lib/deprec/templates/network/hosts.erb +2 -0
- data/lib/deprec/templates/network/interfaces.erb +18 -0
- data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
- data/lib/deprec/templates/nginx/mime.types.erb +70 -0
- data/lib/deprec/templates/nginx/nginx-init-script +62 -0
- data/lib/deprec/templates/nginx/nginx.conf.erb +53 -0
- data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
- data/lib/deprec/templates/nginx/nothing.conf +1 -0
- data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +45 -0
- data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
- data/lib/deprec/templates/postfix/aliases.erb +3 -0
- data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
- data/lib/deprec/templates/postfix/main.cf.erb +41 -0
- data/lib/deprec/templates/postfix/master.cf.erb +77 -0
- data/lib/deprec/templates/rails/database.yml.erb +6 -0
- data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
- data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
- data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
- data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
- data/lib/deprec/templates/swiftiply/swiftiply-init-script +61 -0
- data/lib/deprec/templates/swiftiply/swiftiply.yml.erb +11 -0
- data/lib/deprec/templates/thin/thin-init-script +51 -0
- data/lib/deprec/templates/thin/thin.yml.erb +11 -0
- data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
- data/lib/deprec/templates/trac/nginx_vhost.conf.erb +26 -0
- data/lib/deprec/templates/trac/trac.ini.erb +169 -0
- data/lib/deprec/templates/trac/trac_deprec.png +0 -0
- data/lib/deprec/templates/trac/tracd-init.erb +43 -0
- data/lib/deprec/templates/trac/users.htdigest.erb +0 -0
- data/lib/deprec/templates/xen/15-disable-hwclock +40 -0
- data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
- data/lib/deprec/templates/xen/xen-tools.conf.erb +220 -0
- data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
- data/lib/deprec/templates/xen/xend-init.erb +69 -0
- data/lib/deprec/templates/xen/xendomains.erb +137 -0
- data/lib/deprec/templates/xen/xm.tmpl.erb +85 -0
- data/lib/vmbuilder_plugins/all.rb +20 -0
- data/lib/vmbuilder_plugins/apt.rb +93 -0
- data/lib/vmbuilder_plugins/emerge.rb +76 -0
- data/lib/vmbuilder_plugins/gem.rb +90 -0
- data/lib/vmbuilder_plugins/std.rb +203 -0
- metadata +207 -0
@@ -0,0 +1,80 @@
|
|
1
|
+
# == God config file
|
2
|
+
# http://god.rubyforge.org/
|
3
|
+
# Authors: Gump and michael@glauche.de
|
4
|
+
#
|
5
|
+
# Config file for god that configures watches for each instance of a thin server for
|
6
|
+
# each thin configuration file found in /etc/thin.
|
7
|
+
# In order to get it working on Ubuntu, I had to make a change to god as noted at
|
8
|
+
# the following blog:
|
9
|
+
# http://blog.alexgirard.com/2007/10/25/ruby-one-line-to-save-god/
|
10
|
+
#
|
11
|
+
require 'yaml'
|
12
|
+
|
13
|
+
config_path = "/etc/thin"
|
14
|
+
|
15
|
+
Dir[config_path + "/*.yml"].each do |file|
|
16
|
+
config = YAML.load_file(file)
|
17
|
+
num_servers = config["servers"] ||= 1
|
18
|
+
|
19
|
+
(0...num_servers).each do |i|
|
20
|
+
# UNIX socket cluster use number 0 to 2 (for 3 servers)
|
21
|
+
# and tcp cluster use port number 3000 to 3002.
|
22
|
+
number = config['socket'] ? i : (config['port'] + i)
|
23
|
+
|
24
|
+
God.watch do |w|
|
25
|
+
w.group = "thin-" + File.basename(file, ".yml")
|
26
|
+
w.name = w.group + "-#{number}"
|
27
|
+
|
28
|
+
w.interval = 30.seconds
|
29
|
+
|
30
|
+
w.uid = config["user"]
|
31
|
+
w.gid = config["group"]
|
32
|
+
|
33
|
+
w.start = "thin start -C #{file} -o #{number}"
|
34
|
+
w.start_grace = 10.seconds
|
35
|
+
|
36
|
+
w.stop = "thin stop -C #{file} -o #{number}"
|
37
|
+
w.stop_grace = 10.seconds
|
38
|
+
|
39
|
+
w.restart = "thin restart -C #{file} -o #{number}"
|
40
|
+
|
41
|
+
pid_path = config["chdir"] + "/" + config["pid"]
|
42
|
+
ext = File.extname(pid_path)
|
43
|
+
|
44
|
+
w.pid_file = pid_path.gsub(/#{ext}$/, ".#{number}#{ext}")
|
45
|
+
|
46
|
+
w.behavior(:clean_pid_file)
|
47
|
+
|
48
|
+
w.start_if do |start|
|
49
|
+
start.condition(:process_running) do |c|
|
50
|
+
c.interval = 5.seconds
|
51
|
+
c.running = false
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
w.restart_if do |restart|
|
56
|
+
restart.condition(:memory_usage) do |c|
|
57
|
+
c.above = 150.megabytes
|
58
|
+
c.times = [3,5] # 3 out of 5 intervals
|
59
|
+
end
|
60
|
+
|
61
|
+
restart.condition(:cpu_usage) do |c|
|
62
|
+
c.above = 50.percent
|
63
|
+
c.times = 5
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
w.lifecycle do |on|
|
68
|
+
on.condition(:flapping) do |c|
|
69
|
+
c.to_state = [:start, :restart]
|
70
|
+
c.times = 5
|
71
|
+
c.within = 5.minutes
|
72
|
+
c.transition = :unmonitored
|
73
|
+
c.retry_in = 10.minutes
|
74
|
+
c.retry_times = 5
|
75
|
+
c.retry_within = 2.hours
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# http://linux-ha.org/ha.cf
|
2
|
+
logfacility daemon
|
3
|
+
keepalive 1
|
4
|
+
deadtime 10
|
5
|
+
warntime 5
|
6
|
+
initdead 120 # depend on your hardware
|
7
|
+
udpport 694
|
8
|
+
ping <%= heartbeat_ping %>
|
9
|
+
bcast <%= heartbeat_bcast %>
|
10
|
+
auto_failback <%= heartbeat_auto_failback %>
|
11
|
+
<% heartbeat_nodes.each do |node| -%>
|
12
|
+
node <%= node %>
|
13
|
+
<% end -%>
|
14
|
+
respawn hacluster /usr/lib/heartbeat/ipfail
|
15
|
+
use_logd yes
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= heartbeat_preferred_node %> <%= heartbeat_resources %>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
*filter
|
2
|
+
|
3
|
+
|
4
|
+
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
|
5
|
+
-A INPUT -i lo -j ACCEPT
|
6
|
+
-A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
|
7
|
+
|
8
|
+
|
9
|
+
# Accepts all established inbound connections
|
10
|
+
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
11
|
+
|
12
|
+
|
13
|
+
# Allows all outbound traffic
|
14
|
+
# You can modify this to only allow certain traffic
|
15
|
+
-A OUTPUT -j ACCEPT
|
16
|
+
|
17
|
+
|
18
|
+
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
|
19
|
+
-A INPUT -p tcp --dport 80 -j ACCEPT
|
20
|
+
-A INPUT -p tcp --dport 443 -j ACCEPT
|
21
|
+
<% port_list.each do |port| %>
|
22
|
+
-A INPUT -p tcp --dport <%= port %> -j ACCEPT
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
# Allows SSH connections on the unrecommended default port
|
26
|
+
-A INPUT -p tcp -m state --state NEW --dport <%= ssh_port %> -j ACCEPT
|
27
|
+
|
28
|
+
|
29
|
+
# Allow ping
|
30
|
+
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
|
31
|
+
|
32
|
+
|
33
|
+
# log iptables denied calls
|
34
|
+
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
|
35
|
+
|
36
|
+
|
37
|
+
# Reject all other inbound - default deny unless explicitly allowed policy
|
38
|
+
-A INPUT -j REJECT
|
39
|
+
-A FORWARD -j REJECT
|
40
|
+
|
41
|
+
COMMIT
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# see "man logrotate" for details
|
2
|
+
# rotate log files weekly
|
3
|
+
weekly
|
4
|
+
|
5
|
+
# keep 4 weeks worth of backlogs
|
6
|
+
rotate 4
|
7
|
+
|
8
|
+
# create new (empty) log files after rotating old ones
|
9
|
+
create
|
10
|
+
|
11
|
+
# uncomment this if you want your log files compressed
|
12
|
+
#compress
|
13
|
+
|
14
|
+
# packages drop log rotation information into this directory
|
15
|
+
include /etc/logrotate.d
|
16
|
+
|
17
|
+
# no packages own wtmp, or btmp -- we'll rotate them here
|
18
|
+
/var/log/wtmp {
|
19
|
+
missingok
|
20
|
+
monthly
|
21
|
+
create 0664 root utmp
|
22
|
+
rotate 1
|
23
|
+
}
|
24
|
+
|
25
|
+
/var/log/btmp {
|
26
|
+
missingok
|
27
|
+
monthly
|
28
|
+
create 0664 root utmp
|
29
|
+
rotate 1
|
30
|
+
}
|
31
|
+
|
32
|
+
# system-specific logs may be configured here
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#! /bin/sh
|
2
|
+
### BEGIN INIT INFO
|
3
|
+
# Provides: memcached
|
4
|
+
# Should-Start: $local_fs
|
5
|
+
# Should-Stop: $local_fs
|
6
|
+
# Default-Start: 2 3 4 5
|
7
|
+
# Default-Stop: 0 1 6
|
8
|
+
# Short-Description: memcached - Memory caching daemon
|
9
|
+
# Description: memcached - Memory caching daemon
|
10
|
+
### END INIT INFO
|
11
|
+
|
12
|
+
|
13
|
+
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
14
|
+
DAEMON=/usr/local/bin/memcached
|
15
|
+
DAEMONBOOTSTRAP=/etc/memcached/memcached.conf
|
16
|
+
NAME=memcached
|
17
|
+
DESC=memcached
|
18
|
+
PIDFILE=<%= memcached_pid_file %>
|
19
|
+
|
20
|
+
test -x $DAEMON || exit 0
|
21
|
+
test -x $DAEMONBOOTSTRAP || exit 0
|
22
|
+
|
23
|
+
#PIDFILE=`sed -n 's/-P \(\/\)/\1/p' $DAEMONBOOTSTRAP`
|
24
|
+
# Remove comments, then tidy whitespace, then concatenate the lines into one line
|
25
|
+
ARGS=`sed 's/\#.*//;/^[ \n]*$/d;' $DAEMONBOOTSTRAP | tr '\012' ' '`
|
26
|
+
|
27
|
+
set -e
|
28
|
+
|
29
|
+
case "$1" in
|
30
|
+
start)
|
31
|
+
echo -n "Starting $DESC: "
|
32
|
+
touch <%= memcached_pid_file %> && chown <%= memcached_user %>:<%= memcached_group %> <%= memcached_pid_file %>
|
33
|
+
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $ARGS
|
34
|
+
echo "$NAME."
|
35
|
+
;;
|
36
|
+
stop)
|
37
|
+
echo -n "Stopping $DESC: "
|
38
|
+
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
|
39
|
+
echo "$NAME."
|
40
|
+
rm -f $PIDFILE
|
41
|
+
;;
|
42
|
+
stop)
|
43
|
+
echo -n "Reloading $DESC"
|
44
|
+
kill -HUP `cat $PIDFILE`
|
45
|
+
echo "$NAME."
|
46
|
+
rm -f $PIDFILE
|
47
|
+
;;
|
48
|
+
|
49
|
+
restart|force-reload)
|
50
|
+
echo -n "Restarting $DESC: "
|
51
|
+
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
|
52
|
+
rm -f $PIDFILE
|
53
|
+
touch <%= memcached_pid_file %> && chown <%= memcached_user %>:<%= memcached_group %> <%= memcached_pid_file %>
|
54
|
+
|
55
|
+
start-stop-daemon --start --quiet --exec $ARGS
|
56
|
+
echo "$NAME."
|
57
|
+
;;
|
58
|
+
*)
|
59
|
+
N=/etc/init.d/$NAME
|
60
|
+
echo "Usage: $N {start|stop|reload|restart|force-reload}" >&2
|
61
|
+
exit 1
|
62
|
+
;;
|
63
|
+
esac
|
64
|
+
|
65
|
+
exit 0
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# 2003 - Jay Bonci <jaybonci@debian.org>
|
2
|
+
# This configuration file is read by the start-memcached script provided as
|
3
|
+
# part of the Debian GNU/Linux distribution.
|
4
|
+
|
5
|
+
# Run memcached as a daemon. This command is implied, and is not needed for the
|
6
|
+
# daemon to run. See the README.Debian that comes with this package for more
|
7
|
+
# information.
|
8
|
+
-d
|
9
|
+
|
10
|
+
#PID File
|
11
|
+
-P <%= memcached_pid_file %>
|
12
|
+
|
13
|
+
# Be verbose
|
14
|
+
# -v
|
15
|
+
|
16
|
+
# Be even more verbose (print client commands as well)
|
17
|
+
# -vv
|
18
|
+
|
19
|
+
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
|
20
|
+
# Note that the daemon will grow to this size, but does not start out holding this much
|
21
|
+
# memory
|
22
|
+
-m <%= memcached_cache_size %>
|
23
|
+
|
24
|
+
# Default connection port is 11211
|
25
|
+
-p <%= memcached_port %>
|
26
|
+
|
27
|
+
# Run the daemon as root. The start-memcached will default to running as root if no
|
28
|
+
# -u command is present in this config file
|
29
|
+
-u <%= memcached_user %>
|
30
|
+
|
31
|
+
# Specify which IP address to listen on. The default is to listen on all IP addresses
|
32
|
+
# This parameter is one of the only security measures that memcached has, so make sure
|
33
|
+
# it's listening on a firewalled interface.
|
34
|
+
-l <%= memcached_address %>
|
35
|
+
|
36
|
+
# Limit the number of simultaneous incoming connections. The daemon default is 1024
|
37
|
+
# -c 1024
|
38
|
+
|
39
|
+
# Lock down all paged memory. Consult with the README and homepage before you do this
|
40
|
+
# -k
|
41
|
+
|
42
|
+
# Return error when memory is exhausted (rather than removing items)
|
43
|
+
# -M
|
44
|
+
|
45
|
+
# Maximize core file limit
|
46
|
+
# -r
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# Copyright (c) 2007 Bradley Taylor, bradley@railsmachine.com
|
4
|
+
#
|
5
|
+
# mongrel_cluster Startup script for Mongrel clusters.
|
6
|
+
#
|
7
|
+
# chkconfig: - 85 15
|
8
|
+
# description: mongrel_cluster manages multiple Mongrel processes for use \
|
9
|
+
# behind a load balancer.
|
10
|
+
#
|
11
|
+
|
12
|
+
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local:/usr/local/sbin:/usr/local/bin
|
13
|
+
CONF_DIR=/etc/mongrel_cluster
|
14
|
+
PID_DIR=/var/run/mongrel_cluster
|
15
|
+
# USER=mongrel
|
16
|
+
|
17
|
+
EVENT=1
|
18
|
+
|
19
|
+
RETVAL=0
|
20
|
+
|
21
|
+
# Gracefully exit if the controller is missing.
|
22
|
+
which mongrel_cluster_ctl >/dev/null || exit 0
|
23
|
+
|
24
|
+
# Go no further if config directory is missing.
|
25
|
+
[ -d "$CONF_DIR" ] || exit 0
|
26
|
+
|
27
|
+
case "$1" in
|
28
|
+
start)
|
29
|
+
# Create pid directory
|
30
|
+
mkdir -p $PID_DIR
|
31
|
+
# chown $USER:$USER $PID_DIR
|
32
|
+
|
33
|
+
mongrel_cluster_ctl start --clean -c $CONF_DIR
|
34
|
+
RETVAL=$?
|
35
|
+
;;
|
36
|
+
stop)
|
37
|
+
mongrel_cluster_ctl stop -c $CONF_DIR
|
38
|
+
RETVAL=$?
|
39
|
+
;;
|
40
|
+
restart)
|
41
|
+
mongrel_cluster_ctl restart --clean -c $CONF_DIR
|
42
|
+
RETVAL=$?
|
43
|
+
;;
|
44
|
+
status)
|
45
|
+
mongrel_cluster_ctl status -c $CONF_DIR
|
46
|
+
RETVAL=$?
|
47
|
+
;;
|
48
|
+
*)
|
49
|
+
echo "Usage: mongrel_cluster {start|stop|restart|status}"
|
50
|
+
exit 1
|
51
|
+
;;
|
52
|
+
esac
|
53
|
+
|
54
|
+
exit $RETVAL
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/var/log/mongrel/<%= application %>/*.log {
|
2
|
+
daily
|
3
|
+
missingok
|
4
|
+
rotate 28
|
5
|
+
compress
|
6
|
+
notifempty
|
7
|
+
sharedscripts
|
8
|
+
extension gz
|
9
|
+
postrotate
|
10
|
+
for i in `ls /data/<%= @username %>/shared/log/*.pid`; do
|
11
|
+
kill -USR2 `cat $i`
|
12
|
+
done
|
13
|
+
endscript
|
14
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
user: <%= mongrel_user %>
|
3
|
+
group: <%= mongrel_group %>
|
4
|
+
cwd: <%= current_path %>
|
5
|
+
log_file: <%= mongrel_log_dir %>/mongrel.log
|
6
|
+
port: "<%= mongrel_port.to_s %>"
|
7
|
+
environment: <%= mongrel_environment %>
|
8
|
+
address: <%= mongrel_address %>
|
9
|
+
pid_file: <%= mongrel_pid_dir %>/mongrel.pid
|
10
|
+
servers: <%= mongrel_servers.to_s %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<% mongrel_servers.times do |counter| -%>
|
2
|
+
check process mongrel-<%=mongrel_port+counter%> with pidfile <%= mongrel_pid_dir %>/mongrel.<%=mongrel_port+counter%>.pid
|
3
|
+
group mongrel_<%= application %>
|
4
|
+
start program = "/usr/local/bin/ruby /usr/local/bin/mongrel_rails cluster::start --clean -C <%= mongrel_conf %> --only <%=mongrel_port+counter%>"
|
5
|
+
stop program = "/usr/local/bin/ruby /usr/local/bin/mongrel_rails cluster::stop -C <%= mongrel_conf %> --only <%=mongrel_port+counter%>"
|
6
|
+
|
7
|
+
if failed host 127.0.0.1 port <%=mongrel_port+counter%> protocol http
|
8
|
+
with timeout 10 seconds
|
9
|
+
then alert
|
10
|
+
|
11
|
+
if totalmem > 100 Mb then restart
|
12
|
+
if cpu > 60% for 2 cycles then alert
|
13
|
+
if cpu > 80% for 5 cycles then restart
|
14
|
+
if loadavg(5min) > 10 for 8 cycles then restart
|
15
|
+
if 3 restarts within 5 cycles then timeout
|
16
|
+
|
17
|
+
<% end -%>
|
@@ -0,0 +1,104 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
# /etc/init.d/monit start and stop monit daemon monitor process.
|
3
|
+
# Fredrik Steen, stone@debian.org
|
4
|
+
:
|
5
|
+
PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
6
|
+
DAEMON=/usr/local/bin/monit
|
7
|
+
CONFIG="/etc/monitrc"
|
8
|
+
NAME=monit
|
9
|
+
DESC="daemon monitor"
|
10
|
+
|
11
|
+
set -e
|
12
|
+
|
13
|
+
# Check if DAEMON binary exist
|
14
|
+
test -f $DAEMON || exit 0
|
15
|
+
|
16
|
+
ARGS="-c $CONFIG"
|
17
|
+
|
18
|
+
monit_not_configured () {
|
19
|
+
echo -e "monit won't be started/stopped\n\tunless it it's configured"
|
20
|
+
if [ "$1" != "stop" ]
|
21
|
+
then
|
22
|
+
echo -e "\tplease configure monit and then edit /etc/default/monit"
|
23
|
+
echo -e "\tand set the \"startup\" variable to 1 in order to allow "
|
24
|
+
echo -e "\tmonit to start"
|
25
|
+
fi
|
26
|
+
exit 0
|
27
|
+
}
|
28
|
+
|
29
|
+
monit_check_config () {
|
30
|
+
# Check for emtpy config, probably default configfile.
|
31
|
+
if [ "`grep -s -v \"^#\" $CONFIG`" = "" ]; then
|
32
|
+
echo "empty config, please edit $CONFIG."
|
33
|
+
exit 0
|
34
|
+
fi
|
35
|
+
}
|
36
|
+
|
37
|
+
monit_check_perms () {
|
38
|
+
# Check the permission on configfile.
|
39
|
+
# The permission must not have more than -rwx------ (0700) permissions.
|
40
|
+
|
41
|
+
# Skip checking, fix perms instead.
|
42
|
+
/bin/chmod go-rwx $CONFIG
|
43
|
+
|
44
|
+
}
|
45
|
+
|
46
|
+
monit_delayed_monitoring () {
|
47
|
+
if [ -x $DELAY ]; then
|
48
|
+
$DELAY &
|
49
|
+
elif [ -f $DELAY ]; then
|
50
|
+
echo
|
51
|
+
echo "[WARNING] A delayed start file exists ($DELAY) but it is not executable."
|
52
|
+
fi
|
53
|
+
}
|
54
|
+
|
55
|
+
monit_check_syntax () {
|
56
|
+
$DAEMON -t;
|
57
|
+
# if [ $? ] ; then
|
58
|
+
# echo "syntax good"
|
59
|
+
# else
|
60
|
+
# echo "syntax bad"
|
61
|
+
# fi
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
monit_checks () {
|
66
|
+
# Check for emtpy configfile
|
67
|
+
monit_check_config
|
68
|
+
# Check permissions of configfile
|
69
|
+
monit_check_perms
|
70
|
+
}
|
71
|
+
|
72
|
+
case "$1" in
|
73
|
+
start)
|
74
|
+
echo -n "Starting $DESC: "
|
75
|
+
monit_checks $1
|
76
|
+
echo -n "$NAME"
|
77
|
+
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
|
78
|
+
--exec $DAEMON > /dev/null 2>&1 -- $ARGS
|
79
|
+
monit_delayed_monitoring
|
80
|
+
echo "."
|
81
|
+
;;
|
82
|
+
stop)
|
83
|
+
echo -n "Stopping $DESC: "
|
84
|
+
#monit_checks $1
|
85
|
+
echo -n "$NAME"
|
86
|
+
start-stop-daemon --retry 5 --oknodo --stop --quiet --pidfile /var/run/$NAME.pid \
|
87
|
+
--exec $DAEMON > /dev/null 2>&1
|
88
|
+
echo "."
|
89
|
+
;;
|
90
|
+
restart|force-reload)
|
91
|
+
$0 stop
|
92
|
+
$0 start
|
93
|
+
;;
|
94
|
+
syntax)
|
95
|
+
monit_check_syntax
|
96
|
+
;;
|
97
|
+
*)
|
98
|
+
N=/etc/init.d/$NAME
|
99
|
+
echo "Usage: $N {start|stop|restart|force-reload|syntax}" >&2
|
100
|
+
exit 1
|
101
|
+
;;
|
102
|
+
esac
|
103
|
+
|
104
|
+
exit 0
|