NGINX介紹

一、環境調試確認

安裝

  yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
  yum -y install wget httpd-tools vim

一次初始化

  mkdir app download logs work backup

關閉iptables規則

  iptables -L
  iptables -F
  iptables -t nat -L
  iptables -t nat -F
  關於iptables的介紹,大家可以看看http://www.zsythink.net/archives/1199/這篇文章,講的非常好

關閉selinux

  getenforce如果顯示不是Disabled那麼就要執行setenforce 0

二、Nginx是什麼

Nginx是一個開源且高性能、可靠的HTTP中間件、代理服務

三、常見的HTTP服務

四、爲什麼選擇Nginx

原因一:採用IO多路複用epoll模型

什麼epoll模型,我們先看看一張圖:



  圖中畫出了硬件的4個部分,如果我們想和硬件打交道,則需要軟件,我們的Nginx在接受到了外部請求之後會使用Linux內核中的epoll模型與硬件打交道,epoll是一個高效的處理IO複用的內核模型。那麼這裏的關鍵就是處理IO複用,那麼什麼是IO複用呢?看下一張圖:



  在早期的時候面對用戶的一個請求,會產生一個socket流,然後要對用的socket流進行處理。我們假設這個時候我們只有一個線程去面對大併發的請求,第一個請求的到來會佔有這個線程,假設這個流的數據沒有完全達到服務器,那麼線程會一直等待(乾等),什麼事情也不能幹,而且也阻塞了其他的請求。那麼這個時候我們可以相處兩個方案,第一個方案就是使用多線程,同時處理多個請求,但是這樣做同樣也會消費很多資源,無法滿足大量的併發,這個時候第二個方案出現了,它就是使用一個線程採用IO複用模式。

一個for循環不斷的去遍歷所有的流,如果有數據了就讀取,否則就去遍歷下一個流,假設所有的流沒有數據,只會白白浪費CPU。



通過上圖我們可以看到IO複用內核模式的種類以及演變。接下來我們來講講這3中模型。

select相比於之前的僞代碼就多了一步,只有在流中有數據的時候,纔開始讀取數據,這樣就不會讓CPU白白空跑。

原因二:CPU親和

  CPU親和是把CPU核心和Nginx工作進程進行綁定的一種方式,把每個worker綁定到一個cpu上執行,減少切換cpu的cache miss,獲得更好的性能。

原因三:sendFile


  文件的傳輸不再通過內核態到用戶態,然後在由用戶態傳遞到內核態在傳遞給socket,取而代之的是,直接走內核態的buffer cache,減少一次拷貝。

五、Nginx的快速安裝

  官方網址:http://nginx.org/

步驟一:

  cat /proc/version或者lsb_release -a查看操作系統的版本
  詳細的安裝步驟在這個頁面:http://nginx.org/en/linux_packages.html

步驟二:

  vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

步驟三:

  yum install nginx

步驟四:查看安裝是否成功

  nginx -v查看nginx的版本
  nginx -V查看nginx的安裝編譯參數

六.Nginx的目錄和配置語法

安裝目錄詳解:

我們使用yum安裝nginx之後,其實裝的就是nginx的一堆rpm包,通過rpm -ql nginx命令我們可以看看到底裝了一些什麼東西,而且都放在什麼目錄下。

路徑 類型 作用
/etc/logrotate.d/nginx 配置文件 Nginx日誌輪轉,用於logrotate服務的日誌切割
/etc/nginx /etc/nginx/nginx.conf /etc/nginx/conf.d /etc/nginx/conf.d/default.conf 目錄、配置文件 Nginx主配置文件
/etc/nginx/fastcgi_params /etc/nginx/uwsgi_params /etc/nginx/scgi_params 配置文件 cgi配置相關,fastcgi配置
/etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf 配置文件 編碼轉換映射轉化文件
/etc/nginx/mime.types 配置文件 設置http協議的content-type與擴展名對應關係
/usr/lib/systemd/system/nginx-debug.service /usr/lib/systemd/system/nginx.service /etc/sysconfig/nginx /etc/sysconfig-debug 配置文件 用於配置出系統守護進程管理器管理方式
/usr/lib64/nginx/modules /etc/nginx/modules 目錄 nginx模塊目錄
/usr/sbin/nginx /usr/sbin/nginx-debug 命令 nginx服務的啓動管理的終端命令
/var/cache/nginx 目錄 nginx的緩存目錄
/var/log/nginx 目錄 nginx的日誌目錄

nginx.conf是啓動的時候要用到的配置文件,default.conf是ngxin沒有變動的時候的默認配置文件

安裝編譯參數:





默認配置語法

vi /etc/nginx/nginx.conf會看到以下信息:



默認配置和默認站點啓動

  命令:systemctl restart nginx.service

  額外補充一下systemctl的相關知識。Systemd 並不是一個命令,而是一組命令,涉及到系統管理的方方面面,systemctl是 Systemd 的主命令,用於管理系統。

# 立即啓動一個服務
$ sudo systemctl start nginx.service

# 立即停止一個服務
$ sudo systemctl stop nginx.service

# 重啓一個服務
$ sudo systemctl restart nginx.service

# 殺死一個服務的所有子進程
$ sudo systemctl kill nginx.service

# 重新加載一個服務的配置文件
$ sudo systemctl reload nginx.service

  我們看到nginx.conf配置文件中的http中的include包含了default.conf,這裏面配置了很多上圖的一些配置,其中的location /表示說,當只輸入域名不輸入任何路徑的時候,默認會到root配置的目錄中去找index配置中的那些文件。error_page定義了異常應答碼的時候,會主動到location對應的root中去找對應的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章