如今假設你已經擁有了阿里雲服務器,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. 找一個工具上傳文件(如nginx安裝包)安全
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的便可。
下載完後,利用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已經配置成功。
如今隨便輸入一個path,若是該路徑不存在,就會輸出404錯誤,不過因爲nginx版本已經隱去,因此只會看到以下圖的輸出信息。
感謝51CTO學院李寧老師的精彩分享,更多內容請點擊:http://edu.51cto.com/course/course_id-3952.html