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

LiuXi菟 8年前發布 | 12K 次閱讀 Nginx 阿里云 云服務器 Web服務器

本文介紹了如何在阿里云服務器上從零開始搭建nginx服務器。阿里云服務器(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上,直接執行sudossh139.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版本需要使用其他命令)。

apt-getinstall libpcre3 libpcre3-dev 

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

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

下載黑框中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源代碼一同編譯。

第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_ 

修改后的代碼如下:

#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版本已經隱去,所以只會看到如下圖的輸出信息。

 

來自:http://zhuanlan.51cto.com/art/201610/519054.htm

 

 本文由用戶 LiuXi菟 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!