NGINX is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption. In this blog, we explain how to install Nginx in RHEL and CentOS. NGINX is a free, open-source, high-performance HTTP server and reverses proxy, as well as an IMAP/POP3 proxy server.
To add NGINX yum repository, create a file named /etc/yum.repos.d/nginx.repo and paste one of the configurations below:
CentOS:[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=0enabled=1RHEL:[nginx]name=nginx repobaseurl=http://nginx.org/packages/rhel/$releasever/$basearch/gpgcheck=0enabled=1
Due to differences between how CentOS, RHEL, and Scientific Linux populate the $releasever variable, it is necessary to manually replace $releasever with either 5 (for 5.x) or 6 (for 6.x), depending upon your OS version.
Installing nginx through yum is just a command away. and can be done as below:
[root@app-node1 ~]# yum install nginxLoaded plugins: rhnplugin, securityThis system is not registered with RHN.RHN support will be disabled.Setting up Install ProcessParsing package install argumentsResolving Dependencies–> Running transaction check—> Package nginx.i386 0:0.8.55-2.el5 set to be updated–> Processing Dependency: libGeoIP.so.1 for package: nginx–> Running transaction check—> Package GeoIP.i386 0:1.4.8-1.el5 set to be updated–> Finished Dependency Resolution….
================================================================================Package Arch Version Repository Size================================================================================Installing:nginx i386 0.8.55-2.el5 epel 390 kInstalling for dependencies:GeoIP i386 1.4.8-1.el5 epel 781 kTransaction Summary================================================================================Install 2 Package(s)Update 0 Package(s)Remove 0 Package(s)Total download size: 1.1 MIs this ok [y/N]: Y
If you encounter dependency issues while installing through yum you can solve that by searching the dependency package or library file(with .so extension) in pkgs.org and then downloading and installing that package for your respective version of OS, by rpm command.
Installing Nginx from Source:
first of all download the source package from here
Now unzip the package with the following command.
[root@app-node1 ~]# tar -xvf nginx-1.2.4.tar.gz
Now you will have a directory named nginx-1.2.4.tar.gz in the location where you unzipped the .gz package file.
/usr/local/nginx is the default installation directory of nginx.
Now let’s get inside the directory which we unzipped.
[root@app-node1 nginx-1.2.4]# lsauto CHANGES.ru configure html man srcCHANGES conf contrib LICENSE README
Now, lets configure our nginx installation with ./configure command. There is any number of options available with this ./configure command, like the following.
–prefix to override the default installation path of /usr/local/nginx
–sbin-path this option can be used to specify the nginx command path.
–pid-path pid file path; like the files we have in /var/run/
–http-log-path you can specify the log file path with this option.
with these above-mentioned options, I can both mention the path of the files, and also the file names.
[root@app-node1 nginx-1.2.4]# ./configure –prefix=/home/sshinde/ –pid-path=/etc/nginx/nginx.pid –http-log-path=/var/log/nginx_access_log –with-pcre=/etc/nginx/pcre –with-zlib=/etc/nginx/zlib[root@app-node1 nginx-1.2.4]# ./configure –prefix=/home/sshinde/ –pid-path=/etc/nginx/nginx.pid –http-log-path=/var/log/nginx_access_log –without-http_rewrite_module –without-http_gzip_module
Now we will compile our selected options. by make command.
[root@app-node1 nginx-1.2.4]# make
Now let’s install it.
[root@app-node1 nginx-1.2.4]# make install
That’s it you have installed nginx from source package. Now let’s start nginx with the below command.
[root@app-node1 ~]# /home/sshinde/sbin/nginx
I have installed it in /home/sshinde which is the reason am using this path to start nginx.Let’s confirm whether our nginx is running by the following command.
[root@app-node1 ~]# lsof -i :80COMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEnginx 5850 root 6u IPv4 52188 TCP *:http (LISTEN)nginx 5890 nobody 6u IPv4 52188 TCP *:http (LISTEN)
and also from the below command.
[root@app-node1 ~]# ps aux | grep nginxroot 5850 0.0 0.1 2600 984 ? Ss 10:00 0:00 nginx: master process /home/sshinde/sbin/nginxnobody 5890 0.0 0.1 2748 896 ? S 10:01 0:00 nginx: worker process
Now let’s see and compare if that’s the pid written to the file we mentioned during our installation configuration option –pid-path option.
[root@app-node1 ~]# cat /etc/nginx/nginx.pid5850
Manage the Nginx Process
Now that you have your web server up and running, we can go over some basic management commands.
To stop your web server, you can type:
[root@app-node1 ~]# sudo service nginx stop
To start the web server when it is stopped, type:
[root@app-node1 ~]# sudo service nginx start
To stop and then start the service again, type:
[root@app-node1 ~]# sudo service nginx restart