1. 程式人生 > >RedHat 7 編譯安裝Nginx 1.12並配置WEB站點

RedHat 7 編譯安裝Nginx 1.12並配置WEB站點

nginx WEB

一、安裝環境

1、操作系統版本:Red Hat Enterprise Linux Server release 7.2 (Maipo)

2、Nginx版本:nginx-1.12.2.tar.gz

3、pcre版本:pcre-8.42.tar.gz

4、zlib版本:zlib-1.2.11.tar.gz

5、openssl版本:openssl-1.0.2l.tar.gz


二、安裝說明

官網上關於Nginx的依賴包說明如下:

技術分享圖片

技術分享圖片


三、安裝過程

1、安裝gcc:yum install gcc-c++ -y

技術分享圖片

2、編譯安裝pcre

[root@nginx-web ~]# tar -zxf pcre-8.42.tar.gz
[root@nginx-web ~]# cd pcre-8.42
[root@nginx-web pcre-8.42]# ./configure
[root@nginx-web pcre-8.42]# make
[root@nginx-web pcre-8.42]# make install

技術分享圖片

3、編譯安裝zlib:其實系統中已帶有舊版zlib-1.2.7的包,那要不要把它先卸載呢?官網上的說明示例並沒提到要先卸載舊版的zlib,而編譯安裝的make install過程我們可以看到它其實是把原有的文件刪掉,再拷貝新版的文件到原路徑,也就是會替換掉舊版的文件,因此我覺得不用先卸掉舊版。

[root@nginx-web ~]# tar -zxf zlib-1.2.11.tar.gz
[root@nginx-web ~]# cd zlib-1.2.11
[root@nginx-web zlib-1.2.11]# ./configure
[root@nginx-web zlib-1.2.11]# make
[root@nginx-web zlib-1.2.11]# make install

技術分享圖片

4、編譯安裝openssl:其實系統中已帶有openssl-1.0.1e的包,但是如果不編譯新版的openssl的話,會導致編譯nginx時提示找不到openssl。官網給的編譯openssl的示例是使用“ ./Configure darwin64-x86_64-cc --prefix=/usr”選項,但我編譯安裝時報錯“cc: error: x86_64: No such file or directory”,最後用” ./config --prefix=/usr --shared“發現也可以。

[root@nginx-web ~]# tar -zxf openssl-1.0.2l.tar.gz
[root@nginx-web ~]# cd openssl-1.0.2l
[root@nginx-web openssl-1.0.2l]# ./config --prefix=/usr --shared
[root@nginx-web openssl-1.0.2l]# make
[root@nginx-web openssl-1.0.2l]# make install

5、創建nginx用戶,否則安裝完nginx後啟動會報錯[emerg] 35240#0: getpwnam("nginx") failed

技術分享圖片

6、創建編譯參數中用到的目錄mkdir -p /var/tmp/nginx/client/,否則安裝完nginx後啟動會報該目錄不存在

7、編譯安裝nginx

