在阿里雲服務器(ECS)上從零開始搭建nginx服務器


 

      本文介紹了如何在阿里雲服務器上從零開始搭建nginx服務器。阿里雲服務器(ECS)相信大家都不陌生,感興趣的同學可以到http://www.aliyun.com/product/ecs去購買,或到體驗館去體驗(半個月有效期)。至於如何注冊、管理ECS這里就不詳細介紹了。因為官方文檔已經寫的很清楚了。如果還不清楚,打咨詢電話詢問。

現在假設你已經擁有了阿里雲服務器,ip是139.128.33.11(假的,讀者需要換成自己的ip地址)。並且沒有選擇任何安裝包。現在ECS是完全空的,除了必須的Linux系統外,其他什么都沒有。還有一點,本文選擇的是Ubuntu Linux 14.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上,直接執行sudo ssh 139.128.33.11即可。這時系統會要求輸入OS X管理員密碼,通過后會要求輸入ECS的root用戶密碼,如果輸入正確,就會進入ECS Console。並且輸入如下的歡迎信息。

Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-32-generic x86_64)

* Documentation:  https://help.ubuntu.com/

Welcome to aliyun Elastic Compute Service!

這兩項工作都搞定后,需要按如下幾步進行操作。

PS:下面的所有的命令都是在ECS Console中執行的。

     由於nginx的rewrite需要pcre library,所以首先需要在Linux上執行如下命令安裝pcre(下面的命令只針對Ubuntu Linux,其他Linux版本需要使用其他命令)。

apt-get install libpcre3 libpcre3-dev

第2步:下載和上傳nginx安裝包

     我們可以通過apt-get安裝nginx,不過並不是最新的,對於有強迫症,一定要安裝最新版本的同學,可能apt-get並不適合,所以可以直接從官網下載nginx的最新源代碼包,安裝編譯后的版本即可。

     讀者可以到 http://nginx.org/en/download.html  下載nginx的最新版。目前是1.9.3。

    下載黑框中nginx的即可。

 

    下載完后,利用sftp工具上傳到ECS上。如果沒有購買外掛硬盤,上傳到系統盤也可以。Linux送20GB系統盤。還剩下18GB左右,足夠做實驗了。

    現在使用下面的命令解壓nginx安裝包

tar -xzf nginx-1.9.3.tar.gz

解壓后的目錄是nginx-1.9.3。現在進入該目錄。

第3步:安裝相應的library

由於編譯nginx要使用http_stub_status_module 和http_ssl_module,所以需要安裝zlib和OpenSSL。

使用下面的命令安裝zlib。

apt-get install zlib1g  zlib1g.dev

使用下面的命令安裝OpenSSL。

apt-get install libssl-dev

第4步:使用OpenSSL源代碼

     如果編譯時出錯,可能的原因是OpenSSL的問題,所以最穩妥的方式是將OpenSSL源代碼和nginx源代碼一同編譯。讀者可以到https://www.openssl.org/source 下載最新的OpenSSL源代碼。下載后,用sftp工具上傳到ECS上。然后使用tar解壓。假設解壓后的目錄為/usr/local/openssl。

第5步:隱藏nginx的版本

    盡管這一步不是必須的,不過為了安全,在編譯nginx之前,通常會隱去nginx的版本,這樣也可以給攻擊者帶來一定的麻煩。

現在進入<nginx源代碼根目錄>/src/core,然后用vi打開nginx.h頭文件,修改前的代碼如下:

復制代碼
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define nginx_version      1009003
#define NGINX_VERSION      "1.9.3"  
#define NGINX_VER          "nginx/" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif
#define NGINX_VAR          "NGINX"
#define NGX_OLDPID_EXT     ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */
復制代碼

修改后的代碼如下:

復制代碼
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_

#define nginx_version      1009003
#define NGINX_VERSION      ""
#define NGINX_VER          "super" NGINX_VERSION
#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "super"
#define NGX_OLDPID_EXT     ".oldbin"
復制代碼

第6步:配置nginx

      編譯Linux/OS X下的源代碼,基本都一個套路,先configure,然后make install。如果PATH沒有設置“.”,還需要使用“./configure”。

現在進入nginx源代碼根目錄,然后執行如下的命令

./configure  --prefix=/mnt/disk1/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=/usr/local/openssl

其中“/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已經配置成功。

現在隨便輸入一個path。如http://139.128.33.11/abcd  由於該路徑不存在,所以會輸出404錯誤,不過由於nginx版本已經隱去,所以只會看到如下圖的輸出信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM