Nginx入門-在Linux上安裝Nginx

介紹

簡而言之,Nginx(發(fā)音為“engine x”)是一個小型、功能強大并且可擴展的 web/proxy 服務(wù)器祷安。根據(jù)Netcraft最近的一次調(diào)查汇鞭,Nginx已經(jīng)支持了全球超過15%的網(wǎng)站凉唐,共111,680,078家 [1],其中不乏Netflix和WordPress.com這樣的龐然大物霍骄。

Nginx基于Simplified BSD許可(一個開源許可)發(fā)行,可以從在線倉庫或者源代碼進行安裝读整。在本文中簿训,我們將會涵蓋如何在Debian,Ubuntu以及CentOS下安裝Nginx米间。需要特別注意的一點是强品,在線倉庫中的版本通常都會滯后一點。如果我們想體驗最新的功能和bug修正屈糊,那么我推薦根據(jù)源代碼來構(gòu)建的榛,或者直接從nginx.org下載安裝包。

使用在線倉庫在Debian Wheezy 7.2 上安裝Nginx

通過使用Debian GNU/Linux包管理器的高級界面工具——aptitude逻锐,我們可以查看Nginx相關(guān)的包列表(如圖1所示)夫晌。但是,我建議你先運行命令aptitude update昧诱,以便可以看到可用包的最新列表晓淀。


圖1

(順便提一下,第一列中的”p“表示當前操作系統(tǒng)上沒有安裝此包)

如果我們不知道要安裝哪個包盏档,可以在命令aptitude search后跟上一個包名凶掰,例如aptitude search nginx,這樣可以幫助我們進行選擇蜈亩。根據(jù)列出的各個包的說明懦窘,我們將選擇安裝nginx-full(如圖2所示)。需要重點注意的是勺拣,每個包的描述中都列出了在使用倉庫進行安裝時,默認會安裝的其他模塊鱼填,我們將在本文稍后部分再對其進行介紹药有。


圖2 使用在線倉庫在Debian Wheezy 7.2上安裝nginx-full

現(xiàn)在,我們已經(jīng)安裝了Nginx苹丸,但還沒有啟動它愤惰。隨后我們運行service nginx start啟動Nginx,即可在瀏覽器中打開其啟動頁面(如圖3所示)赘理。


圖3 Nginx啟動頁面

接下來這條命令會顯示我們剛安裝的Nginx的版本(如圖4所示)


圖4 從倉庫中安裝的Nginx v1.2.1版本

但是宦言,如今Nginx的最新版本已經(jīng)是1.5.6(譯者注:現(xiàn)在已經(jīng)是1.9.11),而版本1.2.1已經(jīng)與2012年6月5日過期了[2]商模。顯然奠旺,如果我們希望使用最新的Nginx版本蜘澜,就需要從源代碼進行安裝。

使用源代碼在Debian Wheezy 7.2上安裝Nginx

請注意响疚,以下指令代表了在Linux下從頭開始構(gòu)建一個包的默認步驟鄙信,而我們都知道,使用./configure忿晕,makemake install的常規(guī)安裝步驟装诡,會使得卸載包變得困難,因為系統(tǒng)沒有辦法去跟蹤哪些文件在安裝過程中被添加或修改践盼。

總而言之鸦采,你應(yīng)該有一個有說服力的原因(一個真正強有說服力的原因!)咕幻,才可以選擇上面提到的這種方式來編譯一個包渔伯。雖然你也許有一些這類的原因,但是最常見的一個原因是要在系統(tǒng)中安裝某個包的更新版本谅河,或者為了添加某個特定的功能咱旱。

如果你構(gòu)建并安裝了一個.deb或者一個.rpm文件,那么相應(yīng)的包管理器(aptitude/apt-get或者yum)就能夠感知到包的存在绷耍,并且它可以確保你沒有覆蓋之前安裝的包的文件吐限。另一方面,make install命令會覆蓋安裝過程中遇到的所有文件褂始。我們稍后會討論诸典,當我們必須要從源代碼編譯并安裝一個包時,可選的其他方式崎苗。

