Linux 6 Steps to install and compile Nginx

  • 2020-06-15 11:01:52
  • OfStack

Linux 6 - The steps for installing Nginx

Preface:

Nginx is a high-performance HTTP and reverse proxy server, as well as an IMAP/POP3/SMTP server. Nginx is a good alternative to Apache for high connection concurrency: Nginx is one of the software platforms of choice for web hosting business owners in the US. Can support responses of up to 50,000 concurrent connections with minimal memory overhead. This is an important reason for Nginx's popularity. This article demonstrates the Nginx based on Linux 6 under the compilation and installation, for your reference.

1. Installation environment


# cat /etc/issue
Red Hat Enterprise Linux Server release 6.3 (Santiago)
Kernel \r on an \m
# nginx -v
nginx version: nginx/1.8.0

2. Configure the installation environment


### To simplify installation and configuration, the firewall is turned off and the production environment is recommended to be turned on 
# service iptables stop
# chkconfig iptables off

# vi /etc/selinux/config 
SELINUX=disabled

### Create users and groups 
#groupadd -r nginx
#useradd -s /sbin/nologin -g nginx -r nginx

### Install environment dependent packages  http://nginx.org/en/linux_packages.html
# yum install pcre-devel zlib-devel openssl openssl-devel gcc gcc-c++

3. Compile and install Nginx


# cd /tmp/
# tar -xvf nginx-1.8.0.tar.gz
# cd /nginx-1.8.0
# ./configure           \
--prefix=/etc/nginx                     \
--sbin-path=/usr/sbin/nginx                 \
--conf-path=/etc/nginx/nginx.conf              \
--error-log-path=/var/log/nginx/error.log          \
--http-log-path=/var/log/nginx/access.log          \
--pid-path=/var/run/nginx.pid                \
--lock-path=/var/run/nginx.lock               \
--http-client-body-temp-path=/var/cache/nginx/client_temp  \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp      \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp    \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp      \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp       \
--user=nginx                         \
--group=nginx                        \
--with-http_ssl_module                    \
--with-http_realip_module                  \
--with-http_addition_module                 \
--with-http_sub_module                    \
--with-http_dav_module                    \
--with-http_flv_module                    \
--with-http_mp4_module                    \
--with-http_gunzip_module                  \
--with-http_gzip_static_module                \
--with-http_random_index_module               \
--with-http_secure_link_module                \
--with-http_stub_status_module                \
--with-http_auth_request_module               \
--with-mail                         \
--with-mail_ssl_module                    \
--with-file-aio                       \
--with-http_spdy_module                   \
--with-ipv6                         

Configuration summary
 + using system PCRE library
 + using system OpenSSL library
 + md5: using OpenSSL library
 + sha1: using OpenSSL library
 + using system zlib library

 nginx path prefix: "/etc/nginx"
 nginx binary file: "/usr/sbin/nginx"
 nginx configuration prefix: "/etc/nginx"
 nginx configuration file: "/etc/nginx/nginx.conf"
 nginx pid file: "/var/run/nginx.pid"
 nginx error log file: "/var/log/nginx/error.log"
 nginx http access log file: "/var/log/nginx/access.log"
 nginx http client request body temporary files: "/var/cache/nginx/client_temp"
 nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
 nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
 nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
 nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"

### if apache httpd Service started, it is recommended to stop or change the port number first 
# service httpd stop
# mkdir -p /var/cache/nginx/{client_temp,proxy_temp,fastcgi_temp,uwsgi_temp,scgi_temp}
# make && make install

### Start the nginx
# /usr/sbin/nginx -c /etc/nginx/nginx.conf

# ps -ef|grep nginx|grep -v grep
root   33412   1 0 10:18 ?    00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx   33413 33412 0 10:18 ?    00:00:00 nginx: worker process

[root@orasrv1 cache]# netstat -nltp|grep 80
tcp    0   0 0.0.0.0:80         0.0.0.0:*          LISTEN   33412/nginx     
[root@orasrv1 cache]# 

4. Configure nginx to serve the system


vi /etc/init.d/nginx 

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
#        proxy and IMAP/POP3 proxy server
# Author : Leshami
# Blog  : http://blog.csdn.net/leshami      
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /etc/nginx/nginx.conf

#path for nginx binary
nginxd=/usr/sbin/nginx

#path for nginx configuration
nginx_config=/etc/nginx/nginx.conf

#path for nginx pid
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
  echo "nginx already running...."
  exit 1
fi
  echo -n $"Starting $prog: "
  daemon $nginxd -c ${nginx_config}
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
  return $RETVAL
}
# Stop nginx daemons functions.
stop() {
    echo -n $"Stopping $prog: "
    killproc $nginxd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
  echo -n $"Reloading $prog: "
  #kill -HUP `cat ${nginx_pid}`
  killproc $nginxd -HUP
  RETVAL=$?
  echo
}
# See how we were called.
case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
reload)
    reload
    ;;
restart)
    stop
    start
    ;;
status)
    status $prog
    RETVAL=$?
    ;;
*)
    echo $"Usage: $prog {start|stop|restart|reload|status|help}"
    exit 1
esac
exit $RETVAL

# chmod u+x /etc/init.d/nginx 

# service nginx start
Starting nginx:                      [ OK ]

# ps -ef|grep nginx |grep -v grep
root   33534   1 0 10:33 ?    00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx   33535 33534 0 10:33 ?    00:00:00 nginx: worker process  

# service nginx stop
Stopping nginx:                      [ OK ]

# chkconfig --add nginx
# chkconfig nginx on

5. Common faults during installation


./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
###  The above 2 An error, please install the corresponding dependency package, see article 2 Section: Configure the installation environment 

# /usr/sbin/nginx 
nginx: [emerg] getpwnam("nginx") failed
###  You need to create nginx User groups and users 

# /usr/sbin/nginx
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (2: No such file or directory)
###  You need to create the corresponding directory 

If you have any questions, please leave a message or go to this site community exchange discussion, thank you for reading, hope to help you, thank you for your support to this site!


Related articles: