1. 程式人生 > >CentOS中源碼編譯安裝Nginx

CentOS中源碼編譯安裝Nginx

pil 提示頁面 gcc-c++ gnu ast 沒有 nginx編譯 rewrite get

1.從官網通過wget命令將Nginx源碼包下載到Linux上

? Nginx下載頁面:http://nginx.org/en/download.html

2.在Linux上安裝需要依賴的環境

yum -y install gcc gcc-c++ automake zlib zlib-devel openssl openssl--devel pcre pcre-devel

??gcc為GNU Compiler Collection的縮寫,可以編譯C和C++源代碼等,它是GNU開發的C和C++以及其他很多種語言 的編譯器(最早的時候只能編譯C,後來很快進化成一個編譯多種語言的集合,如Fortran、Pascal、Objective-C、Java、Ada、 Go等。)

??gcc 在編譯C++源代碼的階段,只能編譯 C++ 源文件,而不能自動和 C++ 程序使用的庫鏈接(編譯過程分為編譯、鏈接兩個階段,註意不要和可執行文件這個概念搞混,相對可執行文件來說有三個重要的概念:編譯(compile)、鏈接(link)、加載(load)。源程序文件被編譯成目標文件,多個目標文件連同庫被鏈接成一個最終的可執行文件,可執行文件被加載到內存中運行)。因此,通常使用 g++ 命令來完成 C++ 程序的編譯和連接,該程序會自動調用 gcc 實現編譯。
  gcc-c++也能編譯C源代碼,只不過把會把它當成C++源代碼,後綴為.c的,gcc把它當作是C程序,而g++當作是c++程序;後綴為.cpp的,兩者都會認為是c++程序,註意,雖然c++是c的超集,但是兩者對語法的要求是有區別的。
??automake是一個從Makefile.am文件自動生成Makefile.in的工具。為了生成Makefile.in,automake還需用到perl,由於automake創建的發布完全遵循GNU標準,所以在創建中不需要perl。libtool是一款方便生成各種程序庫的工具。
??pcre pcre-devel:在Nginx編譯需要 PCRE(Perl Compatible Regular Expression),因為Nginx 的Rewrite模塊和HTTP 核心模塊會使用到PCRE正則表達式語法。
??zlip zlib-devel:nginx啟用壓縮功能的時候,需要此模塊的支持。
??openssl openssl-devel:開啟SSL的時候需要此模塊的支持。

3.根據系統情況自動生成編譯時所需的Makefile文件(如果依賴沒安裝則這一步就會出現報錯)

#生成Makefile
./configure

4.編譯和安裝

#編譯
make
#安裝
make install

5.安裝後,日誌中將會包含了Nginx的具體安裝目錄

??如果在./configure未指定安裝的目錄,則編譯安裝後的Nginx一般在/usr/local/nginx下。安裝後,有四個主要的目錄。

??conf:保存nginx所有的配置文件,其中nginx.conf是nginx服務器的最核心最主要的配置文件,其他的.conf則是用來配置nginx相關的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params兩個文件,配置文件一般都有個樣板配置文件,是文件名.default結尾,使用的使用將其復制為並將default去掉即可。
??html:保存了nginx服務器的web文件,但是可以更改為其他目錄保存web文件,另外還有一個50x的web文件是默認的錯誤頁面提示頁面。
??logs:用來保存nginx服務器的訪問日誌錯誤日誌等日誌,logs目錄可以放在其他路徑,比如/var/logs/nginx裏面。
??sbin:保存nginx二進制啟動腳本,可以接受不同的參數以實現不同的功能。

6.通過命令啟動和關閉nginx:

#啟動Nginx,一般來說編譯安裝時這個sbin下的命令是沒有填到PATH中的也沒有將Nginx作為系統服務
/usr/local/nginx/sbin/nginx/nginx #只能通過絕對路徑啟動Nginx

7.重讀配置文件和關閉服務:

/usr/local/nginx/sbin/nginx -s reload  #不停止服務重讀配置文件
/usr/local/nginx/sbin/nginx -s stop #停止服務 

8.查看進程和驗證端口是否開啟:

??一般來說在執行了啟動Nginx的那個命令後,沒有報錯則說明Nginx是啟動了的,如果想要確認是否啟動,可以通過下面的命令進行查詢。

ps -ef | grep nginx

技術分享圖片

#使用下面的命令來確認端口對應的進程是不是Nginx,如果沒有安裝lsof,則可以通過yum安裝先
lsof -i:80

技術分享圖片

CentOS中源碼編譯安裝Nginx