1. 程式人生 > >地球最強WEB前端Nginx服務器之搭建基礎靜態WEB站點

地球最強WEB前端Nginx服務器之搭建基礎靜態WEB站點

nginx就是地球最強web前端 沒有之一

地球最強WEB前端Nginx服務器之搭建基礎靜態WEB站點

1.1 Nginx概述及常用Web服務器介紹

1.1.1Nginx簡介:(來自百度百科)

Nginx (engine x) 是一個高性能的HTTP反向代理服務器,也是一個IMAP/POP3/SMTP服務器Nginx是由伊戈爾·賽索耶夫俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布於2004104日。

其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名201161日,nginx 1.0.4發布。

Nginx是一款輕量級Web 服務器/反向代理服務器及電子郵件(

IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東新浪網易騰訊淘寶等。

提示:紅帽官方的包並沒有收錄Nginx,可能是因為Nginx的許可證模式跟GNUGPL不一致吧。

1.1.2目前常見的WEB服務器:

1Nginx服務器:堪稱目前地球最強的WEB前端服務器,有兩個王牌功能,分別是:靜態頁面處理和反響代理(可以代理httpftpmailphptomcat等)。靜態文件處理能力比Apache強得多、且配置簡單得多。目前並發量大的網站基本上都是使用

Nginx(靜態並發能力達到100000/秒)。

提示:要深入了解Nginx的功能,可以訪問tengine.taobao.org網站(有中文說明,適合我這樣的英語不太好的中國人,阿裏強大啊!)

2Apache服務器:功能強大、插件豐富、跨平臺(可以部署在LinuxUnixWindiows上)的WEB服務器,市場占有率最高,但有被Nginx超越的趨勢。特點:穩定、可靠,但並發能力不強。

3Lighttpd服務器:Lighttpd是由一個德國人發起的開源項目,其根本目的是提供一個針對高性能網站,安全、快速、兼容性好並且靈活的WEB服務器,具有非常低的CPU和內存開銷,性能很好,但社區不活躍。

4IBMWebSphere

WebSphere ApplicationServer是一種功能完善、開放的 WEB應用程序服務器,是IBM電子商務計劃的核心部分。基於javaServletsWEB應用程序運行環境,包含了WEB站點提供服務所需的一切,運行時可以協同並擴展ApacheNetscapeIISIBMHTTPWeb服務器。

5WindowsIISInternetInformation Server):原生於WindowsWEB服務器,只適合部署在Windows服務器上,全球前100的聯網WEB服務器基本上不使用(可能除了微軟吧)

6Tomcat服務器:Tomcat是一個開源的Serlvet容器,它是Apache基金會Jakarta項目中的一個核心項目,有ApacheSun和一些其它公司及個人共同開發而成。Tomcat既是一個Servlet容器,有具備傳統的WEB服務器功能:可以解析靜態html頁面,但處理靜態html能力遠不能與Apache相比(Tomcat1024並發,Apache2000並發),實際應用中可以把ApacheTomcat組合到一起,Apache處理靜態htmlTomcat處理jspServlet(即通常說的動靜分離)。

提示:由於Tomcat並發能力比較低,所以只適合做小規模並發(應用中要提高Tomcat並發能力的話可以一臺機器跑多個Tomcat,前提是服務器性能比較好),大規模並發需求的應用使用WeblogicJboss

1.2 Nginx安裝和啟動

本文例子使用的系統和軟件環境:

操作系統:CentOS6.5 64位版

IP地址:192.168.0.12/24

1.2.1以源代碼方式編譯安裝

紅帽官方沒有收錄Nginx,因此沒有rpm包,需要的話可以自己打包成rpm包。

1步:下載Nginx源代碼包

Nginx官網http://nginx.org/下載需要的源碼包,本文使用的版本是nginx/1.8.0

2步:下載編譯Nginx需要使用的其它軟件源代碼包:pcreopenssl

其實pcreopenssl包含在CentOS的官方Packages中,但在本文中我想使用不同版本的pcreopenssl,所以另外下載源代碼包。

3步:設定編譯參數並編譯安裝

[root@CentOS6lsrv02 nginx]# ll

total 5712

-rwx------ 1 root root 832104 Jul 10 2015nginx-1.8.0.tar.gz

-rwx------ 1 root root 4015794 Jul 3 2012openssl-1.0.0a.tar.gz

