diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 71 |
1 files changed, 37 insertions, 34 deletions
@@ -1,18 +1,22 @@ -= Unicorn: Rack HTTP server for Unix, fast clients and nothing else += Unicorn: Rack HTTP server for fast clients and Unix + +Unicorn is an HTTP server for Rack applications designed to only serve +fast clients on low-latency, high-bandwidth connections and take +advantage of features in Unix/Unix-like kernels. Slow clients should +only be served by placing a reverse proxy capable of fully buffering +both the the request and response in between Unicorn and slow clients. == Features * Designed for Rack, Unix, fast clients, and ease-of-debugging. We - cut out all things that are better-supported by nginx or Rack. + cut out everything that is better supported by the operating system, + {nginx}[http://nginx.net/] or {Rack}[http://rack.rubyforge.org/]. -* Mostly written in Ruby, only the HTTP parser (stolen and trimmed - down from Mongrel) is written in C. Unicorn is compatible with - both Ruby 1.8 and 1.9. A pure-Ruby (but still Unix-only) version - is planned. +* Compatible with both Ruby 1.8 and 1.9. Rubinius support is in-progress. * Process management: Unicorn will reap and restart workers that die from broken apps. There is no need to manage multiple processes - or ports yourself. Unicorn can spawn and manage any fixed number of + or ports yourself. Unicorn can spawn and manage any number of worker processes you choose to scale to your backend. * Load balancing is done entirely by the operating system kernel. @@ -20,7 +24,7 @@ * Does not care if your application is thread-safe or not, workers all run within their own isolated address space and only serve one - client at a time. + client at a time for maximum robustness. * Supports all Rack applications, along with pre-Rack versions of Ruby on Rails via a Rack wrapper. @@ -31,10 +35,9 @@ Unicorn also takes steps to ensure multi-line log entries from one request all stay within the same file. -* nginx-style binary re-execution without losing connections. +* nginx-style binary upgrades without losing connections. You can upgrade Unicorn, your entire application, libraries - and even your Ruby interpreter as long as Unicorn is - installed in the same path. + and even your Ruby interpreter without dropping clients. * before_fork and after_fork hooks in case your application has special needs when dealing with forked processes. These @@ -48,10 +51,16 @@ each worker process can also bind to a private port via the after_fork hook for easy debugging. +* Simple and easy Ruby DSL for configuration. + +* Decodes chunked transfers on-the-fly, thus allowing upload progress + notification to be implemented as well as being able to tunnel + arbitrary stream-based protocols over HTTP. + == License -Unicorn is copyright 2009 Eric Wong and contributors. -It is based on Mongrel and carries the same license: +Unicorn is copyright 2009 by all contributors (see logs in git). +It is based on Mongrel and carries the same license. Mongrel is copyright 2007 Zed A. Shaw and contributors. It is licensed under the Ruby license and the GPL2. See the included LICENSE file for @@ -61,15 +70,15 @@ Unicorn is 100% Free Software. == Install -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. +The library consists of a C extension so you'll need a C compiler +and Ruby development libraries/headers. You may download the tarball from the Mongrel project page on Rubyforge and run setup.rb after unpacking it: http://rubyforge.org/frs/?group_id=1306 -You may also install it via Rubygems on Rubyforge: +You may also install it via RubyGems on Gemcutter: gem install unicorn @@ -77,9 +86,7 @@ You can get the latest source via git from the following locations (these versions may not be stable): git://git.bogomips.org/unicorn.git - http://git.bogomips.org/unicorn.git git://repo.or.cz/unicorn.git (mirror) - http://repo.or.cz/r/unicorn.git (mirror) You may browse the code from the web and download the latest snapshot tarballs here: @@ -87,6 +94,9 @@ tarballs here: * http://git.bogomips.org/cgit/unicorn.git (cgit) * http://repo.or.cz/w/unicorn.git (gitweb) +See the HACKING guide on how to contribute and build prerelease gems +from git. + == Usage === non-Rails Rack applications @@ -121,26 +131,19 @@ options. == Disclaimer -Like the creatures themselves, production deployments of Unicorn are -rare or even non-existent. There is NO WARRANTY whatsoever if anything -goes wrong, but let us know and we'll try our best to fix it. +There is NO WARRANTY whatsoever if anything goes wrong, but +{let us know}[link:ISSUES.html] and we'll try our best to fix it. Unicorn is designed to only serve fast clients either on the local host or a fast LAN. See the PHILOSOPHY and DESIGN documents for more details regarding this. -== Known Issues - -* WONTFIX: code reloading with Sinatra 0.3.2 (and likely older - versions) apps is broken. The workaround is to force production - mode to disable code reloading in your Sinatra application: - set :env, :production - Since this is no longer an issue with Sinatra 0.9.x apps and only - affected non-production instances, this will not be fixed on our end. - Also remember we're capable of replacing the running binary without - dropping any connections regardless of framework :) - == Contact -Email Eric Wong at normalperson@yhbt.net for now. -Newsgroup and mailing list maybe coming... +All feedback (bug reports, user/development dicussion, patches, pull +requests) go to the mailing list/newsgroup. See the ISSUES document for +information on the {mailing list}[mailto:mongrel-unicorn@rubyforge.org]. + +For the latest on Unicorn releases, you may also finger us at +unicorn@bogomips.org or check our NEWS page (and subscribe to our Atom +feed). |