2006-01-31 00:36:30 -05:00
|
|
|
= Mongrel: Simple Fast Mostly Ruby Web Server
|
2006-01-28 14:03:53 -05:00
|
|
|
|
|
|
|
Mongrel is a small library that provides a very fast HTTP 1.1 server for Ruby
|
|
|
|
web applications. It is not particular to any framework, and is intended to
|
|
|
|
be just enough to get a web application running behind a more complete and robust
|
|
|
|
web server.
|
|
|
|
|
|
|
|
What makes Mongrel so fast is the careful use of a C extension to provide fast
|
|
|
|
HTTP 1.1 protocol parsing and fast URI lookup. This combination makes the server
|
2006-01-31 00:36:30 -05:00
|
|
|
scream without too many portability issues.
|
2006-01-28 14:03:53 -05:00
|
|
|
|
2006-11-25 00:16:43 -05:00
|
|
|
You can view http://mongrel.rubyforge.org for more information.
|
2006-03-06 00:31:39 -05:00
|
|
|
|
|
|
|
== Quick Start
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-11 22:37:38 -05:00
|
|
|
After you've installed (either with gem install mongrel or via source) you should
|
|
|
|
have the mongrel_rails command available in your PATH. Then you just do the following:
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-11 22:37:38 -05:00
|
|
|
> cd myrailsapp
|
|
|
|
> mongrel_rails start
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-11 22:37:38 -05:00
|
|
|
This will start it in the foreground so you can play with it. It runs your application
|
|
|
|
in production mode. To get help do:
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-11 22:37:38 -05:00
|
|
|
> mongrel_rails start -h
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-11 22:37:38 -05:00
|
|
|
Finally, you can then start in background mode (probably won't work in win32):
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-11 22:37:38 -05:00
|
|
|
> mongrel_rails start -d
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-11 22:37:38 -05:00
|
|
|
And you can stop it whenever you like with:
|
|
|
|
|
|
|
|
> mongrel_rails stop
|
|
|
|
|
|
|
|
All of which should be done from your application's directory. It writes the
|
|
|
|
PID of the process you ran into log/mongrel.pid.
|
2006-02-11 14:35:06 -05:00
|
|
|
|
2006-02-14 07:19:02 -05:00
|
|
|
There are also many more new options for configuring the rails runner including
|
|
|
|
changing to a different directory, adding more MIME types, and setting processor
|
|
|
|
threads and timeouts.
|
2006-01-28 14:03:53 -05:00
|
|
|
|
2006-02-22 13:29:20 -05:00
|
|
|
|
2006-01-31 00:36:30 -05:00
|
|
|
== Install
|
2006-01-28 14:03:53 -05:00
|
|
|
|
2006-01-31 00:36:30 -05:00
|
|
|
It doesn't explicitly require Camping, but if you want to run the examples/camping/
|
|
|
|
examples then you'll need to install Camping 1.2 at least (and redcloth I think).
|
2006-01-28 14:03:53 -05:00
|
|
|
These are all available from RubyGems.
|
|
|
|
|
|
|
|
The library consists of a C extension so you'll need a C compiler or at least a friend
|
|
|
|
who can build it for you.
|
|
|
|
|
2006-01-31 00:36:30 -05:00
|
|
|
Finally, the source includes a setup.rb for those who hate RubyGems.
|
2006-01-28 14:03:53 -05:00
|
|
|
|
|
|
|
== Usage
|
|
|
|
|
2006-01-31 00:36:30 -05:00
|
|
|
The examples/simpletest.rb file has the following code as the simplest
|
|
|
|
example:
|
|
|
|
|
|
|
|
require 'mongrel'
|
|
|
|
|
|
|
|
class SimpleHandler < Mongrel::HttpHandler
|
|
|
|
def process(request, response)
|
|
|
|
response.start(200) do |head,out|
|
|
|
|
head["Content-Type"] = "text/plain"
|
|
|
|
out.write("hello!\n")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
h = Mongrel::HttpServer.new("0.0.0.0", "3000")
|
|
|
|
h.register("/test", SimpleHandler.new)
|
2006-02-15 08:00:04 -05:00
|
|
|
h.register("/files", Mongrel::DirHandler.new("."))
|
2006-01-31 00:36:30 -05:00
|
|
|
h.run.join
|
|
|
|
|
|
|
|
If you run this and access port 3000 with a browser it will say
|
|
|
|
"hello!". If you access it with any url other than "/test" it will
|
|
|
|
give a simple 404. Check out the Mongrel::Error404Handler for a
|
|
|
|
basic way to give a more complex 404 message.
|
2006-01-28 14:03:53 -05:00
|
|
|
|
2006-02-08 07:48:41 -05:00
|
|
|
This also shows the DirHandler with directory listings. This is still
|
|
|
|
rough but it should work for basic hosting. *File extension to mime
|
|
|
|
type mapping is missing though.*
|
|
|
|
|
2006-01-28 14:03:53 -05:00
|
|
|
== Contact
|
|
|
|
|
|
|
|
E-mail zedshaw at zedshaw.com and I'll help. Comments about the API are welcome.
|