1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00

cap 2 recipes

git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@641 19e92222-5c0b-0410-8929-a290d50e31e9
This commit is contained in:
evanweaver 2007-10-11 07:30:46 +00:00
parent 370a88b2e4
commit 514135c040
2 changed files with 154 additions and 25 deletions

View file

@ -3,45 +3,57 @@
Tool to help start/stop/restart multiple mongrel servers to use behind a load balancer like Apache 2.2 (mod_proxy_balancer), Lighttpd, Pound, Pen or Balance. This plugin adds an option to specify a number of Mongrel servers to launch, a range of ports, and a configuration file for the cluster. Use "-h" to see command syntax. Tool to help start/stop/restart multiple mongrel servers to use behind a load balancer like Apache 2.2 (mod_proxy_balancer), Lighttpd, Pound, Pen or Balance. This plugin adds an option to specify a number of Mongrel servers to launch, a range of ports, and a configuration file for the cluster. Use "-h" to see command syntax.
Configure cluster and write configuration file: Configure cluster and write configuration file:
mongrel_rails cluster::configure mongrel_rails cluster::configure
Start cluster: Start cluster:
mongrel_rails cluster::start mongrel_rails cluster::start
Restart cluster: Restart cluster:
mongrel_rails cluster::restart mongrel_rails cluster::restart
Stop cluster: Stop cluster:
mongrel_rails cluster::stop mongrel_rails cluster::stop
Capistrano Recipe == Capistrano 1.0 Recipes
Add to config/deploy.rb: Add to config/deploy.rb:
require 'mongrel_cluster/recipes' require 'mongrel_cluster/recipes'
Example usage: Variables:
cap -a configure_mongrel_cluster mongrel_servers: Number of Mongrel servers to start.
mongrel_port: Starting port to bind to.
Variables mongrel_address: Address to bind to.
mongrel_servers: Number of Mongrel servers to start. mongrel_environment: Rails environment to run as.
mongrel_port: Starting port to bind to. mongrel_conf: Path to conf file. Defaults to /etc/mongrel_cluster/app_name.conf
mongrel_address: Address to bind to. mongrel_user: User to run mongrels in cluster as. Unset by default
mongrel_environment: Rails environment to run as. mongrel_group: Group to run mongrels in cluster as. Unset by default.
mongrel_conf: Path to conf file. Defaults to /etc/mongrel_cluster/app_name.conf
mongrel_user: User to run mongrels in cluster as. Unset by default
mongrel_group: Group to run mongrels in cluster as. Unset by default.
Tasks (performed on :app role) Tasks (performed on :app role)
configure_mongrel_cluster: Configure the cluster with variables. configure_mongrel_cluster: Configure the cluster with variables.
start_mongrel_cluster: Start Mongrel processes on the app server. start_mongrel_cluster: Start Mongrel processes on the app server.
stop_mongrel_cluster: Stop the Mongrel processes on the app server. stop_mongrel_cluster: Stop the Mongrel processes on the app server.
restart_mongrel_cluster: Restart the Mongrel processes on the app server by starting and stopping mongrel_cluster. restart_mongrel_cluster: Restart the Mongrel processes on the app server by starting and stopping mongrel_cluster.
restart: Calls restart_mongrel_cluster to allow Mongrel to be used with the standard Capistrano deploy task. restart: Calls restart_mongrel_cluster to allow Mongrel to be used with the standard Capistrano deploy task.
spinner: Calls start_mongrel_cluster to allow Mongrel to be used with the standard Capistrano cold_deploy task. spinner: Calls start_mongrel_cluster to allow Mongrel to be used with the standard Capistrano cold_deploy task.
== Capistrano 2.0 Recipes
Add to config/deploy.rb:
require 'mongrel_cluster/recipes_2'
Capistrano 2.0 uses namespaced tasks. The new task names are:
mongrel:cluster:configure Configure the cluster with variables.
mongrel:cluster:start: Start Mongrel processes on the app server.
mongrel:cluster:stop: Stop the Mongrel processes on the app server.
mongrel:cluster:restart: Restart the Mongrel processes on the app server by starting and stopping mongrel_cluster.
deploy:restart: Calls mongrel:cluster:restart to allow Mongrel to be used with the standard Capistrano deploy task.
deploy:start: Calls mongrel:cluster:start to allow Mongrel to be used with the standard Capistrano deploy task.
deploy:stop: Calls mongrel:cluster:stop to allow Mongrel to be used with the standard Capistrano deploy task.
== Starting clusters at boot
Supporting starting clusters on boot.
1. Create mongrel_cluster conf directory (/etc/mongrel_cluster). 1. Create mongrel_cluster conf directory (/etc/mongrel_cluster).
2. Assign ownership to your capistrano user. 2. Assign ownership to your Capistrano user.
3. Copy the init.d script from this gem's resouces directory /etc/init.d. 3. Copy the init.d script from this gem's resouces directory /etc/init.d.
4. chmod +x /etc/init.d/mongrel_cluster 4. chmod +x /etc/init.d/mongrel_cluster
5. Add to init.d startup. On RHEL/CentOS use: /sbin/chkconfig --level 345 mongrel_cluster on 5. Add to init.d startup. On RHEL/CentOS use: /sbin/chkconfig --level 345 mongrel_cluster on

