本文介紹了如何在阿裡雲伺服器上從零開始搭建nginx伺服器。阿裡雲伺服器(ECS)相信大家都不陌生,感興趣的同學可以到http://www.aliyun.com/product/ecs去購買,或到體驗館去體驗(半個月有效期)。至于如何注冊、管理ECS這裡就不詳細介紹了。因為官方文檔已經寫的很清楚了。如果還不清楚,打咨詢電話詢問。
現在假設你已經擁有了阿裡雲伺服器,ip是139.128.33.11(假的,讀者需要換成自己的ip位址)。并且沒有選擇任何安裝包。現在ECS是完全空的,除了必須的Linux系統外,其他什麼都沒有。還有一點,本文選擇的是Ubuntu Linux14.04 64位版本。Linux比較節省記憶體,因為并沒有GUI部分,純控制台操作(看指令行頭疼的同學請繞道)。
本文隻安裝nginx伺服器,後面的文章會配置其他環節,如PHP、Java、MySQL等。
在安裝之前需要完成如下兩項工作。
1. 找一個工具上傳檔案(如nginx安裝包)
2. 連接配接到伺服器的Console上,以便執行指令
由于現在伺服器還是空的,是以沒有ftp服務啟動,是以,隻能用sftp,至于什麼是sftp,如何用sftp(SSH File Transfer Protocol),自己到網上搜尋。總之,sftp使用了SSH協定,預設端口号是22。用法和ftp類似。大多數ftp用戶端都支援sftp。誰便找一個支援sftp的工具即可。然後利用ECS的使用者名(root)和密碼連接配接sftp即可。
至于連接配接到伺服器的Console上,找一個SSH用戶端即可。例如,我在Mac OS X上,直接執行sudossh 139.128.33.11即可。這時系統會要求輸入OS X管理者密碼,通過後會要求輸入ECS的root使用者密碼,如果輸入正确,就會進入ECS Console。并且輸入如下的歡迎資訊。
Welcome toUbuntu 14.04.2 LTS (GNU/Linux 3.13.0-32-generic x86_64)
*Documentation: https://help.ubuntu.com/
Welcome toaliyun Elastic Compute Service!
這兩項工作都搞定後,需要按如下幾步進行操作。
PS:下面的所有的指令都是在ECS Console中執行的。
第1步:安裝pcre
由于nginx的rewrite需要pcre library,是以首先需要在Linux上執行如下指令安裝pcre(下面的指令隻針對Ubuntu Linux,其他Linux版本需要使用其他指令)。
1
<code>apt-getinstall libpcre3 libpcre3-dev</code>
第2步:下載下傳和上傳nginx安裝包
我們可以通過apt-get安裝nginx,不過并不是最新的,對于有強迫症,一定要安裝最新版本的同學,可能apt-get并不适合,是以可以直接從官網下載下傳nginx的最新源代碼包,安裝編譯後的版本即可。
下載下傳黑框中nginx的即可。
下載下傳完後,利用sftp工具上傳到ECS上。如果沒有購買外挂硬碟,上傳到系統盤也可以。Linux送20GB系統盤。還剩下18GB左右,足夠做實驗了。
現在使用下面的指令解壓nginx安裝包
<code>tar</code> <code>-xzf nginx-1.9.3.</code><code>tar</code><code>.gz</code>
解壓後的目錄是nginx-1.9.3。現在進入該目錄。
第3步:安裝相應的library
由于編譯nginx要使用http_stub_status_module和http_ssl_module,是以需要安裝zlib和OpenSSL。
使用下面的指令安裝zlib。
<code>apt-get </code><code>install</code> <code>zlib1g zlib1g.dev</code>
使用下面的指令安裝OpenSSL。
<code>apt-get </code><code>install</code> <code>libssl-dev</code>
第4步:使用OpenSSL源代碼
第5步:隐藏nginx的版本
盡管這一步不是必須的,不過為了安全,在編譯nginx之前,通常會隐去nginx的版本,這樣也可以給攻擊者帶來一定的麻煩。
現在進入<nginx源代碼根目錄>/src/core,然後用vi打開nginx.h頭檔案,修改前的代碼如下:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<code>#ifndef _NGINX_H_INCLUDED_</code>
<code>#define _NGINX_H_INCLUDED_</code>
<code>#define nginx_version 1009003</code>
<code>#define NGINX_VERSION "1.9.3" </code>
<code>#define NGINX_VER "nginx/" NGINX_VERSION</code>
<code> </code>
<code>#ifdef NGX_BUILD</code>
<code>#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD")"</code>
<code>#else</code>
<code>#define NGINX_VER_BUILD NGINX_VER</code>
<code>#endif</code>
<code>#define NGINX_VAR "NGINX"</code>
<code>#define NGX_OLDPID_EXT ".oldbin"</code>
<code>#endif /* _NGINX_H_INCLUDED_ */</code>
<code>修改後的代碼如下:</code>
修改後的代碼如下:
<code>#define NGINX_VERSION ""</code>
<code>#define NGINX_VER "super" NGINX_VERSION</code>
<code>#define NGINX_VAR "super"</code>
#define NGX_OLDPID_EXT ".oldbin"
第6步:配置nginx
編譯Linux/OS X下的源代碼,基本都一個套路,先configure,然後make install。如果PATH沒有設定“.”,還需要使用“./configure”。
現在進入nginx源代碼根目錄,然後執行如下的指令
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/mnt/disk1/nginx--with-http_stub_status_module</code> <code>--with-http_ssl_module --with-openssl=</code><code>/usr/local/openssl</code>
其中“/mnt/disk1/nginx”表示要安裝到的目标目錄。 “ /usr/local/openssl”是OpenSSL源代碼目錄。這樣nginx會和OpenSSL一同編譯。
第7步:編譯nginx
如果前幾步都沒問題,執行make install編譯安裝nginx。編譯好後,會将目标檔案都放到/mnt/disk1/nginx目錄中。
第8步:檢查配置檔案是否正确
進入/mnt/disk1/nginx/sbin目錄,然後執行nginx -t 如果輸入如下資訊,表明配置檔案是正确的(每次修改配置檔案後,啟動nginx服務之前,最好都執行一下這個指令)。
nginx: the configuration file/mnt/disk1/nginx/conf/nginx.conf syntax is ok
nginx: configuration file/mnt/disk1/nginx/conf/nginx.conf test is successful
第9步:啟動nginx服務
進入/mnt/disk1/nginx/sbin目錄,執行nginx指令即可啟動nginx服務。如果發現80端口已經被占用,可能是nginx服務已經啟動。執行pkill nginx即可殺掉nginx服務。可以使用ps -ef | grep nginx指令檢視記憶體中是否還有nginx程序。
第10步:測試nginx服務
現在打開浏覽器,在位址欄輸入http://139.128.33.11 如果輸出如下圖的資訊,表明nginx已經配置成功。
<a href="http://s3.51cto.com/wyfs02/M02/70/ED/wKiom1XBiNKwDGBkAABoHMWayN0152.jpg" target="_blank"></a>
本文轉自 androidguy 51CTO部落格,原文連結:http://blog.51cto.com/androidguy/1681846,如需轉載請自行聯系原作者