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

如今假設你已經擁有了阿里雲服務器,ip是139.128.33.11(假的,讀者須要換成本身的ip地址)。而且沒有選擇任何安裝包。如今ECS是徹底空的,除了必須的Linux系統外,其餘什麼都沒有。還有一點,本文選擇的是Ubuntu Linux14.04 64位版本。Linux比較節省內存,由於並無GUI部分,純控制檯操做(看命令行頭疼的同窗請繞道)。html

本文介紹瞭如何在阿里雲服務器上從零開始搭建nginx服務器。阿里雲服務器(ECS)相信你們都不陌生,感興趣的同窗能夠去購買,或到體驗館去體驗(半個月有效期)。至於如何註冊、管理ECS這裏就不詳細介紹了。由於官方文檔已經寫的很清楚了。若是還不清楚,打諮詢電話詢問。nginx

本文只安裝nginx服務器,後面的文章會配置其餘環節,如PHP、Java、MySQL等。ubuntu

在安裝以前須要完成以下兩項工做。瀏覽器

  1. 1.   找一個工具上傳文件(如nginx安裝包)安全

  2. 2.   鏈接到服務器的Console上,以便執行命令bash

       因爲如今服務器仍是空的,因此沒有ftp服務啓動,所以,只能用sftp,至於什麼是sftp,如何用sftp(SSH File Transfer Protocol),本身到網上搜索。總之,sftp使用了SSH協議,默認端口號是22。用法和ftp相似。大多數ftp客戶端都支持sftp。誰便找一個支持sftp的工具便可。而後利用ECS的用戶名(root)和密碼鏈接sftp便可。服務器

       至於鏈接到服務器的Console上,找一個SSH客戶端便可。例如,我在Mac OS X上,直接執行sudossh139.128.33.11便可。這時系統會要求輸入OS X管理員密碼,經過後會要求輸入ECS的root用戶密碼,若是輸入正確,就會進入ECS Console。而且輸入以下的歡迎信息。ssh

 

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
apt-getinstall libpcre3 libpcre3-dev

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

         咱們能夠經過apt-get安裝nginx,不過並非最新的,對於有強迫症,必定要安裝最新版本的同窗,可能apt-get並不適合,因此能夠直接從官網下載nginx的最新源代碼包,安裝編譯後的版本便可。

能夠下載nginx的最新版。目前是1.9.3。

下載黑框中nginx的便可。

wKioL1XBiY2i70fdAAFxI_lnoZo175.jpg

    下載完後,利用sftp工具上傳到ECS上。若是沒有購買外掛硬盤,上傳到系統盤也能夠。Linux送20GB系統盤。還剩下18GB左右,足夠作實驗了。

如今使用下面的命令解壓nginx安裝包

1
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。

1
apt-get  install  zlib1g  zlib1g.dev

使用下面的命令安裝OpenSSL。

1
apt-get  install  libssl-dev

第4步:使用OpenSSL源代碼

        若是編譯時出錯,可能的緣由是OpenSSL的問題,因此最穩妥的方式是將OpenSSL源代碼和nginx源代碼一同編譯。下載最新的OpenSSL源代碼。下載後,用sftp工具上傳到ECS上。而後使用tar解壓。假設解壓後的目錄爲/usr/local/openssl。

第5步:隱藏nginx的版本

     儘管這一步不是必須的,不過爲了安全,在編譯nginx以前,一般會隱去nginx的版本,這樣也能夠給攻擊者帶來必定的麻煩。

如今進入<nginx源代碼根目錄>/src/core,而後用vi打開nginx.h頭文件,修改前的代碼以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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_

 

修改後的代碼以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
#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源代碼根目錄,而後執行以下的命令

1
. /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已經配置成功。

wKiom1XBiLPC5h4JAAD8s5fZZIw459.jpg

       如今隨便輸入一個path,若是該路徑不存在,就會輸出404錯誤,不過因爲nginx版本已經隱去,因此只會看到以下圖的輸出信息。

wKiom1XBiNKwDGBkAABoHMWayN0152.jpg
感謝51CTO學院李寧老師的精彩分享,更多內容請點擊:http://edu.51cto.com/course/course_id-3952.html

相關文章
相關標籤/搜索