mdh-ec2onrails 0.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. data/CHANGELOG +180 -0
  2. data/COPYING +339 -0
  3. data/Manifest +162 -0
  4. data/README.textile +214 -0
  5. data/Rakefile +36 -0
  6. data/TODO +102 -0
  7. data/ec2onrails.gemspec +42 -0
  8. data/examples/Capfile +3 -0
  9. data/examples/deploy.rb +101 -0
  10. data/examples/s3.yml +9 -0
  11. data/lib/ec2onrails.rb +20 -0
  12. data/lib/ec2onrails/capistrano_utils.rb +43 -0
  13. data/lib/ec2onrails/recipes.rb +844 -0
  14. data/lib/ec2onrails/version.rb +31 -0
  15. data/server/build-ec2onrails.sh +44 -0
  16. data/server/files/etc/aliases +5 -0
  17. data/server/files/etc/aliases.db +0 -0
  18. data/server/files/etc/apache2/apache2.conf +295 -0
  19. data/server/files/etc/apache2/conf.d/app.proxy_cluster.conf +7 -0
  20. data/server/files/etc/apache2/conf.d/app.proxy_frontend.conf +10 -0
  21. data/server/files/etc/apache2/mods-available/proxy.conf +18 -0
  22. data/server/files/etc/apache2/sites-available/app.common +56 -0
  23. data/server/files/etc/apache2/sites-available/app.custom +0 -0
  24. data/server/files/etc/apache2/sites-available/default +14 -0
  25. data/server/files/etc/apache2/sites-available/default-ssl +19 -0
  26. data/server/files/etc/cron.d/backup_app_db_to_s3 +16 -0
  27. data/server/files/etc/cron.daily/app +9 -0
  28. data/server/files/etc/cron.daily/logrotate_post +19 -0
  29. data/server/files/etc/cron.hourly/app +10 -0
  30. data/server/files/etc/cron.monthly/app +10 -0
  31. data/server/files/etc/cron.weekly/app +10 -0
  32. data/server/files/etc/denyhosts.conf +628 -0
  33. data/server/files/etc/dpkg/dpkg.cfg +13 -0
  34. data/server/files/etc/ec2onrails/README +32 -0
  35. data/server/files/etc/ec2onrails/balancer_members +6 -0
  36. data/server/files/etc/ec2onrails/roles.yml +5 -0
  37. data/server/files/etc/environment +2 -0
  38. data/server/files/etc/god/app.god +35 -0
  39. data/server/files/etc/god/db.god +17 -0
  40. data/server/files/etc/god/examples/have_god_daemonize.god +18 -0
  41. data/server/files/etc/god/master.conf +35 -0
  42. data/server/files/etc/god/memcache.god +15 -0
  43. data/server/files/etc/god/notifications.god +14 -0
  44. data/server/files/etc/god/system.god +34 -0
  45. data/server/files/etc/god/web.god +36 -0
  46. data/server/files/etc/init.d/ec2-every-startup +29 -0
  47. data/server/files/etc/init.d/ec2-first-startup +36 -0
  48. data/server/files/etc/init.d/god +42 -0
  49. data/server/files/etc/init.d/nginx +78 -0
  50. data/server/files/etc/init.d/set_roles +3 -0
  51. data/server/files/etc/logrotate.d/apache2 +16 -0
  52. data/server/files/etc/logrotate.d/mongrel +11 -0
  53. data/server/files/etc/logrotate.d/nginx +11 -0
  54. data/server/files/etc/memcached.conf +47 -0
  55. data/server/files/etc/mongrel_cluster/app.yml +9 -0
  56. data/server/files/etc/motd.tail +13 -0
  57. data/server/files/etc/mysql/my.cnf +152 -0
  58. data/server/files/etc/nginx/nginx.conf +296 -0
  59. data/server/files/etc/postfix/main.cf +4 -0
  60. data/server/files/etc/rcS.d/S91ec2-first-startup +1 -0
  61. data/server/files/etc/rcS.d/S92ec2-every-startup +1 -0
  62. data/server/files/etc/rcS.d/S99set_roles +1 -0
  63. data/server/files/etc/ssh/sshd_config +94 -0
  64. data/server/files/etc/sudoers +1 -0
  65. data/server/files/etc/sudoers.full_access +26 -0
  66. data/server/files/etc/sudoers.restricted_access +28 -0
  67. data/server/files/etc/syslog.conf +69 -0
  68. data/server/files/usr/bin/god +26 -0
  69. data/server/files/usr/local/ec2onrails/COPYING +339 -0
  70. data/server/files/usr/local/ec2onrails/bin/archive_file.rb +44 -0
  71. data/server/files/usr/local/ec2onrails/bin/backup_app_db.rb +159 -0
  72. data/server/files/usr/local/ec2onrails/bin/ec2_meta_data.rb +80 -0
  73. data/server/files/usr/local/ec2onrails/bin/exec_runner +73 -0
  74. data/server/files/usr/local/ec2onrails/bin/init_services.rb +64 -0
  75. data/server/files/usr/local/ec2onrails/bin/optimize_mysql.rb +348 -0
  76. data/server/files/usr/local/ec2onrails/bin/rails_env +35 -0
  77. data/server/files/usr/local/ec2onrails/bin/rebundle.sh +70 -0
  78. data/server/files/usr/local/ec2onrails/bin/restore_app_db.rb +58 -0
  79. data/server/files/usr/local/ec2onrails/bin/set_rails_env +40 -0
  80. data/server/files/usr/local/ec2onrails/bin/set_roles.rb +87 -0
  81. data/server/files/usr/local/ec2onrails/bin/setup_web_proxy.rb +109 -0
  82. data/server/files/usr/local/ec2onrails/config +30 -0
  83. data/server/files/usr/local/ec2onrails/lib/aws_helper.rb +76 -0
  84. data/server/files/usr/local/ec2onrails/lib/god_helper.rb +129 -0
  85. data/server/files/usr/local/ec2onrails/lib/god_patch.rb +43 -0
  86. data/server/files/usr/local/ec2onrails/lib/mysql_helper.rb +101 -0
  87. data/server/files/usr/local/ec2onrails/lib/roles_helper.rb +151 -0
  88. data/server/files/usr/local/ec2onrails/lib/s3_helper.rb +99 -0
  89. data/server/files/usr/local/ec2onrails/lib/utils.rb +16 -0
  90. data/server/files/usr/local/ec2onrails/lib/vendor/ini.rb +268 -0
  91. data/server/files/usr/local/ec2onrails/startup-scripts/every-startup/get-hostname.sh +25 -0
  92. data/server/files/usr/local/ec2onrails/startup-scripts/first-startup/README +5 -0
  93. data/server/files/usr/local/ec2onrails/startup-scripts/first-startup/create-dirs.sh +39 -0
  94. data/server/files/usr/local/ec2onrails/startup-scripts/first-startup/generate-default-web-cert-and-key.sh +49 -0
  95. data/server/files/usr/local/ec2onrails/startup-scripts/first-startup/misc.sh +27 -0
  96. data/server/files/usr/local/ec2onrails/startup-scripts/first-startup/prepare-mysql-data-dir.sh +24 -0
  97. data/server/files/usr/local/ec2onrails/startup-scripts/first-startup/setup-credentials.sh +29 -0
  98. data/server/files/usr/local/ec2onrails/startup-scripts/first-startup/setup-file-permissions.sh +30 -0
  99. data/server/rakefile.rb +248 -0
  100. data/setup.rb +1585 -0
  101. data/test/autobench.conf +60 -0
  102. data/test/spec/lib/s3_helper_spec.rb +134 -0
  103. data/test/spec/lib/s3_old.yml +3 -0
  104. data/test/spec/test_files/test1 +0 -0
  105. data/test/spec/test_files/test2 +0 -0
  106. data/test/test_app/Capfile +3 -0
  107. data/test/test_app/README +182 -0
  108. data/test/test_app/Rakefile +10 -0
  109. data/test/test_app/app/controllers/application.rb +7 -0
  110. data/test/test_app/app/controllers/db_fast_controller.rb +6 -0
  111. data/test/test_app/app/controllers/fast_controller.rb +5 -0
  112. data/test/test_app/app/controllers/slow_controller.rb +6 -0
  113. data/test/test_app/app/controllers/very_slow_controller.rb +6 -0
  114. data/test/test_app/app/helpers/application_helper.rb +3 -0
  115. data/test/test_app/app/helpers/db_fast_helper.rb +2 -0
  116. data/test/test_app/app/helpers/fast_helper.rb +2 -0
  117. data/test/test_app/app/helpers/slow_helper.rb +2 -0
  118. data/test/test_app/app/helpers/very_slow_helper.rb +2 -0
  119. data/test/test_app/config/boot.rb +109 -0
  120. data/test/test_app/config/database.yml +19 -0
  121. data/test/test_app/config/deploy.rb +21 -0
  122. data/test/test_app/config/environment.rb +60 -0
  123. data/test/test_app/config/environments/development.rb +21 -0
  124. data/test/test_app/config/environments/production.rb +18 -0
  125. data/test/test_app/config/environments/test.rb +19 -0
  126. data/test/test_app/config/routes.rb +27 -0
  127. data/test/test_app/db/schema.rb +7 -0
  128. data/test/test_app/doc/README_FOR_APP +2 -0
  129. data/test/test_app/public/404.html +30 -0
  130. data/test/test_app/public/500.html +30 -0
  131. data/test/test_app/public/dispatch.cgi +10 -0
  132. data/test/test_app/public/dispatch.fcgi +24 -0
  133. data/test/test_app/public/dispatch.rb +10 -0
  134. data/test/test_app/public/favicon.ico +0 -0
  135. data/test/test_app/public/images/rails.png +0 -0
  136. data/test/test_app/public/javascripts/application.js +2 -0
  137. data/test/test_app/public/javascripts/controls.js +963 -0
  138. data/test/test_app/public/javascripts/dragdrop.js +972 -0
  139. data/test/test_app/public/javascripts/effects.js +1120 -0
  140. data/test/test_app/public/javascripts/prototype.js +4225 -0
  141. data/test/test_app/public/robots.txt +1 -0
  142. data/test/test_app/script/about +3 -0
  143. data/test/test_app/script/breakpointer +3 -0
  144. data/test/test_app/script/console +3 -0
  145. data/test/test_app/script/destroy +3 -0
  146. data/test/test_app/script/generate +3 -0
  147. data/test/test_app/script/performance/benchmarker +3 -0
  148. data/test/test_app/script/performance/profiler +3 -0
  149. data/test/test_app/script/performance/request +3 -0
  150. data/test/test_app/script/plugin +3 -0
  151. data/test/test_app/script/process/inspector +3 -0
  152. data/test/test_app/script/process/reaper +3 -0
  153. data/test/test_app/script/process/spawner +3 -0
  154. data/test/test_app/script/runner +3 -0
  155. data/test/test_app/script/server +3 -0
  156. data/test/test_app/test/functional/db_fast_controller_test.rb +18 -0
  157. data/test/test_app/test/functional/fast_controller_test.rb +18 -0
  158. data/test/test_app/test/functional/slow_controller_test.rb +18 -0
  159. data/test/test_app/test/functional/very_slow_controller_test.rb +18 -0
  160. data/test/test_app/test/test_helper.rb +28 -0
  161. data/test/test_ec2onrails.rb +11 -0
  162. data/test/test_helper.rb +2 -0
  163. metadata +274 -0
