部署Tomcat服務器,nginx常見問題

Nginx常見問題處理

1.1 問題

本案例要求對Nginx服務器進行適當優化,以提高服務器的處理性能:javascript

  • 不顯示Nginx軟件版本號
  • 若是客戶端訪問服務器提示「Too many open files」如何解決
  • 如何解決客戶端訪問頭部信息過長的問題
  • 開啓gzip壓縮功能,提升數據傳輸效率
  • 如何讓客戶端瀏覽器緩存數據
  • 如何自定義返回給客戶端的404錯誤頁面

而後客戶機訪問此Web服務器驗證效果:css

  • 使用ab壓力測試軟件測試併發量
  • 編寫測試腳本生成長頭部信息的訪問請求
  • 客戶端訪問不存在的頁面,測試404錯誤頁面是否重定向

1.2 方案

使用2臺RHEL7虛擬機,其中一臺做爲Nginx服務器(192.168.4.5)、另一臺做爲測試用的Linux客戶機(192.168.4.100),如圖-1所示。html

圖-1java

Nginx優化主要從配置文件着手,常見優化參數以下:nginx

  • worker_processes //與CPU核心數量一致
  • worker_connections //每一個worker最大併發鏈接數
  • server_tokens //服務器版本號信息
  • client_header_buffer_size //默認請求包頭信息的緩存
  • large_client_header_buffers //大請求包頭部信息的緩存個數與容量
  • error_page 404 //自定義404錯誤頁面

1.3 步驟

實現此案例須要按照以下步驟進行。web

步驟一:構建Nginx服務器apache

1)源碼安裝Nginx軟件json

  1. [root@svr5 ~]# yum -y install gcc pcre-devel openssl-devel        //安裝常見依賴包
  2. [root@svr5 ~]# useradd -s /sbin/nologin nginx
  3. [root@svr5 ~]# tar -zxvf nginx-1.8.0.tar.gz
  4. [root@svr5 ~]# cd nginx-1.8.0
  5. [root@svr5 nginx-1.8.0]# ./configure \
  6. > --prefix=/usr/local/nginx \                //指定安裝路徑
  7. > --user=nginx \                            //指定用戶
  8. > --group=nginx \                            //指定組
  9. > --with-http_ssl_module                        //開啓SSL加密功能
  10. [root@svr5 nginx-1.8.0]# make && make install    //編譯並安裝

2)啓用Nginx服務並查看監聽端口狀態vim

  1. [root@svr5 ~]# /usr/local/nginx/sbin/nginx
  2. [root@svr5 ~]# netstat -anptu | grep nginx
  3. tcp        0        0 0.0.0.0:80        0.0.0.0:*        LISTEN        10441/nginx

步驟二:優化前從客戶機訪問Nginx服務器測試瀏覽器

1)使用ab高併發測試

  1. [root@svr100 ~]# ab –n 2000 –c 2000 http://192.168.4.5/
  2. Benchmarking 192.168.4.5 (be patient)
  3. socket: Too many open files (24)                //提示打開文件數量過多

2)使用腳本測試長頭部請求是否能得到響應

  1. [root@svr100 ~]# cat buffer.sh
  2. #!/bin/bash
  3. URL=http://192.168.4.5/index.html?
  4. for i in {1..5000}
  5. do
  6.     URL=${URL}v$i=$i
  7. done
  8. curl $URL
  9. [root@svr100 ~]# chmod +x buffer.sh
  10. [root@svr100 ~]# ./ buffer.sh
  11. .. ..
  12. <center><h1>414 Request-URI Too Large</h1></center>        //提示頭部信息過大

3)使用Firefox瀏覽器測試客戶端緩存

以Firefox瀏覽器爲例,只要在地址欄內輸入 http://192.168.4.5/a.jpg,回車後即鏈接目標主機192.168.4.5的Web服務,得到服務器上的a.jpg圖片資源。若訪 問成功,再次,在Firefox地址欄內輸入about:cache將顯示Firefox瀏覽器的緩存信息,如圖-2所示。

圖-2

4)客戶端使用瀏覽器訪問不存在的頁面

  1. [root@svr5 ~]# firefox http://192.168.4.5/tt.html        //訪問不存在的頁面

步驟三:優化Nginx服務器

1)修改Nginx配置文件

  1. [root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
  2. .. ..
  3. worker_processes 2;                    //與CPU核心數量一致
  4. events {
  5. worker_connections 65535;        //每一個worker最大併發鏈接數
  6. use epoll;
  7. }
  8. http {
  9. server_tokens off;                    //不顯示nginx版本號信息
  10. client_header_buffer_size 1k;        //默認請求包頭信息的緩存    
  11. large_client_header_buffers 4 4k;        //大請求包頭部信息的緩存個數與容量
  12. gzip on;
  13. gzip_min_length 1000;
  14. gzip_comp_level 4;
  15. gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  16. server {
  17. listen 80;
  18. server_name www.tarena.com;
  19. location / {
  20. root html;
  21. index index.html index.htm;
  22. }
  23. location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
  24. expires        30d;            //定義客戶端緩存時間爲30天
  25. }
  26. error_page 404 /40x.html;    //自定義錯誤頁面
  27. location = /40x.html {
  28. root html;
  29. }
  30. }
  31. }

