Nginx原始碼編譯及安裝

2021-10-07 06:24:26 字數 2473 閱讀 8841

1. nginx 介紹

nginx是 http 和反向**伺服器,郵件**伺服器,以及 igor sysoev 最初編寫的通用tcp/udp **伺服器。在很長一段時間以來,它一直在許多負載重的俄羅斯**上執行,包括: yandex,mail.ru,vk 和 rambler。根據netcraft的說法,nginx在 2017 年3 月份服務或**了28.50%的最繁忙的**。這裡有一些成功案例:netflix,wordpress.com,fastmail.fm。

nginx特性

nginx有什麼不同?nginx使用可擴充套件的事件驅動架構,而不是更傳統的過程驅動架構。這需要更低的記憶體占用,並且當併發連線擴大時,使記憶體使用更可**。在傳統的 web 伺服器體系結構中,每個客戶端連線作為乙個單獨的程序或執行緒處理,隨著**的流行度增加,併發連線數量的增加,web伺服器減慢,延遲了對使用者的響應。從技術的角度來看,產生乙個單獨的程序/執行緒需要將cpu切換到新的任務並建立乙個新的執行時上下文,消耗額外的記憶體和cpu時間,從而對效能產生負面影響。nginx開發的目標是實現10倍以上的效能,優化伺服器資源的使用,同時也能夠擴充套件和支援**的動態增長。因此,nginx成為最知名的模組化,事件驅動,非同步,單執行緒 web 伺服器和 web **之一。nginx是乙個高效能的 web 和反向**伺服器, 它具有很多非常優越的特性:

作為web伺服器

相比 apache, nginx使用更少的資源,支援更多的併發連線,體現更高的效率,這點使 nginx尤其受到虛擬主機提供商的歡迎。能夠支援高達 50,000 個併發連線數的響應,感謝 nginx為我們選擇了 epoll and kqueue 作為開發模型

作為負載均衡伺服器

nginx既可以在內部直接支援 rails 和 php,也可以支援作為 http **伺服器 對外進行服務。nginx用 c 編寫, 不論是系統資源開銷還是 cpu 使用效率都比 perlbal 要好的多。

nginx架構

處理併發連線的傳統的基於程序或執行緒的模型涉及使用單獨的程序或執行緒處理每個連線,並阻止網路或輸入/輸出操作。

根據應用,在記憶體和 cpu 消耗方面可能非常低效。產生乙個單獨的程序或執行緒需要準備乙個新的執行時環境,包括分配堆和堆疊記憶體,以及建立新的執行上下文。額外的cpu時間也用於建立這些專案,這可能會導致由於執行緒在過多的上下文切換上的轉機而導致效能下降。所有這些併發症都表現在較老的 web 伺服器架構(如apache)中。 這是提供豐富的一般應用功能和優化的伺服器資源使用之間的乙個折衷。

從一開始 nginx就是乙個專門的工具,可以實現更高效能,更密集和經濟地使用伺服器資源,同時實現**的動態發展,所以它採用了不同的模式。它實際上受到各種作業系統中高階事件機制的不斷發展的啟發。發展結果變成是乙個模組化的,事件驅動的,非同步的,單執行緒的非阻塞架構的 nginx **基礎。nginx大量使用復用和事件通知,並專門用於分離程序的特定任務。連線在有限數量的單執行緒程序稱為工作(worker)的高效執行迴圈中處理。 在每個工作(worker)中, nginx可以處理每秒數千個併發連線和請求

2. nginx 安裝

準備第三方支援庫原始碼:

nginx-1.13.7.tar.gz

openssl-1.1.0g.tar.gz

pcre-8.41.tar.gz

zlib-1.2.11.tar.gz

解壓每個包

在/usr/local/目錄下面, 產生了 nginx 的目錄

原始碼編譯安裝Nginx

nginx在github上有乙個唯讀原始碼庫,我獲取的原始碼方式為 git clone cd nginx cp auto configure configure make sudo make install 預設安裝後nginx位於 usr local nginx 目錄下,nginx的配置檔案在 u...

原始碼編譯安裝nginx

centos7系統 192.168.124.204 關閉防火牆 關閉selinux yum y install vim wget 建立nginx使用者 useradd nginx 修改nginx使用者登陸許可權 解壓nginx包,進入安裝包目錄 root localhost tar xzf ngin...

nginx安裝 原始碼編譯

官方文件 參考 公升級參考 編譯原始碼需要的元件 1.zlib 2.pcre 正規表示式 3.openssl 可選 4.nginx 1.編譯zlib version 1.1.3 1.2.8 mkdir usr src zlib cd usr src zlib wget tar xvf zlib 1....