@@ -0,0 +1,13 @@
1
+ # dpkg configuration file
2
+ #
3
+ # This file can contain default options for dpkg. All command-line
4
+ # options are allowed. Values can be specified by putting them after
5
+ # the option, separated by whitespace and/or an `=' sign.
6
+ #
7
+
8
+ # ec2onrails note: if we have a config file already up here, we want to use
9
+ # that over the packages default.
10
+ force-confold
11
+
12
+ # Log status changes and actions to a file.
13
+ log /var/log/dpkg.log
@@ -0,0 +1,32 @@
1
+ You can place a *.erb file in this directory and the set_roles script will
2
+ format them. This is helpful if you want to customize your balancer_memebers
3
+ or nginx_upstream_members files. For example, if you want to define multiple
4
+ instances for nginx to hook into, you can put something like this in
5
+ nginx_upstream_members.erb:
6
+
7
+ upstream mongrel{
8
+ <%
9
+ roles[:app].each do |address|
10
+ @web_port_range.each do |port|
11
+ %>
12
+ server <%= address %>:<%= port %>;
13
+ <%
14
+ end
15
+ end
16
+ %>
17
+ fair;
18
+ }
19
+
20
+ upstream merb{
21
+ <%
22
+ @roles[:app].each do |address|
23
+ %>
24
+ server <%= address %>:4000;
25
+ server <%= address %>:4001;
26
+ server <%= address %>:4002;
27
+ server <%= address %>:4003;
28
+ server <%= address %>:4004;
29
+ server <%= address %>:4005;
30
+ <% end %>
31
+ fair;
32
+ }
@@ -0,0 +1,6 @@
1
+ BalancerMember http://127.0.0.1:8000
2
+ BalancerMember http://127.0.0.1:8001
3
+ BalancerMember http://127.0.0.1:8002
4
+ BalancerMember http://127.0.0.1:8003
5
+ BalancerMember http://127.0.0.1:8004
6
+ BalancerMember http://127.0.0.1:8005
@@ -0,0 +1,5 @@
1
+ ---
2
+ :memcache:
3
+ :db_primary:
4
+ :app:
5
+ :web:
@@ -0,0 +1,2 @@
1
+ PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ec2onrails/bin"
2
+ RUBYLIB=/usr/lib/ruby/1.8:/usr/local/lib/1.8/i486-linux:/usr/lib/site_ruby
@@ -0,0 +1,35 @@
1
+ # rolling restart idea plagiarized directly from:
2
+ # http://blog.pragmatic-it.de/articles/2008/07/09/poor-mans-rolling-restart-for-thin-god
3
+ restart_time = 60.seconds #how long to restart the entire cluster
4
+ rolling_delay = (restart_time / @configs.web_num_instances.to_f).ceil
5
+ @configs.web_port_range.each_with_index do |port, i|
6
+ God.watch do |w|
7
+ w.name = "mongrel_#{port}"
8
+ w.group = 'app'
9
+ w.uid = @configs.user
10
+ w.gid = @configs.group
11
+ w.autostart = false
12
+
13
+ w.start = "mongrel_rails cluster::start -C /etc/mongrel_cluster/app.yml --clean --only #{port}"
14
+ w.stop = "mongrel_rails cluster::stop -C /etc/mongrel_cluster/app.yml --clean --only #{port}"
15
+ w.restart = "sleep #{i*rolling_delay}; mongrel_rails cluster::restart -C /etc/mongrel_cluster/app.yml --clean --only #{port}"
16
+
17
+ w.pid_file = "/mnt/app/shared/log/mongrel.#{port}.pid"
18
+ w.grace = 60.seconds
19
+
20
+ default_configurations(w)
21
+ create_pid_dir(w)
22
+ restart_if_resource_hog(w, :memory_usage => 170.megabytes) do |restart|
23
+ restart.condition(:http_response_code) do |c|
24
+ c.code_is_not = %w(200 304)
25
+ c.host = '127.0.0.1'
26
+ c.path = '/'
27
+ c.port = port
28
+ c.timeout = 10.seconds
29
+ c.times = 2
30
+ end
31
+ end
32
+
33
+ monitor_lifecycle(w)
34
+ end
35
+ end
@@ -0,0 +1,17 @@
1
+ God.watch do |w|
2
+ w.name = 'mysql'
3
+ w.group = 'db'
4
+ w.autostart = false
5
+
6
+ w.start = "/etc/init.d/mysql start"
7
+ w.stop = "/etc/init.d/mysql stop;"
8
+ w.restart = "/etc/init.d/mysql restart"
9
+
10
+ w.pid_file = "/var/run/mysqld/mysqld.pid"
11
+ w.grace = 60.seconds
12
+
13
+ default_configurations(w)
14
+ create_pid_dir(w)
15
+ restart_if_resource_hog(w, :memory_usage => false)
16
+ monitor_lifecycle(w)
17
+ end
@@ -0,0 +1,18 @@
1
+ # here we have an example script which is not daemonized.
2
+ #
3
+ # Make sure that mq_poller requires the right libraries and runs in a loop...
4
+
5
+ God.watch do |w|
6
+ w.name = 'queue'
7
+ w.group = 'app'
8
+
9
+ w.uid = @configs.user
10
+ w.gid = @configs.group
11
+ w.autostart = false
12
+
13
+ w.start = "/usr/local/ec2onrails/bin/rails_env #{APP_ROOT}/script/mq_poller"
14
+
15
+ default_configurations(w)
16
+ restart_if_resource_hog(w)
17
+ monitor_lifecycle(w)
18
+ end
@@ -0,0 +1,35 @@
1
+ # For TextMate users, change the language type (at bottom of window, next to line/column counter, to ruby)
2
+ #
3
+ applog(nil, :info, "loading /etc/god/master.conf")
4
+
5
+ require '/usr/local/ec2onrails/lib/god_helper'
6
+ require "fileutils"
7
+
8
+ include GodHelper
9
+
10
+ APP_ROOT = "/mnt/app/current"
11
+ RAILS_ENV = `/usr/local/ec2onrails/bin/rails_env`.strip
12
+
13
+
14
+ @configs = GodHelper::Configs.new
15
+
16
+ God.pid_file_directory = "/var/run/god"
17
+ God.load "/etc/god/*.god"
18
+
19
+ applog(nil, :info, "about to load application specific configs at #{APP_ROOT}/config/god/#{RAILS_ENV}/*.god")
20
+
21
+ God.load "#{APP_ROOT}/config/god/#{RAILS_ENV}/*.god"
22
+
23
+
24
+ # at the end, we want to init the correct services
25
+ # need to put it into a thread because god is not finished
26
+ # initalizing at this point, so we need to let it finish
27
+ # so we can call init_services, which calls god directly
28
+ #
29
+ # using a fork copies over the processing space, causing
30
+ # god to reload again..and again...and again...
31
+ Thread.new do
32
+ sleep(2)
33
+ applog(nil, :info, "initializing services....")
34
+ system("/usr/local/ec2onrails/bin/init_services.rb")
35
+ end
@@ -0,0 +1,15 @@
1
+ God.watch do |w|
2
+ w.name = "memcached"
3
+ w.group = 'memcache'
4
+ w.autostart = false
5
+
6
+ w.start = "/etc/init.d/memcached start"
7
+ w.stop = "/etc/init.d/memcached stop"
8
+ w.restart = "/etc/init.d/memcached restart"
9
+ w.pid_file = "/var/run/memcached.pid"
10
+ w.grace = 10.seconds
11
+
12
+ default_configurations(w)
13
+ restart_if_resource_hog(w, :memory_usage => false)
14
+ monitor_lifecycle(w)
15
+ end
@@ -0,0 +1,14 @@
1
+ God::Contacts::Email.message_settings = {
2
+ :from => 'app@localhost'
3
+ }
4
+
5
+ God::Contacts::Email.server_settings = {
6
+ :address => 'localhost',
7
+ :port => 25
8
+ }
9
+
10
+ God.contact(:email) do |c|
11
+ c.name = 'app'
12
+ c.email = 'app@localhost'
13
+ c.group = 'default'
14
+ end
@@ -0,0 +1,34 @@
1
+ God.watch do |w|
2
+ w.name = "system-checks"
3
+ w.start = true
4
+ w.interval = 10.minutes
5
+
6
+
7
+ w.behavior(:clean_pid_file)
8
+
9
+
10
+ # lifecycle
11
+ w.lifecycle do |on|
12
+ on.condition(:disk_usage) do |c|
13
+ c.mount_point = "/"
14
+ c.above = 75
15
+ end
16
+
17
+ on.condition(:disk_usage) do |c|
18
+ c.mount_point = "/mng"
19
+ c.above = 75
20
+ end
21
+
22
+ # on.condition(:memory_usage) do |c|
23
+ # c.above = 170.megabytes
24
+ # c.times = [3, 5] # 3 out of 5 intervals
25
+ # end
26
+
27
+ on.condition(:cpu_usage) do |c|
28
+ c.above = 90.percent
29
+ c.times = [5, 8]
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,36 @@
1
+ nginx_enabled = system("which nginx 2>&1 > /dev/null")
2
+
3
+ God.watch do |w|
4
+ applog(w, :info, "web: using #{nginx_enabled ? 'nginx' : 'apache2'}")
5
+
6
+ if nginx_enabled
7
+ w.name = "nginx"
8
+ w.start = "/etc/init.d/nginx start"
9
+ w.stop = "/etc/init.d/nginx stop"
10
+ w.restart = "/etc/init.d/nginx restart"
11
+ w.pid_file = "/var/run/nginx.pid"
12
+ else
13
+ w.name = "apache"
14
+ w.start = "/etc/init.d/apache2 start"
15
+ w.stop = "/etc/init.d/apache2 stop"
16
+ w.restart = "/etc/init.d/apache2 restart"
17
+ w.pid_file = "/var/run/apache2.pid"
18
+ end
19
+ w.grace = 5.seconds
20
+ w.group = 'web'
21
+ w.autostart = false
22
+
23
+ default_configurations(w)
24
+ restart_if_resource_hog(w, :memory_usage => 250.megabytes) do |restart|
25
+ restart.condition(:http_response_code) do |c|
26
+ c.host = '127.0.0.1'
27
+ c.port = 80
28
+ c.path = '/'
29
+ c.code_is_not = 200
30
+ c.timeout = 15.seconds
31
+ c.times = [3, 5] # 3 out of 5 intervals
32
+ end
33
+ end
34
+
35
+ monitor_lifecycle(w)
36
+ end
@@ -0,0 +1,29 @@
1
+ #!/bin/sh
2
+
3
+ # This file is part of EC2 on Rails.
4
+ # http://rubyforge.org/projects/ec2onrails/
5
+ #
6
+ # Copyright 2007 Paul Dowman, http://pauldowman.com/
7
+ #
8
+ # EC2 on Rails is free software; you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation; either version 2 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # EC2 on Rails is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+
21
+
22
+ # This script runs the ec2 startup scripts
23
+
24
+ # this is an ugly hack to make sure DHCP initialization is finished:
25
+ sleep 15
26
+
27
+ for SCRIPT in `ls -I README /usr/local/ec2onrails/startup-scripts/every-startup` ; do
28
+ "/usr/local/ec2onrails/startup-scripts/every-startup/$SCRIPT"
29
+ done
@@ -0,0 +1,36 @@
1
+ #!/bin/sh
2
+
3
+ # This file is part of EC2 on Rails.
4
+ # http://rubyforge.org/projects/ec2onrails/
5
+ #
6
+ # Copyright 2007 Paul Dowman, http://pauldowman.com/
7
+ #
8
+ # EC2 on Rails is free software; you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation; either version 2 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # EC2 on Rails is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+
21
+
22
+ # This script runs the ec2 startup scripts
23
+
24
+ FILE=/ec2onrails-first-boot
25
+
26
+ if [ -e $FILE ] ; then
27
+
28
+ # this is an ugly hack to make sure DHCP initialization is finished:
29
+ sleep 15
30
+
31
+ for SCRIPT in `ls -I README /usr/local/ec2onrails/startup-scripts/first-startup` ; do
32
+ "/usr/local/ec2onrails/startup-scripts/first-startup/$SCRIPT"
33
+ done
34
+
35
+ rm $FILE
36
+ fi
@@ -0,0 +1,42 @@
1
+ #!/bin/bash
2
+ #
3
+ # god Startup script for god (http://god.rubyforge.org)
4
+ #
5
+ # chkconfig: - 85 15
6
+ # description: God is an easy to configure, easy to extend monitoring \
7
+ # framework written in Ruby.
8
+ #
9
+
10
+ CONF_DIR=/etc/god
11
+
12
+ RETVAL=0
13
+
14
+ # Go no further if config directory is missing.
15
+ [ -d "$CONF_DIR" ] || exit 0
16
+
17
+ case "$1" in
18
+ start)
19
+ # Create pid directory
20
+ ruby /usr/bin/god -c $CONF_DIR/master.conf
21
+ RETVAL=$?
22
+ ;;
23
+ stop)
24
+ ruby /usr/bin/god quit
25
+ RETVAL=$?
26
+ ;;
27
+ restart)
28
+ ruby /usr/bin/god quit
29
+ ruby /usr/bin/god -c $CONF_DIR/master.conf
30
+ RETVAL=$?
31
+ ;;
32
+ status)
33
+ ruby /usr/bin/god status
34
+ RETVAL=$?
35
+ ;;
36
+ *)
37
+ echo "Usage: god {start|stop|restart|status}"
38
+ exit 1
39
+ ;;
40
+ esac
41
+
42
+ exit $RETVAL
@@ -0,0 +1,78 @@
1
+ #!/bin/sh
2
+
3
+ #This is a start script for nginx. Tested on Unbuntu Edge.
4
+ #Should work on Ubuntu, Debian and probably a few other Linux distros.
5
+ #Change DAEMON and CONFIG_FILE if neccessary
6
+
7
+ PATH=/sbin:/bin:/usr/sbin:/usr/bin
8
+
9
+
10
+ #Location of nginx binary. Change path as neccessary
11
+ DAEMON=/usr/sbin/nginx
12
+ # DAEMON=/usr/local/nginx/sbin/nginx
13
+ #Location of configuration file. Change path as neccessary
14
+ CONFIG_FILE=/etc/nginx/nginx.conf
15
+ # CONFIG_FILE=/usr/local/nginx/conf/nginx.conf
16
+
17
+
18
+ DAEMON_OPTS="-c $CONFIG_FILE"
19
+ NAME=nginx
20
+ DESC="web server"
21
+ PIDFILE=/var/run/$NAME.pid
22
+ SCRIPTNAME=/etc/init.d/$NAME
23
+
24
+
25
+ #only run if binary can be found
26
+ test -x $DAEMON || exit 0
27
+
28
+ set -e
29
+
30
+ #import init-functions
31
+ . /lib/lsb/init-functions
32
+
33
+ case "$1" in
34
+ start)
35
+ log_daemon_msg "Starting $DESC" $NAME
36
+ if ! start-stop-daemon --start --quiet\
37
+ --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS ; then
38
+ log_end_msg 1
39
+ else
40
+ log_end_msg 0
41
+ fi
42
+ ;;
43
+ stop)
44
+ log_daemon_msg "Stopping $DESC" $NAME
45
+ if start-stop-daemon --quiet --stop --oknodo --retry 30\
46
+ --pidfile $PIDFILE --exec $DAEMON; then
47
+ rm -f $PIDFILE
48
+ log_end_msg 0
49
+ else
50
+ log_end_msg 1
51
+ fi
52
+ ;;
53
+ reload)
54
+ log_daemon_msg "Reloading $DESC configuration" $NAME
55
+ if start-stop-daemon --stop --signal 2 --oknodo --retry 30\
56
+ --quiet --pidfile $PIDFILE --exec $DAEMON; then
57
+ if start-stop-daemon --start --quiet \
58
+ --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS ; then
59
+ log_end_msg 0
60
+ else
61
+ log_end_msg 1
62
+ fi
63
+ else
64
+ log_end_msg 1
65
+ fi
66
+ ;;
67
+ restart|force-reload)
68
+ $0 stop
69
+ sleep 1
70
+ $0 start
71
+ ;;
72
+ *)
73
+ echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
74
+ exit 1
75
+ ;;
76
+ esac
77
+
78
+ exit 0