摘要:什么是多路服用的實現方式基本原理函數監(jiān)視的文件描述符分類,分別是和。缺點能夠監(jiān)視文件描述符的數量存在最大限制。三的快速搭建和基本參數方式安裝參考創(chuàng)建文件,并輸入如下內容可選值有和。
Nginx的快速搭建和基本參數 一、Nginx簡介 1. Nginx簡述
Nginx是一個開源且高性能、可靠的HTTP中間件、代理服務。
2. 常見的HTTP服務httpd - Apache
IIS - 微軟
GWE - Google
tomcat - Sun
二、為什么選擇Nginx 1. IO多路復用epoll 什么是IO多路復用多個描述符的I/O操作都能在一個線程內并發(fā)交替地順序完成,這就叫I/O多路復用,這里的“復用”指的是復用同一個線程。
什么是epollIO多路服用的實現方式:select、poll、epoll
基本原理:
select 函數監(jiān)視的文件描述符分3類,分別是writefds、readfds、和exceptfds。調用后select函數會阻塞,直到有描述符就緒(有數據 可讀、可寫、或者有except),或者超時(timeout指定等待時間,如果立即返回設為null即可),函數返回。當select函數返回后,可以通過遍歷fdset,來找到就緒的描述符。
select缺點:
1.能夠監(jiān)視文件描述符的數量存在最大限制。
2.線性掃描效率低下。
基本原理:
epoll支持水平觸發(fā)和邊緣觸發(fā),最大的特點在于邊緣觸發(fā),它只告訴進程哪些fd剛剛變?yōu)榫途w態(tài),并且只會通知一次。還有一個特點是,epoll使用“事件”的就緒通知方式,通過epoll_ctl注冊fd,一旦該fd就緒,內核就會采用類似callback的回調機制來激活該fd,epoll_wait便可以收到通知。
epoll的優(yōu)點:
1.沒有最大并發(fā)連接的限制,能打開的FD的上限遠大于1024(1G的內存上能監(jiān)聽約10萬個端口)。
2.效率提升,不是輪詢的方式,不會隨著FD數目的增加效率下降。
3.內存拷貝,利用mmap()文件映射內存加速與內核空間的消息傳遞;即epoll使用mmap減少復制開銷。
CPU親和性(affinity)是一種把CPU核心和Nginx工作進程綁定方式,把每個worker進程固定在一個CPU上執(zhí)行,減少CPU的cache miss,獲得更好的性能。
4. sendfilesendfile可以讓Nginx在傳輸文件時直接在磁盤和tcp socket之間傳輸數據。如果這個參數不開啟,會先在用戶空間(Nginx進程空間)申請一個buffer,用read函數把數據從磁盤讀到cache,再從cache讀取到用戶空間的buffer,再用write函數把數據從用戶空間的buffer寫入到內核的buffer,最后到tcp socket。
三、Nginx的快速搭建和基本參數(CentOS7) 1. yum方式安裝【參考】 創(chuàng)建/etc/yum.repos.d/nginx.repo文件,并輸入如下內容[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/ gpgcheck=0 enabled=1
OS 可選值有 centos 和 rhel。運行 yum install -y nginx 安裝nginx 運行 nginx -v 查看nginx版本
OSRELEASE 為系統版本,例如 6 和 7 分別代表 6.x 和 7.x 的版本。
[root~]# nginx -v nginx version: nginx/1.14.02. 編譯參數詳解 查看nginx安裝時的編譯參數
nginx -V
[root~]# nginx -V nginx version: nginx/1.14.0 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"安裝編譯參數詳解【參考】
編譯選項 | 作用 |
---|---|
--prefix=/etc/nginx | 配置文件目錄 |
--sbin-path=/usr/sbin/nginx | 可執(zhí)行文件名稱和所在目錄 |
--modules-path=/usr/lib64/nginx/modules | nginx動態(tài)模塊的安裝目錄 |
--conf-path=/etc/nginx/nginx.conf | 主配置文件名稱和所在目錄 |
--error-log-path=/var/log/nginx/error.log | 全局錯誤日志文件名稱和所在目錄 |
--http-log-path=/var/log/nginx/access.log | HTTP服務器的主請求日志文件的名稱和所在目錄 |
--pid-path=/var/run/nginx.pid | nginx.pid所在目錄,這是儲存主進程的進程ID文件 |
--lock-path=/var/run/nginx.lock | 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 |
執(zhí)行對應模塊時nginx所保留的臨時文件 |
--user=nginx --group=nginx |
設定Nginx進程啟動的用戶和用戶組 |
--with-http_random_index_module | 目錄中隨機選擇一個隨機主頁 |
--with-http_stub_status_module | Nginx客戶端狀態(tài) |
--with-http_sub_module | HTTP內容替換 |
--with-cc-opt= |
設置額外的參數將被添加到CFLAGS變量 |
--with-ld-opt= |
設置附加參數,鏈接系統庫 |
rpm -ql nginx
[root~]# rpm -ql nginx /etc/logrotate.d/nginx /etc/nginx /etc/nginx/nginx.conf /etc/nginx/conf.d /etc/nginx/conf.d/default.conf /etc/nginx/fastcgi_params /etc/nginx/scgi_params /etc/nginx/uwsgi_params /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/win-utf /etc/nginx/mime.types /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 /etc/nginx/modules /usr/sbin/nginx /usr/sbin/nginx-debug /usr/share/doc/nginx-1.14.0 /usr/share/doc/nginx-1.14.0/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 /var/log/nginx /usr/libexec/initscripts/legacy-actions/nginx /usr/libexec/initscripts/legacy-actions/nginx/check-reload /usr/libexec/initscripts/legacy-actions/nginx/upgrade
默認路徑 | 類型 | 作用 |
---|---|---|
/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/uwsig_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/nginx-debug |
配置文件 | 用于配置出系統守護進程管理器管理方式 |
/usr/lib64/nginx/modules /etc/nginx/mudules |
目錄 | Nginx模塊目錄 |
/usr/sbin/nginx /usr/sbin/nginx-debug |
命令 | Nginx服務的啟動管理的終端命令 |
/usr/share/doc/nginx-1.14.0 /usr/share/doc/nginx-1.14.0/COPYRIGHT /usr/share/man/man8/nginx.8.gz |
文件、目錄 | Nginx手冊和幫助文件 |
/var/cache/nginx | 目錄 | Nginx緩存目錄 |
/var/log/nginx | 目錄 | Nginx日志目錄 |
命令 | 解釋 |
---|---|
nginx [-c <配置文件>] | 以指定的配置文件啟動nginx |
nginx -s quit | 正常停止nginx,Nginx在退出前完成已經接受的連接請求。 |
nginx -s stop | 快速停止nginx,不管有沒有正在處理的請求。 |
nginx -s reload [-c <配置文件>] | 重載配置文件 |
nginx -s reopen | 重新打開日志文件 |
nginx -v | 查看版本 |
nginx -V | 查看安裝時的編譯參數 |
nginx -t [-c <配置文件>] | 檢查配置文件語法是否正確 |
Nginx的master進程檢查配置文件的正確性,若是錯誤則返回錯誤信息,nginx繼續(xù)采用原配置文件進行工作(因為worker未受到影響)
Nginx啟動新的worker進程,采用新的配置文件
Nginx將新的請求分配新的worker進程
Nginx等待以前的worker進程的全部請求都返回后,關閉相關worker進程
重復上面過程,直到全部舊的worker進程都被關閉掉
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39997.html
摘要:什么是多路服用的實現方式基本原理函數監(jiān)視的文件描述符分類,分別是和。缺點能夠監(jiān)視文件描述符的數量存在最大限制。三的快速搭建和基本參數方式安裝參考創(chuàng)建文件,并輸入如下內容可選值有和。 Nginx的快速搭建和基本參數 一、Nginx簡介 1. Nginx簡述 Nginx是一個開源且高性能、可靠的HTTP中間件、代理服務。 2. 常見的HTTP服務 httpd - Apache IIS -...
摘要:基本入門前端掘金作者本文屬于翻譯文章,原文鏈接為。如果如何把應用放在容器中運行掘金本文適合零基礎,且希望使用運行應用的人士。后端掘金使用構建網站。 nginx 基本入門 - 前端 - 掘金作者:villainthr 本文屬于翻譯文章,原文鏈接為 nginx Beginner’s Guide。是至今為止見過最好的 nginx 入門文章。額。。。沒有之一。 這篇教程簡單介紹了 nginx ...
摘要:問題背景公司初創(chuàng)技術團隊,沒有任何基礎設施的情況下,需要搭建一系列管理以及自動化部署等工具所以引發(fā)了下面一系列的部署過程,歷時兩天,中間也是碰到各種問題,但最終把基本工具全部搭建成功,耶,下面帶大家一起看下此次搭建過程。 問題背景 公司初創(chuàng)技術團隊,沒有任何基礎設施的情況下,需要搭建一系列code管理以及自動化部署等工具....所以引發(fā)了下面一系列的部署過程,歷時兩天,中間也是碰到各種...
摘要:在上發(fā)布了一遍然后又在這里發(fā)布一遍哈哈以下是地址最近閑來無事,遂下載了,嘗試搭建下,之前有試過搭建寶塔,等,但最后結果都不怎么好,這次再次嘗試搭建下的開發(fā)環(huán)境,借鑒了很多網友的文章,歷經千辛,搭建成功,遂將過程總結總結,分享出來。 ???在csdn上發(fā)布了一遍,然后又在這里發(fā)布一遍,哈哈,以下是csdn地址: https://blog.csdn.net/sinat_3... ???最近...
閱讀 2975·2021-11-16 11:51
閱讀 2608·2021-09-22 15:02
閱讀 3723·2021-08-04 10:21
閱讀 3605·2019-08-30 15:43
閱讀 1947·2019-08-30 11:04
閱讀 3599·2019-08-29 17:14
閱讀 490·2019-08-29 12:16
閱讀 2933·2019-08-28 18:31