2)修改Linux操做系統最大打開文件數

經過修改/etc/security/limits.conf文件修改打開文件最大數量:

  1. [root@svr5 ~]# vim /etc/security/limits.conf
  2. * soft nofile 100000
  3. * hard nofile 100000
  4. [root@svr5 ~]# ulimit –Hn 100000
  5. [root@svr5 ~]# ulimit –Sn 100000

3)提早生成404錯誤頁面,供測試使用:

  1. [root@svr5 ~]# vim /usr/local/nginx/html/40x.html
  2. <h1>~~~~^^^Error^^^~~~</h1>

步驟四:優化後從客戶機訪問Nginx服務器測試

對Nginx服務器進行各類參數優化後,在客戶端訪問服務器頁面,對比優化前與優化後的區別,驗證優化是否生效。

2 案例2:安裝部署Tomcat服務器

2.1 問題

本案例要求部署Tomcat服務器,具體要求以下:

  • 安裝部署JDK基礎環境
  • 安裝部署Tomcat服務器
  • 建立JSP測試頁面,文件名爲test.jsp,顯示服務器當前時間

而後客戶機訪問此Web服務器驗證效果:

  • 使用火狐瀏覽器訪問Tomcat服務器的8080端口,瀏覽默認首頁
  • 使用火狐瀏覽器訪問Tomcat服務器的8080端口,瀏覽默認測試頁面

2.2 方案

使用2臺RHEL7虛擬機,其中一臺做爲Tomcat服務器(192.168.2.5)、另一臺做爲測試用的Linux客戶機(192.168.2.100),如圖-3所示。

圖-3

使用RPM安裝JDK基礎環境

使用源碼安裝部署Tomcat服務器

調整Tomcat配置文件,禁用默認的8009端口

2.3 步驟

實現此案例須要按照以下步驟進行。

步驟一:部署服務器軟件

1)使用RPM安裝JDK環境

  1. [root@svr5 ~]# yum –y install java-1.8.0-openjdk                //安裝JDK
  2. [root@svr5 ~]# yum –y install java-1.8.0-openjdk-headless        //安裝JDK
  3. [root@svr5 ~]# java –version                                    //查看JAVA版本

2)安裝Tomcat

  1. [root@svr5 ~]# tar -xzf apache-tomcat-8.0.30.tar.gz
  2. [root@svr5 ~]# mv apache-tomcat-8.0.30 /usr/local/tomcat
  3. [root@svr5 ~]# ls /usr/local/tomcat
  4. bin/                                            //主程序目錄
  5. lib/                                            //庫文件目錄
  6. logs/                                         //日誌目錄
  7. temp/                                         //臨時目錄
  8. work/                                        //自動編譯目錄jsp代碼轉換servlet
  9. conf/                                        //配置文件目錄
  10. webapps/                                        //頁面目錄

步驟二:修改Tomcat配置文件

1)建立測試JSP頁面

  1. [root@svr5 ~]# vim /usr/local/tomcat/webapps/ROOT/test.jsp
  2. <html>
  3. <body>
  4. <center>
  5. Now time is: <%=new java.util.Date()%>            //顯示服務器當前時間
  6. </center>
  7. </body>
  8. </html>

2)啓動服務

  1. [root@svr5 ~]# /usr/local/tomcat/bin/startup.sh

步驟三:驗證測試

1)服務器驗證端口信息

  1. [root@svr5 ~]# netstat -nutlp |grep java        //查看java監聽的端口
  2. tcp 0 0 :::8080 :::* LISTEN 2778/java
  3. tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2778/java

2)客戶端瀏覽測試頁面

  1. [root@client ~]# firefox http://127.0.0.1:8080
  2. [root@client ~]# firefox http://127.0.0.1:8080/test.jsp

3 使用Tomcat部署虛擬主機

3.1 問題

沿用練習二,使用Tomcat部署加密虛擬主機,實現如下要求:

  • 實現兩個基於域名的虛擬主機,域名分別爲:www.aa.com和 www.bb.com
  • 使用www.aa.com域名訪問的頁面根路徑爲/usr/local/tomcat/aa/ROOT
  • 使用www.bb.com域名訪問的頁面根路徑爲/usr/local/tomcat/bb/ROOT
  • 訪問頁面時支持SSL加密通信
  • 私鑰、證書存儲路徑爲/usr/local/tomcat/conf/cert
  • 每一個虛擬主機都擁有獨立的訪問日誌文件

3.2 方案

修改server.xml配置文件,建立兩個域名的虛擬主機,修改以下兩個參數塊:

  1. # cat /usr/local/tomcat/conf/server.xml
  2. … …
  3. <Host name=www.aa.com appBase="aa" unpackWARS="true" autoDeploy="true">
  4. </Host>
  5. <Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
  6. </Host>
  7. … …

提示:修改server.xml配置文件,經過在<Host>中添加Context,咱們也能夠指定頁面的根路徑位置,默認爲ROOT

  1. <Context path="/test" docBase="/var/www/html/" />

