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