nginx依賴模塊pcre、zlib、openssl 安裝

前言

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特點是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好。(百度百科- http://www.dwz.cn/x32kG

1.Nginx安裝

我使用的環境是64位 Ubuntu 14.04。nginx依賴以下模塊:

l  gzip模塊需要 zlib 庫

l  rewrite模塊需要 pcre 庫

l  ssl 功能需要openssl庫

1.1.安裝pcre

1.         獲取pcre編譯安裝包,在http://www.pcre.org/上可以獲取當前最新的版本

2.         解壓縮pcre-xx.tar.gz包。

3.         進入解壓縮目錄,執行./configure。

4.         make & make install

1.2.安裝openssl

1.         獲取openssl編譯安裝包,在http://www.openssl.org/source/上可以獲取當前最新的版本。

2.         解壓縮openssl-xx.tar.gz包。

3.         進入解壓縮目錄,執行./config。

4.         make & make install

1.3.安裝zlib

1.         獲取zlib編譯安裝包,在http://www.zlib.net/上可以獲取當前最新的版本。

2.         解壓縮openssl-xx.tar.gz包。

3.         進入解壓縮目錄,執行./configure。

4.         make & make install

1.4.安裝nginx

1.         獲取nginx,在http://nginx.org/en/download.html上可以獲取當前最新的版本。

2.         解壓縮nginx-xx.tar.gz包。

3.         進入解壓縮目錄,執行./configure

4.         make & make install

若安裝時找不到上述依賴模塊,使用--with-openssl=<openssl_dir>、--with-pcre=<pcre_dir>、--with-zlib=<zlib_dir>指定依賴的模塊目錄。如已安裝過,此處的路徑爲安裝目錄;若未安裝,則此路徑爲編譯安裝包路徑,nginx將執行模塊的默認編譯安裝。


遇到的問題:

1.You need a C++ compiler for C++ support

 


linux下安裝安裝pcre-8.32 configure: error: You need a C++ compiler for C++ support


linux下安裝安裝pcre-8.32
./configure --prefix=/usr/local/pcre 出現以下錯誤
configure: error: You need a C++ compiler for C++ support
正解
yum install -y gcc gcc-c++

2.centos安裝nginx 報錯:cp: `conf/koi-win' and `/usr/local/nginx/conf/koi-win' are the same file

解決辦法 

將這一步改一下

./configure --prefix=/usr/local/nginx  

TO

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf



啓動nginx之後,瀏覽器中輸入http://localhost可以驗證是否安裝啓動成功。

clip_image002

2.Nginx配置

安裝完成之後,配置目錄conf下有以下配置文件,過濾掉了xx.default配置:

tyler@ubuntu:/opt/nginx-1.7.7/conf$ tree |grep -v default

.

├── fastcgi.conf

├── fastcgi_params

├── koi-utf

├── koi-win

├── mime.types

├── nginx.conf

├── scgi_params

├── uwsgi_params

└── win-utf

除了nginx.conf,其餘配置文件,一般只需要使用默認提供即可

2.1.nginx.conf

nginx.conf是主配置文件,默認配置去掉註釋之後的內容如下圖所示:

l  worker_process表示工作進程的數量,一般設置爲cpu的核數

l  worker_connections表示每個工作進程的最大連接數

l  server{}塊定義了虛擬主機

n  listener監聽端口

n  server_name監聽域名

n  location{}是用來爲匹配的 URI 進行配置,URI 即語法中的“/uri/”。location  / { }匹配任何查詢,因爲所有請求都以 / 開頭。

u  root指定對應uri的資源查找路徑,這裏html爲相對路徑,完整路徑爲/opt/ opt/nginx-1.7.7/html/

u  index指定首頁index文件的名稱,可以配置多個,以空格分開。如有多個,按配置順序查找。

clip_image004

從配置可以看出,nginx監聽了80端口、域名爲localhost、跟路徑爲html文件夾(我的安裝路徑爲/opt/nginx-1.7.7,所以/opt/nginx-1.7.7/html)、默認index文件爲index.html, index.htm、服務器錯誤重定向到50x.html頁面。

可以看到/opt/nginx-1.7.7/html/有以下文件:

tyler@ubuntu:/opt/nginx-1.7.7/html$ ls

50x.html  index.html

這也是上面在瀏覽器中輸入http://localhost,能夠顯示歡迎頁面的原因。實際上訪問的是/opt/nginx-1.7.7/html/index.html文件。

2.2.mime.types

文件擴展名與文件類型映射表,nginx根據映射關係,設置http請求響應頭的Content-Type值。當在映射表找不到時,使用nginx.conf中default-type指定的默認值。例如,默認配置中的指定的default-type爲application/octet-stream。

    include       mime.types;

    default_type  application/octet-stream;

默認

下面截一段mime.types定義的文件擴展名與文件類型映射關係,完整的請自行查看:

clip_image005

2.3.fastcgi_params

nginx配置Fastcgi解析時會調用fastcgi_params配置文件來傳遞服務器變量,這樣CGI中可以獲取到這些變量的值。默認傳遞以下變量:

clip_image006

這些變量的作用從其命名可以看出。

 

2.4.fastcgi.conf

對比下fastcgi.conf與fastcgi_params文件,可以看出只有以下差異:

tyler@ubuntu:/opt/nginx-1.7.7/conf$ diff fastcgi.conf fastcgi_params

2d1

< fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

即fastcgi.conf只比fastcgi_params多了一行“fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;”

原本只有fastcgi_params文件,fastcgi.conf是nginx 0.8.30 (released: 15th of December 2009)才引入的。主要爲是解決以下問題(參考:http://www.dwz.cn/x3GIJ):

原本Nginx只有fastcgi_params,後來發現很多人在定義SCRIPT_FILENAME時使用了硬編碼的方式。例如,fastcgi_param SCRIPT_FILENAME /var/www/foo$fastcgi_script_name。於是爲了規範用法便引入了fastcgi.conf。

不過這樣的話就產生一個疑問:爲什麼一定要引入一個新的配置文件,而不是修改舊的配置文件?這是因爲fastcgi_param指令是數組型的,和普通指令相同的是:內層替換外層;和普通指令不同的是:當在同級多次使用的時候,是新增而不是替換。換句話說,如果在同級定義兩次SCRIPT_FILENAME,那麼它們都會被髮送到後端,這可能會導致一些潛在的問題,爲了避免此類情況,便引入了一個新的配置文件。

因此不再建議大家使用以下方式(搜了一下,網上大量的文章,並且nginx.conf的默認配置也是使用這種方式):

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

而使用最新的方式:

include fastcgi.conf;

 

2.5.uwsgi_params

與fastcgi_params一樣,傳遞哪些服務器變量,只有前綴不一樣,以uwsgi_param開始而非fastcgi_param

2.6.scgi_params

與fastcgi_params一樣,傳遞哪些服務器變量,只有前綴不一樣,以uwsgi_param開始而非fastcgi_param

2.7.koi-utf、koi-win、win-utf

這三個文件都是與編碼轉換映射文件,用於在輸出內容到客戶端時,將一種編碼轉換到另一種編碼。

koi-win: charset_map  koi8-r < -- > windows-1251

koi-utf: charset_map  koi8-r < -- > utf-8

win-utf: charset_map  windows-1251 < -- > utf-8

koi8-r是斯拉夫文字8位元編碼,供俄語及保加利亞語使用。在Unicode未流行之前,KOI8-R 是最爲廣泛使用的俄語編碼,使用率甚至起ISO/IEC 8859-5還高。這3個文件存在是因爲作者是俄國人的原因。

 

3.相關鏈接

http://www.pcre.org/

http://www.openssl.org/source/

http://www.zlib.net/

http://nginx.org/

百度百科:http://www.dwz.cn/x32kG

fastcgi.conf vs fastcgi_params:http://www.dwz.cn/x3GIJ

發佈了142 篇原創文章 · 獲贊 113 · 訪問量 173萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章