轉載請注明出處:[http://blog.csdn.net/guodongxiaren/article/details/40950249](http://blog.csdn.net/guodongxiaren/article/details/40950249) 謝謝合作
## 前言
不管是CentOS,或是Debian/Ubuntu,甚至是Windows。Nginx都有已編譯好的安裝包可用。通常只需要在終端上瀟灑地輸入`apt-get install ...`或是`yum install ..`就可以了。但是對于我這個`源碼編譯狂`來說,那樣一鍵安裝,顯然無法滿足我心理需求。
## 獲取Nginx源碼
### 下載
官網已經出現了1.7了。不過我還是選擇了目前穩定的1.6版本。打開你的終端,我們開始吧:
~~~
wget http://nginx.org/download/nginx-1.6.2.tar.gz
~~~
### 解壓
~~~
tar xvf nginx-1.6.2.tar.gz
~~~
## 編譯
進入剛才解壓的目錄下。你會發現,沒有其他軟件的源碼中所包含的INSTALL文件(該文件通常用于指導如何正確編譯源碼),有一個README,來我們`cat`一下。!坑爹啊,里面只有一句話!
~~~
Documentation is available at http://nginx.org
~~~
文檔在這個網站上。。。
不過不用管他了,看到目錄下綠色的configure文件在,那么我們直接上手吧。
### configure
~~~
./configure
~~~
然后,你可能會收到一個錯誤,提示你缺少PCRE。不過,如果你之前已經在這臺主機上成功安裝了Apache的話,那么現在是不會報錯的,因為Apache也是需要PCRE的。(我的是新搞的華為云的主機,幾乎裸機)
### 安裝PCRE
PCRE是什么呢?簡單說來,就是一個Perl的庫。那么我們接下來來編譯pcre的源碼。哈哈。
到官網去看,當前(截至2014/11/09)最新版本是8.36。
~~~
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
~~~
#### `-DHAVE_CONFIG_H`
接下來,同樣是用`tar xvf`解壓。解壓出一個pcre的目錄,我們`cd`進去。不由分說,直接`./configure`。
貌似沒出錯,接著`make`,貌似也沒出問題,繼續`make install`。咦,有錯誤!
~~~
libtool: compile: unrecognized option `-DHAVE_CONFIG_H'
~~~
是我沒裝libtool么,`yum install`一下。不對啊,裝了啊。后來百度發現是缺少了g++編譯器。對哦,我現在是裸機。這個我就不自己編譯了(快跑題了),敲命令安裝:
~~~
#CentOS下面
yum install gcc-c++
#Ubuntu下面
apt-get install g++
~~~
你應該是`root`身份,我就不多說了。此時會默認安裝一些依賴軟件,比如autoconf。
#### `zlib`
然后我們再重新`./configure`一下吧,瓦擦嘞,有問題(裝完g++,configure都報錯了。。),提示缺少zlib。好吧,繼續百度,進官網。復制鏈接,然后繼續`wget`。
~~~
wget http://zlib.net/zlib-1.2.8.tar.gz
~~~
繼續`tar xvf`o(╯□╰)o解壓出一個目錄。我這里目錄名是zlib-1.2.8。請注意我所有wget的文件都在同一層目錄下面,解壓路徑也是同一層。
來我`ls -F`一下:
~~~
nginx-1.6.2/ pcre-8.36/ zlib-1.2.8/
nginx-1.6.2.tar.gz pcre-8.36.tar.gz zlib-1.2.8.tar.gz
~~~
接著,我們再進入pcre的目錄下面,去configure。加上一個選項。
~~~
./configure --with-zlib=../zlib-1.2.8
~~~
注意選項后面應該是,你自己的zlib目錄的路徑。You Know?
此時,應該不報錯了,我們來一路高歌猛進,繼續敲兩個命令,——————>`make`——————>`make install`。
好了,沒錯誤安裝pcre完畢。深呼一口氣,恩,費力不少啊,不過終于安裝上了,好吧,教程結束。
咦?慢著,我們的教程不是教你安裝pcre的啊。我們是Nginx安裝教程啊。那好吧,繼續。
### make
在pcre安裝完畢之后,再次進入nginx的目錄下面,去`./configure`應該不會報錯了。
輕輕敲下四個字母`make`。接著觀看滾屏。
### make install
滾屏完畢,繼續敲`make install`。然后繼續看滾屏。。
## 開啟Nginx
前文之中,我們已經安裝好了Nginx,現在我們去開啟它。因為剛才nginx源碼目錄下,我們在configure的時候,沒有使用選項`--prefix`(該選項用來指定nginx的安裝位置),所以它默認安裝到了/usr/local/nginx/目錄中。 我們可以`cd`進去,也可以不進去。下面開啟它:
~~~
/usr/local/nginx/sbin/nginx
~~~
在安裝目錄下的sbin子目錄中有Nginx的可執行文件。不過,很不幸,我的機器上,又報錯了:
~~~
error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
~~~
提示缺少libpcre.so.1,但是我們剛才明明裝了pcre啊。原來是Nginx默認在/lib64/目錄下(我是64位機器,32位應該是搜索/lib/),搜索該庫文件。顯然,我們自己編譯的pcre,它的這個庫文件不在這個位置。來我們`find / -name 'libpcre.so.1'`一下,找找看:
~~~
/usr/local/lib/libpcre.so.1
~~~
好吧,在/usr/local/lib/下面。我們來建立以符號鏈接吧。
~~~
ln -s /usr/local/lib/libpcre.so.1 /lib64/libpcre.so.1
~~~
然后,這次應該真得可以了。。。開啟nginx:`/usr/local/nginx/sbin/nginx`。沒報錯,那我們來檢測一下,看誰在監聽80端口。
~~~
netstat -lpn|grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 28126/nginx
~~~
好了,打完收工。