Nginx is a web server software like apache. The purpose of a web server software to serve web page in response to a browser request. Nginx pronounced as engine-x. It is faster than apache web server for concurrent requests because it does not create a thread for request like apache. Here is a detail comparison of the two https://www.nginx.com/blog/nginx-vs-apache-our-view/ .
Installing Nginx with passenger on ubuntu
1.Install rvm and ruby
First update the packages in the system
sudo apt-get update
Then install the rvm and ruby if not installed using this commands
curl -L get.rvm.io | bash -s stable
and install latest ruby version
rvm install ruby-2.3.1
2.Install passenger
To deply rails application we can use passenger gem. To install passenger gem you simply need to
gem install passenger
3.Create a rails application
gem install rails
rails new blog # here blog is my application name
4.Install nginx with passenger module
With passenger module you just need to enter this command
rvmsudo passenger-install-nginx-module
Here note that we used rvmsudo
instead of sudo
user because sudo does not contains environment variables like $PATH
, $GEM_HOME
etc, which are required. To run this(or any other) command you might need your root password.
It may be possible that your system has some libraries missing. For that passenger will prompt you a message with command. You should install the required library and then again run the above command.
After the above command you should see option for continue or cancel. Press enter to continue. Then it will show you options for installation using ruby, python, node and meteor. Option 1 is for ruby which is by default selected (see screenshot)
It will also give you options for default or customisation. By default nginx install in the /opt/
directory, you can change it's path by entering the location.
Nginx has it's configuration file in /opt/nginx/conf/nginx.conf
if its installed in/opt
. By default passenger modify the configuration file and specify the options passenger_root
and passenger_ruby
. But sometimes if it does not specify the correct path you can modify this options to set the correct path
http {
...
passenger_root /home/kiprosh008/.rvm/gems/ruby-2.3.1/gems/passenger-5.0.30;
passenger_ruby /home/kiprosh008/.rvm/gems/ruby-2.3.1/wrappers/ruby;
...
}
5.Add your application path to nginx config file
Open nginx config file using nano/vim editor
sudo nano /opt/nginx/conf/nginx.conf
In the server block set the root
option to public directory of your rails application. Your config file would be like
server {
listen 80;
server_name localhost
root /var/www/blog
..
}
You can set your domain name in server_name and other configurations in this file depending on your requirements.
6.Start Nginx
That's all you just need to start nginx server
sudo service nginx start