Cài đặt Nginx trên CentOS

1. Cài đặt thư viện

–       Cài đặt GCC – GNU Compiler

# yum groupinstall -y "Development Tools"

–       Cài đặt thư viện PCRE

# yum install -y pcre pcre-devel

–       Cài đặt thư viện zlib

# yum install -y zlib zlib-devel

–        Cài đặt OpenSSL

# yum install -y openssl openssl-devel

–       Cài đặt các thư viện khác

# yum install -y libxml2 libxml2-devel libxslt libxslt-devel gd gd-devel perl-ExtUtils-Embed geoip geoip-devel

2. Cấu hình cài đặt Nginx

–       Các phiên bản của Nginx được chia làm 3 nhánh sau:

  • Stable version: là phiên bản ổn định nhất cho việc sử dụng trong thực tế, đa số các lỗi đã được phát hiện và xử lý đối với phiên bản này. Đây là phiên bản được đề nghị sử dụng. Phiên bản ổn định mới nhất là 1.4.7.
  • Development version: là phiên bản mới nhất cho phép download của Nginx, có thể sử dụng thực tế, tuy nhiên vẫn còn nhiều lỗi phát sinh chưa được xử lý. Đây là phiên bản dành cho các nhà phát triển dùng để kiểm tra các chức năng mới nhất của Nginx. Phiên bản phát triển mới nhất là 1.5.12.
  • Legacy version: Các phiên bản cũ của Nginx.

–       Download Nginx

# wget http://nginx.org/download/nginx-1.4.7.tar.gz
# tar -xzvf nginx-1.4.7.tar.gz
# cd nginx-1.4.7

2.1. Các tùy chọn cấu hình

2.1.1. Tùy chọn về đường dẫn:

[table “” not found /]

2.1.2. Tùy chọn về chức năng:

  • Các module mặc định được enabled (Các tùy chọn biên dịch bên dưới cho phép chúng ta vô hiệu hóa các module này).
[table “” not found /]
  • Các module mặc định được disabled (Các tùy chọn biên dịch bên dưới cho phép chúng ta làm cho các module này có hiệu lực).
[table “” not found /]

2.1.3. Các tùy chọn khác

  • Mail server proxy
[table “” not found /]
  • Quản lý sự kiện
[table “” not found /]
  • User và Group
[table “” not found /]
  • Các tùy chọn khác
[table “” not found /]

3. Cài đặt Nginx trên CentOS

–       Chúng ta đã có thông tin về các tùy chọn cấu hình chức năng được cung cấp bởi Nginx. Dựa vào nhu cầu và mục đích sử dụng Nginx, chúng ta có thể cấu hình như sau:

  • Sử dụng Nginx như 1 HTTP server:
# ./configure --user=nginx --group=nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_perl_module --with-http_degradation_module
  • Sử dụng Nginx như 1 mail server proxy:
#./configure --user=nginx --group=nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/subsys/nginx --with-mail --with-mail_ssl_module

–       Biên dịch và cài đặt Nginx

# make
# make install
# export PATH=$PATH:/usr/local/nginx/sbin

–       Cấu hình Nginx như là 1 dịch vụ của hệ thống

# vi /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -z "`grep $user /etc/passwd`" ]; then
       useradd -M -s /bin/nologin $user
   fi
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
# chmod +x /etc/init.d/nginx
# chkconfig --levels 235 nginx on
# chkconfig --list nginx
nginx 0:off 1:off 2:on 3:on 4:off 5:on 6:off

–       Chạy Nginx

# /etc/init.d/nginx start

Related Post