天天看點

《精通Nginx》一1.2 從源代碼安裝Nginx

本節書摘來異步社群《精通nginx》一書中的第1章,第1.2節,作者: 【瑞士】dimitri aivaliotis 譯者: 陶利軍 責編: 陳冀康,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

nginx代碼提供了兩個獨立的下載下傳分支—标準版和開發版。開發分支是一個正處于積極開發狀态的版本。在這個版本中将會有一些新的功能被內建到其中,在标準版中是找不到這些功能的。當一個“開發”版被釋出時,它會經曆同樣的qa和作為标準版的一組類似功能的測試。是以無論哪一個分支都可以用于生産環境。兩者主要的不同在于對第三方子產品的支援。在開發版本裡内部的api可能會改變,而标準版本卻保持不變,是以為了向下相容第三方子產品,在标準版本中第三方子產品都可以有效使用。

為了從源代碼編譯nginx,系統需要具備某些必要的條件。除了編譯器之外,如果想啟用ssl支援和能夠使用rewrite子產品,那麼還需要提供相應的openssl和pcre (perl compatible regular expressions)庫及開發頭檔案。這依賴于系統,也有可能在系統中這些必要條件已經被預設安裝了,如果沒有安裝,那麼需要從其安裝包安裝或者是從源碼下載下傳并解壓安裝,但是要在nginx的配置檔案中指定它們在系統中安裝的位置。

如果在配置檔案中使用了–with-<library>=<path>選項,那麼nginx将試圖建立一個靜态的依賴庫。如果你想是的nginx不依賴于系統的任何其他部分,也可能是你想多榨取一點nginx二進制額外的性能,那麼你可能會使用建構靜态庫的做法。如果你使用的外部庫的功能隻能從某個版本起(例如,npn[next protocol negotiation] tls擴充從openssl 1.0.1版本有效),那麼你就不得不将其指定到特定版本解壓後的源代碼路徑。

根據你自己的喜好,可能還會提供其他的、可選的安裝包。這些安裝包包括md5和sha-1以支援雜湊演算法、zlib壓縮庫、libatomic庫。在nginx中,很多地方會使用到雜湊演算法,例如,為了計算uri哈希進而計算緩存key。zlib壓縮庫被用于投遞gzip壓縮的内容。如果atomic_ops庫有效,那麼nginx将會使用它實作自動記憶體更新操作,以便實作高性能的記憶體鎖定代碼。

使用下面的指令來配置nginx。

然後使用下面的指令編譯并且安裝。

下表的配置選項将幫助您設計出自己的nginx二進制。這些選項對nginx都是有效的,子產品可以被獨立激活。

在編譯自己的二進制nginx時,你會有很大的靈活性來包含你僅使用的功能。你已經說定使用哪個使用者運作nginx了嗎?你要使用預設的logfile位置,以便不用在nginx的配置檔案明确地說明它們嗎?表1-1所示是配置選項清單,通過它來幫助你設計你自己的nginx指令。

《精通Nginx》一1.2 從源代碼安裝Nginx

如表1-2所示,可以優化編譯,這正是下表中的選項的用武之地。

《精通Nginx》一1.2 從源代碼安裝Nginx

繼續閱讀