1.Nginx安裝

weixin_34290000發表於2017-12-19

nginx 簡介

nginx因具有高併發(特別是靜態資源)、佔用系統資源少等,且功能豐富
在功能應用方面,nginx不但是一個優秀的web服務軟體,還具有反向代理負載均衡和快取服務功能,在反向代理、負載均衡方面,它類似於大名鼎鼎的LVS負載均衡及HAPROXY等專業代理軟體,但是NGINX部署起來更方便,在快取服務功能方面,它又類似於Squid等專業的快取服務軟體

總結一下nginx的幾大功能:

  • www web服務
  • 負載均衡(也可以叫做反向代理,也可以叫做proxy)
  • web 快取(相當於squid,CDN主要使用squid)

nginx官方網站

nginx版本選擇

nginx的軟體有三種版本,穩定版、開發版、及歷史穩定版
選擇標準如下:

  • 開發版更新快,新功能多,但bug多
  • 穩定版的更新很慢,但是bug較少,可以做為企業生產環境的首選。
    但是在實際工作中,儘量避免使用最新的穩定版,應該選擇比已出版本來的最新版本晚6-10個月的版本比較好

官網的解釋是這樣的:

  • Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以說是開發版
  • Stable version:最新穩定版,生產環境上建議使用的版本
  • Legacy versions:遺留的老版本的穩定版

nginx 安裝之RPM安裝

關於使用rpm還是原始碼安裝nginx的思考
rpm安裝極為簡單,下載一個yum源,然後yum install即可
原始碼最大的好處就是可以定製模組,並可以在安裝過後重新編譯增加新模組。
而rpm則不行,這也是一大劣勢
我們這裡還是選擇rpm安裝,因為rpm安裝主要的包其實已經安裝好了,也就基本夠我們使用了

進入官網
右側欄選擇download,那麼你就看到了最近的nginx版本
也看到了nginx 的幾種安裝方式,有原始碼安裝,還有rpm安裝,我們選擇rpm安裝
nginx之所以強大,是因為它具有眾多的功能模組,rpm安裝不能定製化安裝你需要的功能模組,但是一般的都已經新增了

6033513-f336678e788ee1ee.png
圖片.png

按照官網:

[root@bogon ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
gpgcheck=0
enabled=1

之後

yum install -y nginx
Installed:
  nginx.x86_64 1:1.12.2-1.el7_4.ngx     

至此nginx 安裝完畢

rpm 安裝之後 nginx 簡單命令

  • nginx 命令檢視
    nginx -h
    檢視命令,或者man nginx

  • nginx 啟動
    直接輸入nginx

  • nginx 檢查配置檔案有無錯誤
    nginx -t
    在啟動或者重啟nginx之前一定要nginx -t檢查配置檔案

  • nginx 關閉
nginx -s stop 關閉
nginx -s reload  重啟
  • nginx 預設啟動 80埠
[root@bogon ~]# lsof -i:80
COMMAND   PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx   11887  root    6u  IPv4 1168066      0t0  TCP *:http (LISTEN)
nginx   11888 nginx    6u  IPv4 1168066      0t0  TCP *:http (LISTEN)
  • 使用curl 命令檢查
[root@bogon ~]# curl 127.0.0.1
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

rpm 安裝 nginx 主要配置檔案

[root@bogon opt]# rpm -ql nginx 
/etc/logrotate.d/nginx  #Nginx 日誌輪轉,用於logrotate服務的日誌切割
/etc/nginx
/etc/nginx/conf.d  #主配置檔案目錄
/etc/nginx/conf.d/default.conf  #主配置檔案
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/modules #nginx 模組目錄
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules #nginx 模組目錄
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx                #nginx 啟動程式
/usr/sbin/nginx-debug   #nginx 啟動程式
/usr/share/doc/nginx-1.12.2  #幫助手冊等
/usr/share/doc/nginx-1.12.2/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx #nginx 快取目錄
/var/log/nginx     #nginx 日誌目錄

rpm 安裝的nginx的模組

nginx之所以強大,是因為它具有眾多的功能模組
nginx -V 可以看出你rpm編譯時使用了哪些引數,但是注意這是不全的,因為有一些模組是預設安裝的,rpm安裝nginx有一個不好的地方就是不能夠再次新增新module了

[root@bogon ~]# nginx -V 
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
--modules-path=/usr/lib64/nginx/modules 
--conf-path=/etc/nginx/nginx.conf 
--error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log 
--pid-path=/var/run/nginx.pid 
--lock-path=/var/run/nginx.lock 
--http-client-body-temp-path=/var/cache/nginx/client_temp 
--http-proxy-temp-path=/var/cache/nginx/proxy_temp 
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
--http-scgi-temp-path=/var/cache/nginx/scgi_temp 
--user=nginx --group=nginx --with-compat --with-file-aio 
--with-threads --with-http_addition_module 
--with-http_auth_request_module 
--with-http_dav_module 
--with-http_flv_module 
--with-http_gunzip_module 
--with-http_gzip_static_module 
--with-http_mp4_module 
--with-http_random_index_module 
--with-http_realip_module 
--with-http_secure_link_module 
--with-http_slice_module
--with-http_ssl_module 
--with-http_stub_status_module 
--with-http_sub_module 
--with-http_v2_module 
--with-mail 
--with-mail_ssl_module 
--with-stream 
--with-stream_realip_module 
--with-stream_ssl_module 
--with-stream_ssl_preread_module 
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

nginx 配置檔案詳解

[root@bogon ~]# cat  /etc/nginx/nginx.conf   
user  nginx;                     #nginx服務的系統使用使用者
worker_processes  1;     #worker程式的數量

error_log  /var/log/nginx/error.log warn;  #nginx的錯誤日誌
pid        /var/run/nginx.pid;                       #nginx服務啟動時的pid檔案
---以上叫做nginx 的核心區---
events {
    worker_connections  1024;   #每個worker程式支援的最大連線數
}

---以上叫做events區-------
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile        on;          #開啟高效傳輸模式
    #tcp_nopush     on;
    keepalive_timeout  65;      #連線超時
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;  #這個意思就是我們可以在這個目錄下面寫很多nginx 的配置檔案,nginx 會先讀/etc/nginx/nginx.conf 主配置檔案,再去讀這個目錄下的配置檔案。
}
----以上是nginx http核心模組區域,裡面可以巢狀server虛擬主機---


配置調優

work_process 8


一般來說擁有幾個邏輯cpu,work_process 就設定為幾
nginx doesn't benefit from more than one worker per CPU.

但是worker_processes最多開啟8個,8個以上效能提升不會再提升了,而且穩定性變得更低,所以8個程式夠用了。
配置完畢後,重啟nginx ,執行/etc/init.d/nginx restart
我們的cpu核數是32個,所以我們就設定個最大值8就可以了

在伺服器上執行top,然後按1,就可以看到CPU核心的工作情況。如果多個CPU核心的利用率都相差不多,證明nginx己經成功的利用了多核CPU。

worker_connections 10000;

這個一般在做企業調優時是必須要改的一個引數
這個一般調節到10000個左右就可以滿足企業需求了,最大應該可以到65535
理論上每臺nginx伺服器的最大連線數為
worker_processes*worker_connections

相關文章