Should I use passenger in production

22 views
Skip to first unread message

fugee ohu

unread,
Jan 13, 2019, 2:38:10 PM1/13/19
to Ruby on Rails: Talk
What do I need it for besides being able to restart apps

Walter Lee Davis

unread,
Jan 13, 2019, 4:46:52 PM1/13/19
to rubyonra...@googlegroups.com


On Jan 13, 2019, at 12:38 PM, fugee ohu <fuge...@gmail.com> wrote:

What do I need it for besides being able to restart apps

Passenger is necessary to translate the incoming http request into a connection to your Rails app. 

Even I f you are just developing locally, you will run `rails s` in a console, and that will start a server, usually Puma these days, but you could also run Unicorn or even Webrick if you’re feeling nostalgic. 

By itself, Rails is not going to respond to http. 

Passenger and Unicorn are both production grade http adapters, they can deal with things like slow clients or excessive traffic. Webrick (to give a ridiculous counter-example) is single-threaded and will just die under anything more than development click testing load. 

Any of these application servers will want to be fronted by Apache or NGINX to handle static assets and general proxy server duties if you anticipate any sort of real load. My usual production deployment is Apache with the mod_passenger plugin. For really large sites, I will put multiple instances of that stack behind a load balancer, with all instances pointing to the same database server. 

Walter

Rob Jonson

unread,
Jan 14, 2019, 6:06:25 AM1/14/19
to Ruby on Rails: Talk


On Sunday, 13 January 2019 19:38:10 UTC, fugee ohu wrote:
What do I need it for besides being able to restart apps

fugee ohu

unread,
Jan 14, 2019, 8:35:49 AM1/14/19
to Ruby on Rails: Talk
Rails works with nginx without passenger no? 

Phil Edelbrock

unread,
Jan 14, 2019, 10:32:23 AM1/14/19
to rubyonra...@googlegroups.com
Nginx or Apache handle the web connections.  Rails is the app.  You need some 'glue' between the two.  What something like Passenger does is manages the Rails processes and keeps connections with Nginx/Apache efficient and uptime at its most.


Phil

fugee ohu

unread,
Jan 14, 2019, 3:42:23 PM1/14/19
to Ruby on Rails: Talk
I thought rails and nginx will work together without Passenger 

 

Walter Lee Davis

unread,
Jan 14, 2019, 4:16:34 PM1/14/19
to rubyonra...@googlegroups.com
Why would you think that? Can you point to some documentation of that? 

You could certainly shell into your server, start Rails from the console with `rails s -d -p 2020 production` and then set up a proxy in NGINX that directs ports 443 and 80 to 2020. That would probably work, for certain definitions of “work”. It would be slow, wouldn’t scale to traffic, wouldn’t deal with slow clients, etc. Nobody smart does this, before you ask for more details.

Just use an application server like Passenger. Really. It doesn’t have to be Passenger, there are others, but you have to use one of them. 

Walter 

Phil Edelbrock

unread,
Jan 14, 2019, 5:56:46 PM1/14/19
to rubyonra...@googlegroups.com
You need something to glue Rails and the web service together.  (I'd advise against FastCGI, like we did in the Olde Days™ ;')

If you are going to use puma (or something) and proxy through nginx or apache, I don't know what the point is(?).  Every deployment can be a bit (or a lot) different in needs, though.

Passenger is just a plug-in for nginx/apache to manage your rails app pool.

I don't understand your attachment to nginx and your aversion to passenger?  (I'm not a passenger shrill, just confused what your constraints are.)

I think Walter did a good job explaining things, btw.

Good luck!


Phil
Reply all
Reply to author
Forward
0 new messages