既然我們已經(jīng)決定使用Nginx的最新版本狐粱,那么久需要按照如下步驟,從http://nginx.org/download/下載已經(jīng)壓縮好的tar文件胆数,并且在構(gòu)建之前進行解壓縮肌蜻。

  1. 下載tar包:wget http://nginx.org/download/nginx-1.5.6.tar.gz
  2. 解壓縮:tar xvzf nginx-1.5.6.tar.gz
  3. 進入上一步自動創(chuàng)建的目錄: cd nginx-1.5.6

然后

  1. cd nginx-1.5.6 (如果你希望列出所有的配置選項,可以使用--help選項)必尼。./configure命令的輸出會顯示出Nginx的安裝目錄(如圖5所示的 /usr/local/nginx

圖5 Nginx安裝路徑

  1. make
  2. make install

雖然安裝完成了蒋搜,但是Nginx所在目錄還沒有被添加到PATH環(huán)境變量中(如圖6所示)


圖6 PATH變量(之前)

現(xiàn)在我們將/usr/local/nginx/sbin目錄添加到PATH變量中,并檢查我們剛剛從源代碼安裝的Nginx版本(如圖7所示)判莉。


圖7 PATH變量(之后)豆挽,并且從源代碼安裝了Nginx v1.5.6版本

注意:在安裝過程中三圆,可能系統(tǒng)會提示缺少庫文件(如圖8所示)音羞。這時我們可以選擇安裝提供該庫文件(例如我們遇到的libpcre3-devzlib1g-dev文件)的包,或者在配置是忽略這些提示馅扣。


圖8 缺少庫文件

在Ubuntu 12.04 LTS上安裝Nginx

雖然Ubuntu的最新版本是13.10(代號 Saucy Salamander锰镀,于2013年十月17日發(fā)布)娘侍,我們還是決定在Ubuntu 12.04 LTS(代號 Precise Pangolin)上進行安裝咖刃,因為Canonical提供了直到2017年4月份的延長支持。

我們會繼續(xù)通過sudo aptitudeupdate來更新源代碼私蕾,然后從分發(fā)版的在線倉庫中安裝nginx-full僵缺。因為Ubuntu默認禁止root賬戶,所以必須加上關(guān)鍵字"sudo"(如圖9所示)踩叭。除此之外磕潮,其他的所有安裝步驟都跟我們之前在Debian上的操作幾乎一樣。從源代碼進行安裝也是一樣的容贝。


圖9 在Ubuntu上從倉庫安裝nginx-full包

但是自脯,我們可以看到,可用的版本比之前更低(如圖10所示)斤富。


圖10 在Ubuntu上從倉庫安裝的Nginx版本

同之前一樣膏潮,我們會在從源代碼進行安裝之前,刪除(卸載)掉nginx相關(guān)的所有包(如圖11所示)满力。


圖11

同之前一樣焕参,在從源代碼安裝Nginx之后,我們的包都是最新的版本了(如圖12所示)油额。


圖12

但是叠纷,當我們在嘗試啟動Nginx時——就像我們在Debian中做的那樣——我們很可能會得到一個nginx: unrecognized service的錯誤消息(如圖13所示)。


圖13

這是因為我們是從源代碼安裝的該包潦嘶,因此啟動腳本沒有被放置在合適的地方涩嚣。對于這種情況,我們或者可以使用全路徑(/usr/local/nginx/sbin/nginx)來運行主程序以啟動nginx守護進程掂僵,或者可以編寫一個腳本來幫我們做這件事航厚,當然,最后一種也是最好的方式锰蓬,是能夠像其他程序一樣幔睬,使用常見的參數(shù)(start, stop, restart, reload等等)。同時芹扭,我們也可以使用隨本教程提供的啟動腳本(讀者可以自行修改來滿足需求)麻顶。

一旦我們將啟動腳本添加到/etc/init.d目錄(并將其命名為nginx),我們就需要將DAEMON變量指向到目錄/usr/local/nginx/sbin/nginx冯勉,并將安裝目錄(/usr/local/nginx/sbin)添加到PATH變量中(請參考圖14a和14b)澈蚌。


圖14a Nginx啟動腳本(之前)


圖14b Nginx啟動腳本(之后)

然后我們就可以按如下方式來運行腳本(如圖15a所示)


圖15a Nginx在端口80監(jiān)聽摹芙,PID為1931

同時灼狰,我們還需要確保nginx.conf文件”知道“從哪找到Nginx的PID。因此我們注釋掉nginx.conf中的如下幾行(如圖15c所示浮禾,該文件一般在/usr/local/nginx/conf目錄下)并將目錄改為啟動腳本中的目錄(如圖15b所示)交胚。


圖15b 文件/var/run/$NAME.pid (此處$NAME=nginx) 包含了Nginx的當前PID


圖15c

使用checkinstall包來跟蹤所有通過安裝腳本創(chuàng)建或修改的文件

checkinstall包(如圖16所示)可以跟蹤所有在安裝過程中創(chuàng)建或修改的文件份汗。它還可以創(chuàng)建并安裝一個與包管理器兼容的包(.deb或者.rpm)(如圖16和17所示),這樣你就可以在不需要這個包的時候完整的卸載掉蝴簇。關(guān)于它的用法請檢查附帶的man手冊杯活。


圖16a 安裝checkinstall包


圖16b 使用checkinstall創(chuàng)建一個.deb文件并進行安裝(I)


圖16c 使用checkinstall創(chuàng)建一個.deb文件并進行安裝(II)

當我們運行 aptitude search nginx后,會連同注釋(之前在安裝時作為描述)一起顯示出我們已經(jīng)安裝了的包(如圖17所示)熬词。


圖17

在CentOS 6.4上安裝Nginx

從倉庫安裝

  1. http://nginx.org/packages/centos/6 處下載并運行nginx yum配置文件旁钧。確保你選擇了合適的架構(gòu);”noarch“是一個穩(wěn)妥的選擇:

    1. 下載:wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    2. 安裝:wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
  2. 安裝Nginx:yum install nginx

  3. 啟動Nginx:service nginx start

從源代碼安裝

按照同Debian和Ubuntu一樣的流程

啟用模塊

根據(jù)Nginx的wiki[3]互拾,由于當前不支持運行時啟用模塊歪今,所以必須在編譯時選擇啟用的模塊。通過運行./configure --help颜矿,可以找到配置腳本中提供的所有編譯時選項寄猩,包括可選模塊。不幸的是骑疆,如果我們已經(jīng)安裝了Nginx但又想添加某一個模塊田篇,我們必須先卸載它,再重新用所需模塊進行編譯箍铭。

對于標準的HTTP模塊列表泊柬,請參考表1[4]

名稱 描述 版本 禁用參數(shù)
HTTP Core 控制端口、位置坡疼、錯誤頁面彬呻、別名及其他必要項 -without-http
Access 根據(jù)IP地址允許/禁止訪問 –without-http_access_module
Auth Basic 基礎(chǔ)HTTP認證 –without-http_auth_basic_module
Auto Index 生成自動目錄列表 –without-http_autoindex_module
Browser 解析“User-Agent” 0.4.3 –without-http_browser_module
Charset 重新對頁面編碼 –without-http_charset_module
Empty GIF 從內(nèi)存中提供一個1x1的圖片 0.3.10 –without-http_empty_gif_module
FastCGI FastCGI 支持 –without-http_fastcgi_module
Geo 使用IP地址的鍵/值對來設(shè)置變量 0.1.17 –without-http_geo_module
Gzip 對響應(yīng)進行Gzip壓縮 –without-http_gzip_module
Headers 設(shè)置任意的HTTP響應(yīng)頭
Index 控制哪些文件可以用作索引
Limit Requests 限制客戶端連接的頻率 0.7.20 –without-http_limit_req_module
Limit Conn 基于一個變量來限制并發(fā)連接 –without-http_limit_conn_module
Log 自定義訪問日志
Map 使用任意的鍵/值對來配置變量 0.3.16 –without-http_map_module
Memcached Memcached支持 –without-http_memcached_module
Proxy 代理到上游服務(wù)器 –without-http_proxy_module
Referer 根據(jù)Referer頭信息來過濾請求 –without-http_referer_module
Rewrite 使用正則表達式來改寫請求 –without-http_rewrite_module
SCGI 支持SCGI協(xié)議 0.8.42 –without-http_scgi_module
Split Clients 根據(jù)一些條件類分隔客戶端 0.8.37 –without-http_split_clients_module
SSI 支持Server-side Includes 命令 –without-http_ssi_module
Upstream 用于負載均衡 –without-http_upstream_ip_hash_module (只禁用ip_hash 指令)
User ID 發(fā)起身份確認cookie –without-http_userid_module
uWSGI uWSGI 協(xié)議支持 0.8.40 –without-http_uwsgi_module
X-Accel X-Sendfile-like 模塊

表1 標準的HTTP模塊

對于可選的HTTP模塊列表,請參考表2[5]

名稱 描述 版本 啟用參數(shù)
Addition 在頁面后追加文字 –with-http_addition_module
Auth Request 基于子請求的結(jié)果來實現(xiàn)客戶端認證 1.5.4 –with-http_auth_request_module
Degradation 在低內(nèi)存情況下柄瑰,允許對某些地址返回204或者444 0.8.25 –with-http_degradation_module
Embedded Perl 在Nginx配置文件中使用Perl 0.3.21 –with-http_perl_module
FLV Flash流視頻 0.4.7 –with-http_flv_module
GeoIP 使用來自MaxMind GeoIP二進制文件的信息來創(chuàng)建變量 0.8.6, 0.7.63 –with-http_geoip_module
Google Perftools Google性能工具支持 0.6.29 –with-google_perftools_module
Gzip Precompression 對靜態(tài)文件啟用預(yù)壓縮版本 0.6.23 –with-http_gzip_static_module
Gunzip 即時對經(jīng)過gzip壓縮的響應(yīng)進行解壓縮 1.3.6 –with-http_gunzip_module
Image Filter 使用Libgd來轉(zhuǎn)換圖片 0.7.54 0.7.54
MP4 啟用mp4流媒體及其seeking功能 1.1.3, 1.0.7 –with-http_mp4_module
Random Index 將目錄索引隨機化 0.7.15 –with-http_random_index_module
Real IP 使用nginx作為后端服務(wù)器時啟用 0.3.8 –with-http_realip_module
Secure Link 使用秘鑰來保護頁面 0.7.18 –with-http_secure_link_module
SSL 支持HTTPS/SSL –with-http_ssl_module
Stub Status 查看服務(wù)器統(tǒng)計信息 0.1.18 –with-http_stub_status_module
Substitution 替換頁面中的文字 –with-http_sub_module
WebDAV 支持WebDAV 穿越 0.3.38 –with-http_dav_module
XSLT 使用XSLT對頁面進行再處理 0.7.8 –with-http_xslt_module

表2 可選的HTTP模塊

對于郵件模塊列表闸氮,請參考表3[6]

名稱 描述 配置參數(shù)
Mail Core 配置郵件模塊的核心參數(shù) –with-mail
POP3 POP3設(shè)置 –without-mail_pop3_module
IMAP IMAP設(shè)置 –without-mail_imap_module
SMTP SMTP設(shè)置 –without-mail_smtp_module
Auth HTTP 使用Nginx來認證郵件服務(wù)
Proxy Nginx可以代理 IMAP教沾、POP3及SMTP協(xié)議
SSL 該模塊可以確保為POP3/IMAP/SMTP提供SSL/TLS支持 –with-mail_ssl_module

表3 郵件模塊

舉例說明蒲跨,我們可以重新編譯Nginx,以便添加其他模塊(如圖18所示)授翻。


圖18 使用其他模塊重新編譯Nginx

將Nginx添加為一個系統(tǒng)服務(wù)

  • Debian/Ubuntuupdate-rc.d –f nginx defaults (在Ubuntu上使用sudo

注意:如果已經(jīng)存在/etc/rcrunlevel.d/[SK]??name 這樣的文件或悲,那么update-rc.d將不會起作用。這樣做的目的堪唐,是為了避免修改可能經(jīng)過系統(tǒng)管理員調(diào)整過的已有配置巡语。只有不存在任何該類文件的情況下,例如該服務(wù)從未被安裝過淮菠,該程序才會安裝相應(yīng)的鏈接男公。

  • CentOS: chkconfig nginx on

  1. Sept. 2013 Web Server Survey, http://news.netcraft.com/archives/2013/09/05/september-2013-web-server-survey.html ?

  2. download page, http://nginx.org/download/ ?

  3. Nginx wiki, http://wiki.nginx.org/Modules ?

  4. Nginx modules, http://wiki.nginx.org/Modules ?

  5. Nginx modules, http://wiki.nginx.org/Modules ?

  6. Nginx modules, http://wiki.nginx.org/Modules ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市合陵,隨后出現(xiàn)的幾起案子枢赔,更是在濱河造成了極大的恐慌澄阳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踏拜,死亡現(xiàn)場離奇詭異碎赢,居然都是意外死亡,警方通過查閱死者的電腦和手機速梗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門肮塞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姻锁,你說我怎么就攤上這事峦嗤。” “怎么了屋摔?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵烁设,是天一觀的道長。 經(jīng)常有香客問我钓试,道長装黑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任弓熏,我火速辦了婚禮恋谭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挽鞠。我一直安慰自己疚颊,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布信认。 她就那樣靜靜地躺著材义,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫁赏。 梳的紋絲不亂的頭發(fā)上其掂,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音潦蝇,去河邊找鬼款熬。 笑死,一個胖子當著我的面吹牛攘乒,可吹牛的內(nèi)容都是我干的贤牛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼则酝,長吁一口氣:“原來是場噩夢啊……” “哼殉簸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤喂链,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后妥泉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椭微,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年盲链,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝇率。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡刽沾,死狀恐怖本慕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侧漓,我是刑警寧澤锅尘,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站布蔗,受9級特大地震影響藤违,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纵揍,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一顿乒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泽谨,春花似錦璧榄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雄卷,卻和暖如春腊脱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背龙亲。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工陕凹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鳄炉。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓杜耙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拂盯。 傳聞我的和親對象是個殘疾皇子佑女,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Nginx入門-在Linux上安裝Nginx 介紹 簡而言之,Nginx(發(fā)音為“engine x”)是一個小型、...
    呵呵噠1991閱讀 714評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 1. Nginx的模塊與工作原理 Nginx由內(nèi)核和模塊組成团驱,其中摸吠,內(nèi)核的設(shè)計非常微小和簡潔,完成的工作也非常簡單...
    rosekissyou閱讀 10,215評論 5 124
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx嚎花?那么一定聽過它的“同行”Apache吧寸痢!Ngi...
    JokerW閱讀 32,687評論 24 1,002
  • 近期最火爆的紀錄片莫過于《零零后》了啼止。 對于《零零后》我并不陌生。因為之前在紀錄片《小人國》里看過兵罢,記錄的是北京幼...
    育見閱讀 1,259評論 2 10