View file

@ -0,0 +1,117 @@
Capistrano::Configuration.instance.load do
set :mongrel_servers, 2
set :mongrel_port, 8000
set :mongrel_address, "127.0.0.1"
set :mongrel_environment, "production"
set :mongrel_conf, nil
set :mongrel_user, nil
set :mongrel_group, nil
set :mongrel_prefix, nil
set :mongrel_rails, 'mongrel_rails'
set :mongrel_clean, false
set :mongrel_pid_file, nil
set :mongrel_log_file, nil
set :mongrel_config_script, nil
namespace :mongrel do
namespace :cluster do
desc <<-DESC
Configure Mongrel processes on the app server. This uses the :use_sudo
variable to determine whether to use sudo or not. By default, :use_sudo is
set to true.
DESC
task :configure, :roles => :app do
set_conf
argv = []
argv << "#{mongrel_rails} cluster::configure"
argv << "-N #{mongrel_servers.to_s}"
argv << "-p #{mongrel_port.to_s}"
argv << "-e #{mongrel_environment}"
argv << "-a #{mongrel_address}"
argv << "-c #{current_path}"
argv << "-C #{mongrel_conf}"
argv << "-P #{mongrel_pid_file}" if mongrel_pid_file
argv << "-l #{mongrel_log_file}" if mongrel_log_file
argv << "--user #{mongrel_user}" if mongrel_user
argv << "--group #{mongrel_group}" if mongrel_group
argv << "--prefix #{mongrel_prefix}" if mongrel_prefix
argv << "-S #{mongrel_config_script}" if mongrel_config_script
cmd = argv.join " "
send(run_method, cmd)
end
desc <<-DESC
Start Mongrel processes on the app server. This uses the :use_sudo variable to determine whether to use sudo or not. By default, :use_sudo is
set to true.
DESC
task :start , :roles => :app do
set_conf
cmd = "#{mongrel_rails} cluster::start -C #{mongrel_conf}"
cmd += " --clean" if mongrel_clean
send(run_method, cmd)
end
desc <<-DESC
Restart the Mongrel processes on the app server by starting and stopping the cluster. This uses the :use_sudo
variable to determine whether to use sudo or not. By default, :use_sudo is set to true.
DESC
task :restart , :roles => :app do
set_conf
cmd = "#{mongrel_rails} cluster::restart -C #{mongrel_conf}"
cmd += " --clean" if mongrel_clean
send(run_method, cmd)
end
desc <<-DESC
Stop the Mongrel processes on the app server. This uses the :use_sudo
variable to determine whether to use sudo or not. By default, :use_sudo is
set to true.
DESC
task :stop , :roles => :app do
set_conf
cmd = "#{mongrel_rails} cluster::stop -C #{mongrel_conf}"
cmd += " --clean" if mongrel_clean
send(run_method, cmd)
end
desc <<-DESC
Check the status of the Mongrel processes on the app server. This uses the :use_sudo
variable to determine whether to use sudo or not. By default, :use_sudo is
set to true.
DESC
task :status , :roles => :app do
set_conf
send(run_method, "#{mongrel_rails} cluster::status -C #{mongrel_conf}")
end
def set_conf
set :mongrel_conf, "/etc/mongrel_cluster/#{application}.yml" unless mongrel_conf
end
end
end
namespace :deploy do
desc <<-DESC
Restart the Mongrel processes on the app server by calling mongrel:cluster:restart.
DESC
task :restart, :roles => :app do
mongrel.cluster.restart
end
desc <<-DESC
Start the Mongrel processes on the app server by calling mongrel:cluster:start.
DESC
task :start, :roles => :app do
mongrel.cluster.start
end
desc <<-DESC
Stop the Mongrel processes on the app server by calling mongrel:cluster:stop.
DESC
task :stop, :roles => :app do
mongrel.cluster.stop
end
end
end