-rwx------ 1 root root 992502 Jul 3 2012 pcre-8.12.tar.bz2

[root@CentOS6lsrv02 nginx]# tar xf nginx-1.8.0.tar.gz -C /opt/src 解壓nginx源碼包到/opt/src

[root@CentOS6lsrv02 nginx]# tar xf pcre-8.12.tar.bz2 -C /opt/src 解壓pcre源碼包到/opt/src

[root@CentOS6lsrv02 nginx]# tar xf openssl-1.0.0a.tar.gz -C/opt/src 解壓openssl源碼包到/opt/src

[root@CentOS6lsrv02 nginx]# cd /opt/src/nginx-1.8.0/

[root@CentOS6lsrv02 nginx-1.8.0]# ./configure \

> --prefix=/opt/nginx

> --with-http_stub_status_module \

> --with-pcre=/opt/src/pcre-8.12/ \

> --with-http_ssl_module \

> --with-openssl=/opt/src/openssl-1.0.0a/

[root@CentOS6lsrv02 nginx-1.8.0]# make && make install

參數解釋:

--prefix=/opt/nginx:指定nginx安裝路徑。

--with-http_stub_status_module:開啟Nginx的狀態檢測模塊。

--with-pcre=/opt/src/pcre-8.12/:指定pcre源代碼包的路徑。使用CentOS官方自帶的pcre需要先安裝pcre-devel包(yum install -y pcre-devel),安裝後不需要指定路徑。

--with-http_ssl_module:啟用ssl安全模塊。

--with-openssl=/opt/src/openssl-1.0.0a:指定openssl源代碼包的路徑。使用CentOS官方自帶的openssl需要先安裝openssl-develyum install -y openssl-devel),安裝後不需要指定路徑。

安裝完後:用ldd查看nginx動態鏈接庫的關系

[root@CentOS6lsrv02 nginx-1.8.0]# ldd /opt/nginx/sbin/nginx

linux-vdso.so.1=> (0x00007fffe8788000)

libpthread.so.0=> /lib64/libpthread.so.0 (0x000000387c400000)

libcrypt.so.1 =>/lib64/libcrypt.so.1 (0x0000003a44600000)

libdl.so.2 =>/lib64/libdl.so.2 (0x0000003a40a00000)

libz.so.1 =>/lib64/libz.so.1 (0x0000003a41e00000)

libc.so.6 =>/lib64/libc.so.6 (0x0000003a40e00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003a40600000)

libfreebl3.so =>/lib64/libfreebl3.so (0x0000003a43a00000)

提示:通過以上參數編譯出來的nginx並沒有調用pcreopenssl的庫,原因是這種方式把pcreopenssl都編譯進nginx了,不需要使用安裝在系統的pcreopenssl

以下是使用系統系統安裝的pcre-developenssl-devel編譯的結果:

[[email protected]]# ./configure \

> --prefix=/opt/nginx-redhat \

> --with-http_stub_status_module \

> --with-http_ssl_module \

> --with-pcre 這項可以不加,nginx默認會使用pcre

[root@CentOS6lsrv02 nginx-1.8.0]# make && make install

[root@CentOS6lsrv02 nginx]# ldd /opt/nginx-redhat/sbin/nginx

linux-vdso.so.1=> (0x00007fffda7ff000)

libpthread.so.0=> /lib64/libpthread.so.0 (0x000000387c400000)

libcrypt.so.1 =>/lib64/libcrypt.so.1 (0x0000003a44600000)

libpcre.so.0 =>/lib64/libpcre.so.0 (0x000000387d800000) 看到吧,有引用pcre

libssl.so.10 =>/usr/lib64/libssl.so.10 (0x000000387c800000) 引用openssl的庫

libcrypto.so.10=> /usr/lib64/libcrypto.so.10 (0x0000003a46e00000)

libdl.so.2 =>/lib64/libdl.so.2 (0x0000003a40a00000)

libz.so.1 =>/lib64/libz.so.1 (0x0000003a41e00000)

libc.so.6 =>/lib64/libc.so.6 (0x0000003a40e00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003a40600000)

libfreebl3.so =>/lib64/libfreebl3.so (0x0000003a43a00000)

libgssapi_krb5.so.2=> /lib64/libgssapi_krb5.so.2 (0x000000387d000000)

libkrb5.so.3 =>/lib64/libkrb5.so.3 (0x000000387cc00000)