[root@nginx-web ~]# tar -zxf nginx-1.12.2.tar.gz
[root@nginx-web ~]# cd nginx-1.12.2
[root@nginx-web nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx 
--conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx/nginx.pid  --lock-path=/var/lock/nginx.lock  --user=nginx  --group=nginx --with-http_ssl_module 
--with-http_stub_status_module  --with-http_gzip_static_module  --http-client-body-temp-path=/var/tmp/nginx/client/
--http-proxy-temp-path=/var/tmp/nginx/proxy/  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
--http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre

技術分享圖片

[root@nginx-web nginx-1.12.2]# make

技術分享圖片

[root@nginx-web nginx-1.12.2]# make install

技術分享圖片

8、使用命令/usr/local/nginx/sbin/nginx -t檢查配置文件語法,並用命令/usr/local/nginx/sbin/nginx啟動nginx

技術分享圖片

9、使用/usr/local/nginx/sbin/nginx -V查看版本

技術分享圖片

10、使用瀏覽器訪問,成功顯示默認站點

技術分享圖片


四、測試Nginx啟動腳本

1、在nginx目錄下創建sh子目錄,用來存放啟動腳本

root@nginx-web ~]# mkdir /usr/local/nginx/sh
[root@nginx-web ~]# vi /usr/local/nginx/sh/nginx
[root@nginx-web ~]# chmod +x /usr/local/nginx/sh/nginx
[root@nginx-web ~]# cat /usr/local/nginx/sh/nginx
#!/bin/bash
NG="/usr/local/nginx/sbin/nginx"
PIDF="/var/run/nginx/nginx.pid"
case "$1" in
  start)
    $NG -t &> /dev/null
    if [ $? -eq 0 ];then
      $NG
      echo "Nginx service start success."
    else
      mkdir /var/run/nginx  
      $NG -t &> /dev/null
      if [ $? -eq 0 ];then
        $NG
        echo "Nginx service start success."
      else
        $NG -t
      fi
    fi
    ;;
  stop)
    kill -s QUIT `cat $PIDF`
    echo "Nginx service stop success." 
    ;;
  restart)
    cat $PIDF &> /dev/null
    if [ $? -eq 0 ];then
    $0 stop
    fi
    $0 start
    ;;
  reload)
    $NG -t &> /dev/null
    if [ $? -eq 0 ];then
      kill -s HUP `cat $PIDF`
      echo "reload Nginx config success."
    else
      $NG -t
    fi
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|reload}"
    exit 
esac

技術分享圖片

2、將啟動腳本做軟連接到系統環境變量路徑/usr/local/sbin,這樣執行腳本可以跟使用命令一樣方便

[root@nginx-web ~]# ln -s /usr/local/nginx/sh/nginx /usr/local/sbin/
[root@nginx-web ~]# ll /usr/local/sbin/nginx
lrwxrwxrwx 1 root root 25 Apr  9 20:58 /usr/local/sbin/nginx -> /usr/local/nginx/sh/nginx

技術分享圖片

3、測試腳本,功能正常

技術分享圖片

4、將腳本加入/etc/rc.d/rc.local實現nginx的開機啟動

技術分享圖片技術分享圖片


五、配置WEB站點

Nginx配置文件簡介:Nginx配置文件主要分成四部分:main(全局設置)、server(主機設置)、upstream(負載均衡服務器設置)和 location(URL匹配特定位置的設置)。main部分設置的指令將影響其他所有設置;server部分的指令主要用於指定主機和端口;upstream指令主要用於負載均衡,設置一系列的後端服務器;location部分用於匹配網頁位置。這四者之間的關系式:server繼承main,location繼承server,upstream既不會繼承其他設置也不會被繼承。在這四個部分當中,每個部分都包含若幹指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令,同時每個部分還可以使用其他HTTP模塊指令,例如Http SSL模塊、HttpGzip Static模塊和Http Addition模塊等。

配置WEB站點主要用到server和location部分。

1、在/usr/local/nginx/conf/nginx.conf中新增一個虛擬主機,並在/usr/local/nginx/www下創建一個主頁文件index.html

技術分享圖片

技術分享圖片

2、reload一下 nginx,並做hosts解析

3、測試訪問虛擬主機www.jianlong.com,訪問正常

技術分享圖片

技術分享圖片

4、為上述虛擬主機設置別名,然後reload 一下nginx,並為別名www.jl.com做hosts解析

技術分享圖片

5、使用別名測試訪問,訪問正常

技術分享圖片

6、配置重定向跳轉,再新增一個虛擬主機,reload一下nginx,做好hosts解析後訪問jianlong.com會自動跳轉到www.jianlong.com,配置如下:

技術分享圖片

效果如下(請點擊查看gif圖)

http://i2.51cto.com/images/blog/201804/20/549cefe66943fd262e408b91503bf84b.gif

本文出自江健龍的技術博客,如有轉載請註明出處http://blog.51cto.com/jiangjianlong/2105585

RedHat 7 編譯安裝Nginx 1.12並配置WEB站點