地球最強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發布於2004年10月4日。
其將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發布。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(
提示:紅帽官方的包並沒有收錄Nginx,可能是因為Nginx的許可證模式跟GNU的GPL不一致吧。
1.1.2目前常見的WEB服務器:
1)Nginx服務器:堪稱目前地球最強的WEB前端服務器,有兩個王牌功能,分別是:靜態頁面處理和反響代理(可以代理http、ftp、mail、php、tomcat等)。靜態文件處理能力比Apache強得多、且配置簡單得多。目前並發量大的網站基本上都是使用
提示:要深入了解Nginx的功能,可以訪問tengine.taobao.org網站(有中文說明,適合我這樣的英語不太好的中國人,阿裏強大啊!)
2)Apache服務器:功能強大、插件豐富、跨平臺(可以部署在Linux、Unix、Windiows上)的WEB服務器,市場占有率最高,但有被Nginx超越的趨勢。特點:穩定、可靠,但並發能力不強。
3)Lighttpd服務器:Lighttpd是由一個德國人發起的開源項目,其根本目的是提供一個針對高性能網站,安全、快速、兼容性好並且靈活的WEB服務器,具有非常低的CPU和內存開銷,性能很好,但社區不活躍。
4)IBMWebSphere:
5)WindowsIIS(InternetInformation Server):原生於Windows的WEB服務器,只適合部署在Windows服務器上,全球前100的聯網WEB服務器基本上不使用(可能除了微軟吧)
6)Tomcat服務器:Tomcat是一個開源的Serlvet容器,它是Apache基金會Jakarta項目中的一個核心項目,有Apache、Sun和一些其它公司及個人共同開發而成。Tomcat既是一個Servlet容器,有具備傳統的WEB服務器功能:可以解析靜態html頁面,但處理靜態html能力遠不能與Apache相比(Tomcat:1024並發,Apache:2000並發),實際應用中可以把Apache與Tomcat組合到一起,Apache處理靜態html,Tomcat處理jsp和Servlet(即通常說的動靜分離)。
提示:由於Tomcat並發能力比較低,所以只適合做小規模並發(應用中要提高Tomcat並發能力的話可以一臺機器跑多個Tomcat,前提是服務器性能比較好),大規模並發需求的應用使用Weblogic或Jboss。
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需要使用的其它軟件源代碼包:pcre與openssl
其實pcre與openssl包含在CentOS的官方Packages中,但在本文中我想使用不同版本的pcre與openssl,所以另外下載源代碼包。
第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-devel(yum 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並沒有調用pcre和openssl的庫,原因是這種方式把pcre和openssl都編譯進nginx了,不需要使用安裝在系統的pcre和openssl。
以下是使用系統系統安裝的pcre-devel和openssl-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
使用kill或kill -15停止nginx,此為正常關閉nginx的方式
1.3 Nginx網站服務配置事例
nginx 成功啟動後,默認可以訪問了,在瀏覽器輸入服務器IP地址192.168.0.12
到此,nginx的WEB站點已經搭建成功,只要把網站的數據拷貝到/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秒,根據客戶端瀏覽器設定,通常IE是30秒,Firefox是15秒等,這個值是服務器和客戶端程序共同決定的
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站點