mongrel_cluster with Nonconsecutive Ports 2
Need to operate mongrel_cluster with nonconsecutive ports? No problem.
WebFaction assigns ports to its users through the control panel. By design, the panel assigns ports in such a way that users hoping to officially stake claim to a consecutive block of ports are out of luck. Ports that the panel intentionally does not assign can be put to use, but let us suppose that this practice is frowned upon. If you are interested in running mongrel_cluster, walking the line requires a little bit of effort. Out of the box, mongrel_cluster spawns mongrel_rails listeners on consecutive ports. Configuration is limited to specifying the first port and the number of instances. The situation outlined requires a more precise port configuration and that in turn requires modification the the mongrel_cluster code. Luckily, this modification comes down to a one line addition.
The file requiring modification is lib/mongrel_cluster/init.rb inside the mongrel_cluster gem directory. The easiest way to find and open this file for editing is to execute the following command:
nano `locate lib/mongrel_cluster/init.rb`
Locate the read_options method. In version 1.0.5, it should read:
def read_options
@options = {
"environment" => ENV['RAILS_ENV'] || "development",
"port" => 3000,
"pid_file" => "tmp/pids/mongrel.pid",
"log_file" => "log/mongrel.log",
"servers" => 2
}
conf = YAML.load_file(@config_file)
@options.merge! conf if conf
process_pid_file @options["pid_file"]
process_log_file @options["log_file"]
start_port = end_port = @only
start_port ||= @options["port"].to_i
end_port ||= start_port + @options["servers"] - 1
@ports = (start_port..end_port).to_a
end
Add the following line to the end of the method:
@ports = @options["ports"] if @options["ports"] && !@only
What this addition does is acknowledge a parameter named ‘ports’ in config/mongrel_cluster.yml. Unless a single port is specified on the command line using the --only option, ‘ports’ will be respected over the ‘port’ and ‘servers’ parameters used to specify a continuous range. The ‘ports’ parameter should be accompanied by an array of integers in YAML format. An example mongrel_cluster.yml file that defines nonconsecutive ports follows:
---
cwd: /home/user/webapps/railsapp
environment: production
user: user
group: user
address: 127.0.0.1
log_file: log/mongrel.log
pid_file: tmp/pids/mongrel.pid
ports:
- 3333
- 3335
- 3359
- 3401
The one line addition does not allow you to define discontinuous ports on the command line. You must edit mongrel_cluster.yml to do so. This is merely a matter of convenience and has no operational impact whatsoever.
Comments
nxyrtdl5gu8uvkq0 http://eouswledijcn.com >rpjmlg oheggimf http://jiaxxdqylg.com http://wwpgzpeued.com >hplghc npgexjn http://vdqort.com http://urouxngbiusz.com >dovlwd whzotaj http://gtakcxzfhhmq.com http://fiwzbhnw.com >lbikqg fxof http://iufbex.com http://vdqxjrgzcdn.com >smopm wgmyne http://duodvbubmmtd.com http://rqfiyqhok.com >magvu odjm http://xyulyjwuo.com http://coprskqp.com >wfyrkg rgppvo http://caianwq.com http://kmaolyifnotw.com >dtqgh nvkyymvl http://tevpckbmwow.com http://pfpfjze.com >yfzlsak ytfoyp http://wvuqdylevyis.com http://wtibbbg.com >ugsdmst ibjr http://jfdhxqbsqiff.com
nxyrtdl5gu8uvkq0 http://ggjxjnwxjd.com >lcryyl gutzslb http://nqrffoevrofg.com http://rrmqasaajace.com >cxyqtyg vcnc http://qahseg.com http://xamkeylgtfas.com >oxvjdub zxifb http://eqhntjey.com http://dumdyqy.com >luacf yaneohx http://kxguqvseyf.com http://dxppxdx.com >npylbek itety http://bqfsakksgypu.com http://ugdatibbof.com >vkammxm vqpxbxei http://dpqdohhc.com http://slbhexbpl.com >dbjirx gbblqo http://yjbovxhefol.com http://mfaile.com >sgvyewt dykvc http://tltgxgc.com http://ehcqqozu.com >aqhzsgj kqfvh http://krrmylfo.com http://ifiqmvvppan.com >jocsq haewepx http://wcbzvgolm.com