1. 程式人生 > >Nginx 實戰-第一章 nginx 介紹與安裝部署

Nginx 實戰-第一章 nginx 介紹與安裝部署

1.常見webserver介紹

Apache 和Tomcat

Apache和Nginx

Tomcat和jetty

jboss、tomcat、jetty

總結

2.nginx官網和版本介紹

3.nginx功能介紹

4.nginx安裝和部署

4.1 Nginx安裝 – yum安裝

4.2 Nginx安裝 – 原始碼安裝

4.2.1 nginx原始碼安裝

4.2.2 nginx 啟動與停止

4.3 服務管理指令碼


1.常見webserver介紹

1.1 常見伺服器如apache 、tomcat、jetty、jboss、netty

我們可以到這個網站(https://w3techs.com/technologies/overview/web_server/all)上面檢視每個伺服器的使用情況:

nginx發展非常快,apache還是老牌廠商。下面我們看一下這幾個比較:

Apache 和Tomcat

相同:都是HTTP伺服器
不同:apache本身只有http伺服器功能,只能處理靜態請求,如果要處理動態請求
需要配置好指令碼程式或應用程式處理,比如php或servlet容器(tomcat)
tomcat兩種請求都可以處理,但是靜態請求處理慢,一般處理jsp請求
1.獨立servlet模式、預設模式,靜態請求也有tomcat完成
2.程序內servlet,用web外掛在web伺服器內部開一個jvm執行servlet容器
3.程序外servlet,用web外掛與web伺服器通訊,速度比2慢,擴充套件性好

Apache和Nginx

都是HTTP伺服器,不同在於nginx資源佔用極低、穩定性高,十分適合處理靜態請求
所以一般會用Nginx作前端伺服器,處理高併發的靜態請求
Apache負責後臺,轉發php、cgi、perl等動態解析

Tomcat和jetty

相同:都是servlet容器和http伺服器,核心都一樣
不同:jetty更加輕量,而且支援jsp、.net和php全系列

jboss、tomcat、jetty

jboss是一個EJB容器,通常集成了tomcat或jetty負責servlet請求

總結

一般Web請求用apache、nginx或lighttpd中的一種
servlet容器用tomcat或jetty
Ejb容器用jboss

2.nginx官網和版本介紹

  • Nginx誕生 2004年10月釋出,俄國人Igor Sysoev開發,
  • rambler.ru Nginx官網、版本 nginx.org  1.14.0穩定版 國內分支Tengine(http://tengine.taobao.org/)

3.nginx功能介紹

Nginx功能介紹 Http服務、反向代理、負載均衡、郵件代理、快取加速、SSL、flv/mp4流媒體

  • 正向代理:某些情況下,代理我們使用者去訪問伺服器,需要使用者手動的設定代理伺服器的ip和埠號。
  • 反向代理:是用來代理伺服器的,代理我們要訪問的目標伺服器。代理伺服器接受請求,然後將請求轉發給內部網路的伺服器(叢集化),並將從伺服器上得到的結果返回給客戶端,此時代理伺服器對外就表現為一個伺服器。Nginx在反向代理上,提供靈活的功能,可以根據不同的正則採用不同的轉發策略。
  • 負載均衡:多在高併發情況下需要使用。其原理就是將資料流量分攤到多個伺服器執行,減輕每臺伺服器的壓力,多臺伺服器(叢集)共同完成工作任務,從而提高了資料的吞吐量。Nginx可使用的負載均衡策略有:輪詢(預設)、權重、ip_hash、url_hash(第三方)、fair(第三方)
  • Nginx提供的動靜分離是指把動態請求和靜態請求分離開,合適的伺服器處理相應的請求,使整個伺服器系統的效能、效率更高。Nginx可以根據配置對不同的請求做不同轉發,這是動態分離的基礎。靜態請求對應的靜態資源可以直接放在Nginx上做緩衝,更好的做法是放在相應的緩衝伺服器上。動態請求由相應的後端伺服器處理。

4.nginx安裝和部署

4.1 Nginx安裝 – yum安裝

  • vi /etc/yum.repos.d/nginx.repo
  • https://coding.net/u/aminglinux/p/nginx/git/blob/master/2z/nginx.repo
  • yum install -y nginx systemctl start/stop/restart/reload
  • nginx 測試:瀏覽器訪問或者curl訪問 檢查服務程序:ps aux |grep nginx 檢查埠監聽:netstat -lnp |grep ‘:80’ 有防火牆,
  • 需加規則iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  • nginx -V檢視版本以及各個目錄、引數

4.2 Nginx安裝 – 原始碼安裝

4.2.1 nginx原始碼安裝

下面是一個簡單的安裝過程,具體過程我就不演示了,這個應該不會太難。

  • wget http://nginx.org/download/nginx-1.14.0.
  • tar.gz tar zxf nginx-1.14.0.tar.gz
  • cd nginx-1.14.0;
  • ./configure --prefix=/usr/local/nginx
  • make && make install

4.2.2 nginx 啟動與停止

/usr/local/nginx/sbin/nginx  //啟動

pkill nginx //殺死nginx程序,停止nginx服務

/usr/local/nginx/sbin/nginx -t //檢測配置檔案語法錯誤

/usr/local/nginx/sbin/nginx -s reload//過載配置

4.3 服務管理指令碼

#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start() 
{
    echo -n $"Starting $prog: "
    mkdir -p /dev/shm/nginx_temp
    daemon $NGINX_SBIN -c $NGINX_CONF
    RETVAL=$?
    echo
    return $RETVAL
}

stop() 
{
    echo -n $"Stopping $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -TERM
    rm -rf /dev/shm/nginx_temp
    RETVAL=$?
    echo
    return $RETVAL
}

reload()
{
    echo -n $"Reloading $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -HUP
    RETVAL=$?
    echo
    return $RETVAL
}

restart()
{
    stop
    start
}

configtest()
{
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac

exit $RETVAL