libcom_err.so.2=> /lib64/libcom_err.so.2 (0x000000387d400000)

libk5crypto.so.3=> /lib64/libk5crypto.so.3 (0x0000003a47600000)

libkrb5support.so.0=> /lib64/libkrb5support.so.0 (0x0000003a46600000)

libkeyutils.so.1=> /lib64/libkeyutils.so.1 (0x0000003a47a00000)

libresolv.so.2=> /lib64/libresolv.so.2 (0x0000003a43200000)

libselinux.so.1=> /lib64/libselinux.so.1 (0x0000003a42200000)

1.2.2啟動和關閉Nginx

1)啟動nginx

Nginx官方默認沒有啟動腳本,使用絕對路徑運行命令啟動

[root@CentOS6lsrv02 ~]# /opt/nginx/sbin/nginx 啟動nginx,默認不會有提示

[root@CentOS6lsrv02 ~]# pstree -aunpl|grep nginx

| | `-vim,16705 nginx.conf

| `-grep,16742 --color=auto nginx

`-nginx,16736 nginx使用父子進程方式,默認是1個子進程,我修改為4個,根據服務器使用的CPU核心總數設置。

|-nginx,16737,nobody 默認啟動nginx子進程的用戶為nobody,可以修改。

|-nginx,16738,nobody

|-nginx,16739,nobody

`-nginx,16740,nobody

2)關閉nginx

使用killkill -15停止nginx,此為正常關閉nginx的方式

1.3 Nginx網站服務配置事例

nginx 成功啟動後,默認可以訪問了,在瀏覽器輸入服務器IP地址192.168.0.12

到此,nginxWEB站點已經搭建成功,只要把網站的數據拷貝到/opt/nginx/html/目錄下,就可以了。簡單吧!!!

1.3.1配置一個簡單的靜態WEB服務器

以下是一個最基礎的靜態WEB站點設置:

1#全局設置區開始

2 #user nobody;

3 worker_processes 4;

4

5 #error_log logs/error.log;

6 #error_log logs/error.log notice;

7 error_log /var/log/nginx/error.log info;定義錯誤日誌目錄,默認值為logs/ error.log info;表示默認在nginx安裝目錄下的logs目錄下面,日誌記錄方式為info

8

9 pid /var/run/nginx.pid; 設置nginx進程文件所在位置(默認值為logs/nginx.pid;表示默認在nginx安裝目錄下的logs目錄下面)

10

11 events {

12 worker_connections 15000;

13 }

14#全局設置區結束

15 http {

16 include mime.types;

17 default_type application/octet-stream;

18

19 log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘

20 ‘$status$body_bytes_sent "$http_referer" ‘

21 ‘"$http_user_agent" "$http_x_forwarded_for"‘;

22

23 #access_log logs/access.log main;

24

25 sendfile on;開啟快速文件傳輸

26 tcp_nopush on;

27

28 #keepalive_timeout 0;

29 keepalive_timeout 30;保持連接30秒,根據客戶端瀏覽器設定,通常IE30秒,Firefox15秒等,這個值是服務器和客戶端程序共同決定的

30 gzip on;開啟壓縮

31

32 server {

33 listen 80; 監聽端口

34 server_name localhost; 主機頭,即域名

35

36 charset utf8;設置虛擬主機使用的字符集(默認是koi8-r,修改為utf8比較通用)

37 access_log /var/log/localhost-access.log main;這裏的設置會覆蓋全局區第23行的設置

38

39 location / { 萬能location,匹配任何路徑

40 root html; 定義站點根目錄位置,如:/www/html,默認在nginx安裝目錄下的html目錄

41 index index.html index.htm; 站點首頁索引順序

42 }

43

44 error_page 404 /404.html;定義404錯誤(找不到頁面)響應文件名,放在站點根目錄下

45 error_page403 /403.html;定義403錯誤(拒絕訪問)響應文件名,放在站點根目錄下

46 # redirect server error pages to thestatic page /50x.html

47 #

48 error_page 500 502 503 504 /50x.html;定義500以上錯誤響應文件名,放在站點跟目錄下

49 location = /50x.html {

50 root html;

51 }

52 }

53 }


本文出自 “Linux學習天地” 博客,請務必保留此出處http://linuxprince.blog.51cto.com/373334/1982482

地球最強WEB前端Nginx服務器之搭建基礎靜態WEB站點