使用Nginx的原因:
原因一:IO多路復用epoll
1、什么是IO多路復用
多個描述符的I/O操作都能在一個線程內並發交替地書訊完成,這就叫I/O多路復用。這里的”復用“指的是復用同一個線程。
例如:一個老師給一個班級的學生解答問題的方式:
第一種:老師按順序去問學生是否做完,這樣先做完但是順序排在后面的同學會等待。
第二種:老師按照學生做完的先后順序進行解答。
第二種:老師代表的是一個線程,學生代表的是多個描述符的I/O操作。
2、什么是epoll
IO多路復用的實現方式:select、poll,epoll。
select 最早出現,是線性遍歷,需要遍歷整個列表,以准備喚醒對應的進程去完成數據拷貝。
缺點: 1、效率低下。2、描述符限制是1024個。
epoll:
1、當每個FD就緒的時候,采用系統的回調函數之間將FD放入,效率更高
2、最大連接無限制。
Nginx,采用epoll
原因二:輕量級
功能模塊少,代碼模塊化。
原因三:CPU親和
是一種把CPU核心和Nginx工作進程綁定的方式,把每一個worker進程固定在一個cpu上進行,減少切換cpu的cache miss ,獲得更好的性能
原因四:sendfile 零拷貝,file->內核->socket
更新一下安裝方式:yum安裝nginx,
首先安裝nginx的依賴環境
在/etc/yum.repos.d 目錄下創建 nginx.repo文件
輸入命令:touch nginx.repo
上官網 http://nginx.org/en/linux_packages.html#stable 拷貝對應linux版本的yum源
本服務器是centos7.4,所以對應的yum如下,將下面這段拷貝到創建的 nginx.repo 中
-
[nginx]
-
name=nginx repo
-
baseurl= http:/ /nginx.org/packages /mainline/centos /7/$basearch/
-
gpgcheck= 0
-
enabled= 1
輸入yum list | grep nginx 可以查看yum版本
執行yum install nginx 安裝完畢。
執行nginx -v 即可看到安裝的版本
一、yum安裝之后的目錄詳解
路徑 類型 作用
/etc/logrotate.d/nginx 配置文件 nginx日志輪轉,用於logrotate服務的日志切割
-----------------------------------------------------------------------------------------------------------------------------
/etc/nginx/
etc/nginx/conf.d 目錄、配置文件 nginx主配置文件
/etc/nginx/conf.d/default.conf
/etc/nginx/nginx.conf
------------------------------------------------------------------------------------------------------------------------------
/etc/nginx/fastcgi_params
/etc/nginx/scgi_params 配置文件 cgi配置相關,fastcgi配置
/etc/nginx/uwsgi_params
------------------------------------------------------------------------------------------------------------------------------
/etc/nginx/koi-win 配置文件 編碼轉換映射轉化文件(很少用到)
------------------------------------------------------------------------------------------------------------------------------
/etc/nginx/mime.types 配置文件 設置HTTP協議的Content-Type與拓展名對應關系
------------------------------------------------------------------------------------------------------------------------------
/etc/sysconfig/nginx-debug 配置文件 用於配置出系統守護進程管理器的管理方式
/usr/lib/systemd/system/nginx.service
------------------------------------------------------------------------------------------------------------------------------
/usr/lib64/nginx/modules 目錄
/etc/nginx/modules Nginx目錄模塊
------------------------------------------------------------------------------------------------------------------------------
/usr/sbin/nginx 命令 Nginx服務的啟動管理的終端命令
/usr/sbin/nginx-debug
------------------------------------------------------------------------------------------------------------------------------
/usr/share/doc/nginx-1.15.0 文件、目錄
/usr/share/doc/nginx-1.15.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz Nginx的手冊和幫助文件
------------------------------------------------------------------------------------------------------------------------------
/var/cache/nginx 目錄 Nginx的緩存目錄
------------------------------------------------------------------------------------------------------------------------------
/var/log/nginx 目錄 Nginx的日志目錄
------------------------------------------------------------------------------------------------------------------------------
二、安裝編譯參數
nginx -V :會出現如下信息
-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-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 執行對應模塊時,Nginx所保留的臨時性文件
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
------------------------------------------------------------------------------------------------------------------------------
--user=nginx
--group=nginx 設定Nginx的進程啟動的用戶和組用戶
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
三、進入Nginx主目錄
vim /etc/nginx/nginx.config
從上到下依次:
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;
定義日志類型
------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------
子配置文件
------------------------------------------------------------------------------------------------------------------------------
進入到子配置文件:
命令 : vi /etc/nginx/conf.d/default.conf
------------------------------------------------------------------------------------------------------------------------------
從上到下依次:
列 作用
listen 80; 監聽的端口
server_name localhost; 用域名方式訪問的地址
------------------------------------------------------------------------------------------------------------------------------
location / { 一個server里可以有多個location,當這是/的時候,root /usr/share/nginx/html; root是存放首頁的路徑
index index.html index.htm; 訪問的頁面,訪問index.html
}
------------------------------------------------------------------------------------------------------------------------------
error_page 500 502 503 504 404 /50x.html; 當訪問錯誤的時候,會顯示的頁面location = /50x.html {
root /usr/share/nginx/html; root是存放頁面的路徑
}
------------------------------------------------------------------------------------------------------------------------------
[root@localhost sbin]# find / -name nginx #找到啟動目錄 /etc/logrotate.d/nginx /etc/nginx /var/lib/nginx /var/log/nginx /usr/sbin/nginx #進入到此目錄 /usr/lib64/perl5/vendor_perl/auto/nginx /usr/lib64/nginx /usr/share/nginx [root@localhost sbin]# ./nginx #啟動nginx項目