Hey y'all: mongrel_cluster provides management tools for running Mongrel behind a reverse-proxy/load balancer. It is an extraction from Rails Machine, a deployment service and Ruby library that simplifies Rails application deployment. This release fixes bugs and adds a Capistrano task library. Changes: -changed pid file format to include port -only write configuration options that are explicitly specified or required. -removed some validation rules and delegate to mongrel_rails. -added Capistrano task library. Please rerun mongrel_rails cluster::configure to ensure smooth operation. ***Capistrano Recipe*** Add to config/deploy.rb: require 'mongrel_cluster/recipes' Example usage: cap -a configure_mongrel_cluster Variables mongrel_servers: Number of Mongrel servers to start. mongrel_port: Starting port to bind to. mongrel_address: Address to bind to. mongrel_environment: Rails environment to run as. mongrel_config: Path to config file. use_sudo: Whether or not tasks that can use sudo, ought to use sudo. Capistrano defaults to true. Tasks (performed on :app role) configure_mongrel_cluster: Configure the cluster with variables. Uses sudo if use_sudo is true. start_mongrel_cluster: Start Mongrel processes on the app server. Uses sudo if use_sudo is true. stop_mongrel_cluster: Stop the Mongrel processes on the app server. Uses sudo if use_sudo is true. restart_mongrel_cluster: Restart the Mongrel processes on the app server. Uses sudo if use_sudo is true. 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. Good luck and let me know how it works for ya! Thanks, Bradley Taylor ------ Rails Machine Simplified web application deployment http://railsmachine.com
on 2006-05-03 20:57
on 2006-05-04 18:56
Uff, I got lost. I had mongrel_cluster 0.1working fine, even with capistrano (my own hack). Then came mongrel_cluster 0.1.1 and I tried to set it up, but somehow I messed up things and nothing worked anymore. So here what I did: on production machine: (debian linux, rails 1.1) ------------------------------------------------------------- - installing mongrel_cluster 0.1.1 on development machine**: (windows XP, raills 1.1) ----------------------------------------------------------------------- - inststalling mongrel_cluster 0.1.1 - recreating config file: mongrel_rails cluster::configure - modifying configfile manually to make it look like this: (will be more the one server later) --- num-procs: 1024 docroot: public timeout: 120 cwd: /home/me/sites/myapp/current log_file: log/mongrel.log port: 3000 config_script: debug: false environment: production servers: 1 pid_file: log/mongrel.pid address: 0.0.0.0 mime_map: - deploy.rb: commented out my old restart and spinner tasks and added: require 'mongrel_cluster/recipes' - deployment: rake deploy (fails because config file is at: /home/me/sites/myapp/current/config/mongrel_cluster.yml) ... executing "mongrel_rails cluster::restart -C /home/me/sites/myapp/config/mongrel_cluster.yml" ... then I thought I could give "cap -a configure_mongrel_cluster" a try, hoping it would put things into the right order, but I got this: ** [out :: xx.xx.xx.xx] !!! Path to log file not valid: log/mongrel.log ** [out :: xx.xx.xx.xx] cluster::configure reported an error. Use -h to get help. So what is wrong with the way I approached capistrano mongrel_cluster ? regards Roberto
on 2006-05-08 11:52
bradley taylor wrote: > Hey y'all: > mongrel_cluster provides management tools for running Mongrel behind > a reverse-proxy/load balancer. It is an extraction from Rails > Machine, a deployment service and Ruby library that simplifies Rails > application deployment. This release fixes bugs and adds a Capistrano > task library. > > Good luck and let me know how it works for ya! This has been VERY helpful, thanks! Two things have come to mind that might be helpful to include in a future release: 1. Parse the mongrel_cluster.yml file through ERB, like Rails does for the fixtures and database.yml file. Would allow for things like setting the CWD to ENV['HOME'], etc. Rails uses: YAML::load(ERB.new(IO.read(database_configuration_file)).result) 2. Provide a cluster command for starting up "missing" Mongrel servers. The issue is that "restart" only restarts processes that are actually running. And just running "start" will do _bad_ things if you just run it; it appears to put a new pid into the .pid file, but then fail to start up (since a process is running already on that port) -- the net effect is that the process is now orphaned, since you don't know the pid anymore. I guess I'm looking for something like the fcgi spinner, that can start up Mongrel processes if they die. And allow restarts to turn into a plain old start, if the target process isn't found.