生產SSL密鑰與證書文件

  1. #keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore

3.3 步驟

實現此案例須要按照以下步驟進行。

步驟一:配置服務器虛擬主機

1)修改server.xml配置文件,建立虛擬主機

  1. [root@svr5 ~]# vim /usr/local/tomcat/conf/server.xml
  2. … …
  3. <Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">
  4. </Host>
  5. <Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
  6. </Host>

2)建立虛擬主機對應的頁面根路徑

  1. [root@svr5 ~]# mkdir -p /usr/local/tomcat/{aa,bb}/ROOT
  2. [root@svr5 ~]# echo "AAA" > /usr/local/tomcat/aa/ROOT/index.html
  3. [root@svr5 ~]# echo "BBB" > /usr/local/tomcat/bb/ROOT/index.html

3)重啓Tomcat服務器

  1. [root@svr5 ~]# /usr/local/tomcat/bin/shutdown.sh
  2. [root@svr5 ~]# /usr/local/tomcat/bin/startup.sh

4)客戶端設置host文件,並瀏覽測試頁面進行測試

  1. [root@client ~]# vim /etc/hosts
  2. … …
  3. 192.168.4.5    www.aa.com www.bb.com
  4. [root@client ~]# firefox http://www.aa.com:8080/
  5. [root@client ~]# firefox http://www.bb.com:8080/

步驟二:修改網站的首頁目錄(非必須)

1)使用docBase參數能夠修改默認網站首頁路徑

  1. [root@svr5 ~]# vim /usr/local/tomcat/conf/server.xml
  2. … …
  3. <Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">
  4. <Context path="" docBase="base" />
  5. </Host>
  6. <Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
  7. </Host>
  8. … …
  9. [root@svr5 ~]# mkdir /usr/local/tomcat/aa/base
  10. [root@svr5 ~]# echo "BASE" > /usr/local/tomcat/aa/base/index.html
  11. [root@svr5 ~]# /usr/local/tomcat/bin/shutdown.sh
  12. [root@svr5 ~]# /usr/local/tomcat/bin/startup.sh

2)測試查看頁面是否正確

  1. [root@client ~]# firefox http://www.aa.com:8080/    //結果爲base頁面的內容

步驟三:跳轉(非必須)

1)當用戶訪問http://www.aa.com/test打開/var/www/html目錄下的頁面

  1. [root@svr5 ~]# vim /usr/local/tomcat/conf/server.xml
  2. … …
  3. <Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">
  4. <Context path="/test" docBase="/var/www/html/" />
  5. </Host>
  6. <Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
  7. </Host>
  8. … …
  9. [root@svr5 ~]# echo "Test" > /var/www/html/index.html
  10. [root@svr5 ~]# /usr/local/tomcat/bin/shutdown.sh
  11. [root@svr5 ~]# /usr/local/tomcat/bin/startup.sh

2)測試查看頁面是否正確

  1. [root@client ~]# firefox http://www.aa.com:8080/test    
  2. //返回/var/www/html/index.html的內容

步驟四:配置Tomcat支持SSL加密網站

1)建立加密用的私鑰和證書文件

  1. [root@svr5 ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore                //提示輸入密碼爲:123456

2)再次修改server.xml配置文件,建立支持加密鏈接的Connector

  1. [root@svr5 ~]# vim /usr/local/tomcat/conf/server.xml
  2. … …
  3. <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
  4. maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
  5. keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456" clientAuth="false" sslProtocol="TLS" />

3)重啓Tomcat服務器

  1. [root@svr5 ~]# /usr/local/tomcat/bin/catalina.sh stop
  2. [root@svr5 ~]# /usr/local/tomcat/bin/catalina.sh start

4)客戶端設置host文件,並瀏覽測試頁面進行測試

  1. [root@client ~]# vim /etc/hosts
  2. … …
  3. 192.168.4.5    www.aa.com www.bb.com
  4. [root@client ~]# firefox https://www.test.com:8443/
  5. [root@client ~]# firefox https://www.test.com:8443/

步驟四:配置Tomcat日誌

1)爲每一個虛擬主機設置不一樣的日誌文件

  1. [root@svr5 ~]# vim /usr/local/tomcat/conf/server.xml
  2. <Host name="www.aa.com" appBase="aa" unpackWARS="true" autoDeploy="true">
  3. <Valve className="org.apache.catalina.valves.AccessLogValve"
  4. prefix="aa_access" suffix=".log"
  5. pattern="common"/>
  6. </Host>
  7. <Host name="www.bb.com" appBase="bb" unpackWARS="true" autoDeploy="true">
  8. <Valve className="org.apache.catalina.valves.AccessLogValve"
  9. prefix="bb_access" suffix=".log"
  10. pattern="common"/>
  11. </Host>

2)重啓Tomcat服務器

  1. [root@svr5 ~]# /usr/local/tomcat/bin/catalina.sh stop
  2. [root@svr5 ~]# /usr/local/tomcat/bin/catalina.sh start

3)查看服務器日誌文件

  1. [root@svr5 ~]# ls /usr/local/tomcat/logs/
相關文章
相關標籤/搜索