Công nghệ - Số Hóa Hướng dẫn compilation nginx từ source cho wordpress.

Xem trong 'Làng Tin Tức' đăng bởi Tin Tức TGĐC, 30/5/16, [ Mã Tin: 45155 ] [84 lượt xem - 0 bình luận]

  1. SĐT :
    0922121289
    Địa Chỉ :
    50/19 Đường Chiến Lược, Phường Bình Trị Đông, Quận Bình Tân, Thành phố Hồ Chí Minh
    Gửi tin nhắn
    Hôm nay mình sẽ hướng các bạn compilation nginx từ source với module ngx_cache_purge để xóa cache và module nginx-module-vts để theo dõi tình trang lưu lượng từ vhost cho nginx. (lưu ý đây là hướng dẫn trên centos).

    nginx_http_server-300x172.jpg x1386f3b2-0556-11e5-8323-7c624da0fcb3.png.pagespeed.ic.4txpu_uuEw.png
    Vhost status
    1) Chuẩn bị các gói cài đặt:

    Tiến hành ssh vào server/vps với tài khoản root.

    Cài đặt các gói phụ thuộc cần thiết khi compilation

    Mã:
    yum groupinstall 'Development Tools'
    yum install pcre-devel zlib-devel openssl-devel git
    Tải Nginx và các module thứ 3 để compilation.

    Mã:
    git clone https://github.com/FRiCKLE/ngx_cache_purge.git
    git clone https://github.com/vozlt/nginx-module-vts.git
    wget http://nginx.org/download/nginx-1.10.0.tar.gz
    2) Tiến hành compilation nginx.

    Giải nén nginx:

    Mã:
    tar -xvf nginx-1.10.0.tar.gz
    cd nginx-1.10.0   # di chuyển vào thư mục mới giải nén
    Trước khi compilation mình sẽ giải thích các option mính sẽ dùng trong lần compilation này cho các bạn:

    –prefix=/usr/local/nginx-1.10 : với option này thì nginx sẽ được cài đặt ở đường dẫn /usr/local/nginx-1.10

    –with-http_realip_module: với option để cấu hình nginx lấy ip thực của client thông qua proxy. Ví dụ như cloudflare.

    –with-http_v2_module : nginx sẽ hỗ trợ cấu hình http2 bạn có thể đọc thêm về http2 tại đây

    –with-http_ssl_module : nginx hỗ trợ cấu hình ssl, Mình sẽ thêm 1 bài viết giúp các bạn đăng kí ssl cho website trong tương lại.

    –with-http_gzip_static_module : nginx hỗ trợ bật cấu hình gzip để nén file.

    –with-ipv6 : nginx hỗ trợ ipv6.

    –add-module=/root/ngx_cache_purge : thêm module ngx_cache_purge trong khi compilation.

    –add-module=/root/nginx-module-vts : thêm module nginx-module-vts trong khi compilation.

    –user=nginx : chạy nginx dưới quyền user nginx.

    –group=nginx : chạy nginx dưới group nginx.

    Bạn có thể dùng lệnh dưới đây để xem thêm các option của nginx

    Mã:
    ./configure --help
    Tiến hành compilation nginx.

    Mã:
    ./configure --prefix=/usr/local/nginx-1.10 --user=nginx --group=nginx --add-module=/root/ngx_cache_purge --add-module=/root/nginx-module-vts --with-http_realip_module --with-ipv6 --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module
    make
    make install
    3) Tùy chỉnh sau khi compilation.

    Mã:
    ln -s /usr/local/nginx-1.10/sbin/nginx /usr/local/sbin/nginx    # tạo liên kết file bin nginx để sử dụng.
    Tạo file init.d của nginx:

    Mặc định nginx nginx ko cung cấp file init.d trong source do đó bạn có thể copy file ở dưới hoặc tham khảo thêm ở đây

    Mã:
    #!/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-1.10/sbin/nginx"
    prog=$(basename $nginx)
    NGINX_CONF_FILE="/usr/local/nginx-1.10/conf/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
    sao chép đoạn mã trên vào file :

    Mã:
    vi /etc/init.d/nginx
    Phân quyền lại file:

    Mã:
    chmod a+x /etc/init.d/nginx
    khởi động nginx bằng lệnh:

    Mã:
    service nginx start