skippy-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 +159 -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/capistrano_utils.rb +43 -0
  12. data/lib/ec2onrails/recipes.rb +844 -0
  13. data/lib/ec2onrails/version.rb +31 -0
  14. data/lib/ec2onrails.rb +20 -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 +149 -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 +242 -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,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
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ /usr/local/ec2onrails/bin/set_roles.rb
@@ -0,0 +1,16 @@
1
+ /mnt/log/apache2/*.log {
2
+ daily
3
+ missingok
4
+ dateext
5
+ create 640 root app
6
+ compress
7
+ notifempty
8
+ sharedscripts
9
+ extension gz
10
+ copytruncate
11
+ postrotate
12
+ if [ -f /var/run/apache2.pid ]; then
13
+ /etc/init.d/apache2 reload > /dev/null
14
+ fi
15
+ endscript
16
+ }
@@ -0,0 +1,11 @@
1
+ /mnt/app/current/log/*/*.log /mnt/app/current/log/*.log {
2
+ daily
3
+ missingok
4
+ dateext
5
+ rotate 365
6
+ compress
7
+ notifempty
8
+ sharedscripts
9
+ extension gz
10
+ copytruncate
11
+ }
@@ -0,0 +1,11 @@
1
+ /mnt/log/nginx/*.log {
2
+ daily
3
+ missingok
4
+ dateext
5
+ compress
6
+ create 640 root app
7
+ notifempty
8
+ sharedscripts
9
+ extension gz
10
+ copytruncate
11
+ }
@@ -0,0 +1,47 @@
1
+ # memcached default config file
2
+ # 2003 - Jay Bonci <jaybonci@debian.org>
3
+ # This configuration file is read by the start-memcached script provided as
4
+ # part of the Debian GNU/Linux distribution.
5
+
6
+ # Run memcached as a daemon. This command is implied, and is not needed for the
7
+ # daemon to run. See the README.Debian that comes with this package for more
8
+ # information.
9
+ -d
10
+
11
+ # Log memcached's output to /var/log/memcached
12
+ logfile /mnt/log/memcached.log
13
+
14
+ # Be verbose
15
+ # -v
16
+
17
+ # Be even more verbose (print client commands as well)
18
+ # -vv
19
+
20
+ # Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
21
+ # Note that the daemon will grow to this size, but does not start out holding this much
22
+ # memory
23
+ -m 128
24
+
25
+ # Default connection port is 11211
26
+ -p 11211
27
+
28
+ # Run the daemon as root. The start-memcached will default to running as root if no
29
+ # -u command is present in this config file
30
+ -u nobody
31
+
32
+ # Specify which IP address to listen on. The default is to listen on all IP addresses
33
+ # This parameter is one of the only security measures that memcached has, so make sure
34
+ # it's listening on a firewalled interface.
35
+ #-l 127.0.0.1
36
+
37
+ # Limit the number of simultaneous incoming connections. The daemon default is 1024
38
+ # -c 1024
39
+
40
+ # Lock down all paged memory. Consult with the README and homepage before you do this
41
+ # -k
42
+
43
+ # Return error when memory is exhausted (rather than removing items)
44
+ # -M
45
+
46
+ # Maximize core file limit
47
+ # -r
@@ -0,0 +1,9 @@
1
+ ---
2
+ cwd: /mnt/app/current
3
+ port: "8000"
4
+ environment: production
5
+ pid_file: log/mongrel.pid
6
+ servers: 6
7
+ daemon: true
8
+ user: app
9
+ group: app
@@ -0,0 +1,13 @@
1
+
2
+ EC2 on Rails
3
+ !!VERSION!!
4
+ http://rubyforge.org/projects/ec2onrails/
5
+
6
+ Copyright 2008 Paul Dowman, http://pauldowman.com/
7
+
8
+ Base AMI built using Eric Hammond's EC2 Ubuntu script:
9
+ http://alestic.com/
10
+
11
+ This is free software, and you are welcome to redistribute it under
12
+ certain conditions. This software comes with ABSOLUTELY NO WARRANTY.
13
+ See /usr/local/ec2onrails/COPYING for details.
@@ -0,0 +1,149 @@
1
+ #
2
+ # The MySQL database server configuration file.
3
+ #
4
+ # You can copy this to one of:
5
+ # - "/etc/mysql/my.cnf" to set global options,
6
+ # - "~/.my.cnf" to set user-specific options.
7
+ #
8
+ # One can use all long options that the program supports.
9
+ # Run program with --help to get a list of available options and with
10
+ # --print-defaults to see which it would actually understand and use.
11
+ #
12
+ # For explanations see
13
+ # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
14
+
15
+ # This will be passed to all mysql clients
16
+ # It has been reported that passwords should be enclosed with ticks/quotes
17
+ # escpecially if they contain "#" chars...
18
+ # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
19
+ [client]
20
+ port = 3306
21
+ socket = /var/run/mysqld/mysqld.sock
22
+
23
+ # Here is entries for some specific programs
24
+ # The following values assume you have at least 32M ram
25
+
26
+ # This was formally known as [safe_mysqld]. Both versions are currently parsed.
27
+ [mysqld_safe]
28
+ socket = /var/run/mysqld/mysqld.sock
29
+ nice = 0
30
+
31
+ [mysqld]
32
+ #
33
+ # * Basic Settings
34
+ #
35
+ user = mysql
36
+ pid-file = /var/run/mysqld/mysqld.pid
37
+ socket = /var/run/mysqld/mysqld.sock
38
+ port = 3306
39
+ basedir = /usr
40
+ datadir = /mnt/mysql_data
41
+ tmpdir = /mnt/mysql_data/tmp
42
+ language = /usr/share/mysql/english
43
+ skip-external-locking
44
+ default-storage-engine = InnoDB
45
+
46
+ #
47
+ # Instead of skip-networking the default is now to listen only on
48
+ # localhost which is more compatible and is not less secure.
49
+ #bind-address = 127.0.0.1
50
+ #
51
+ # * Fine Tuning
52
+ #
53
+ key_buffer_size = 16M
54
+ max_allowed_packet = 16M
55
+ thread_stack = 128K
56
+ thread_cache_size = 8
57
+ #max_connections = 100
58
+ #table_cache = 64
59
+ #thread_concurrency = 10
60
+ #
61
+ # * Query Cache Configuration
62
+ #
63
+ query_cache_limit = 1M
64
+ query_cache_size = 64M
65
+ #
66
+ # * Logging and Replication
67
+ #
68
+ # Both location gets rotated by the cronjob.
69
+ # Be aware that this log type is a performance killer.
70
+ #log = /var/log/mysql/mysql.log
71
+ #
72
+ # Error logging goes to syslog. This is a Debian improvement :)
73
+ #
74
+ # Here you can see queries with especially long duration
75
+ log_slow_queries = /mnt/log/mysql/mysql-slow.log
76
+ long_query_time = 2
77
+ log-queries-not-using-indexes
78
+ #
79
+ # The following can be used as easy to replay backup logs or for replication.
80
+ #server-id = 1
81
+ log_bin = /mnt/log/mysql/mysql-bin.log
82
+ # WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!
83
+ expire_logs_days = 10
84
+ max_binlog_size = 100M
85
+ #binlog_do_db = include_database_name
86
+ #binlog_ignore_db = include_database_name
87
+ #
88
+ # * BerkeleyDB
89
+ #
90
+ # Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
91
+ skip-bdb
92
+ #
93
+ # * InnoDB
94
+ #
95
+ # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
96
+ # Read the manual for more InnoDB related options. There are many!
97
+ # You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
98
+ #skip-innodb
99
+ innodb_data_file_path=ibdata1:100M:autoextend
100
+ innodb_buffer_pool_size=200M
101
+ innodb_additional_mem_pool_size=20M
102
+ innodb_log_file_size=128M
103
+ innodb_log_buffer_size=8M
104
+ innodb_flush_log_at_trx_commit=1
105
+ innodb_lock_wait_timeout=20
106
+ # innodb_flush_method=O_DIRECT
107
+ innodb_file_per_table
108
+
109
+ #
110
+ # * Security Features
111
+ #
112
+ # Read the manual, too, if you want chroot!
113
+ # chroot = /var/lib/mysql/
114
+ #
115
+ # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
116
+ #
117
+ # ssl-ca=/etc/mysql/cacert.pem
118
+ # ssl-cert=/etc/mysql/server-cert.pem
119
+ # ssl-key=/etc/mysql/server-key.pem
120
+
121
+
122
+
123
+ [mysqldump]
124
+ quick
125
+ quote-names
126
+ max_allowed_packet = 16M
127
+
128
+ [mysql]
129
+ #no-auto-rehash # faster start of mysql but no tab completition
130
+
131
+ [isamchk]
132
+ key_buffer = 16M
133
+
134
+ #
135
+ # * NDB Cluster
136
+ #
137
+ # See /usr/share/doc/mysql-server-*/README.Debian for more information.
138
+ #
139
+ # The following configuration is read by the NDB Data Nodes (ndbd processes)
140
+ # not from the NDB Management Nodes (ndb_mgmd processes).
141
+ #
142
+ # [MYSQL_CLUSTER]
143
+ # ndb-connectstring=127.0.0.1
144
+
145
+
146
+ #
147
+ # * IMPORTANT: Additional settings that can override those from this file!
148
+ #
149
+ !includedir /etc/mysql/conf.d/