nginx+tomcat實現動靜態分離

来源:http://www.cnblogs.com/xiaocheche/archive/2017/10/06/7633079.html
-Advertisement-
Play Games

Tomcat 概述: Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支持,最新的Servlet 和JSP 規範總是能在Tomcat ...


  ===============Tomcat 概述:
    Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支持,最新的Servlet 和JSP 規範總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規範。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web 應用伺服器。目前最新版本是8.0。

===tomcat伺服器中:
1》安裝jdk並配置環境變數:
  tar -xvf jdk-8u5-linux-x64.tar.gz
  mv jdk1.8.0_05/ /usr/local/src/java

       

  2》安裝tomcat:
    tar -xvf apache-tomcat-7.0.54.tar.gz
    mv apache-tomcat-7.0.54 /usr/local/src/tomcat

3》配置tomcat:
  #vim /usr/local/src/tomcat/conf/server.xml
  <Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />
   修改埠為預設WEB埠80;

  <Host name="localhost" appBase="che"
    unpackWARs="true" autoDeploy="true">
  <Context path="" docBase="/opt/che">
  新增最後一行修改為WEB的家目錄,如果要做代理,則name為localhost;      

  4》啟動tomcat:

    

5》tomcat啟動測試:

   

 

=============Nginx的安裝與配置:
1》安裝依賴庫:
  yum -y install gcc gcc-c++ openssl-devel zlib-devel pcre-devel
2》安裝pcre庫:
  tar -xvf pcre-8.36.tar.gz
  cd pcre-8.36
  ./configure && make && make install cd pcre-8.36
3》安裝libmd5:
  tar xf libmd5-0.8.2b.tar.gz
4》安裝nginx:

           ar -xvf nginx-1.9.8.tar.gz
      cd nginx-1.9.8

CONFOPTS="
--user=user_00 \
--group=users \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-md5=/soft/md5/ \
--with-pcre=/usr/local/src/pcre-8.01 \
--without-select_module \
--without-poll_module \
--without-http_ssi_module \
--without-http_userid_module \
--without-http_geo_module \
--without-http_map_module \
--without-http_memcached_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--prefix=/usr/local/services/nginx-1.9.8 \
"
./configure $CONFOPTS && make && make install

 

  編譯參數詳解:
--with-http_realip_module
此模塊支持顯示真實來源IP地址,主要用於NGINX做前端負載均衡伺服器使用。

-with-http_stub_status_module
這個模塊可以取得一些nginx的運行狀態,

--with-http_gzip_static_module
這個模塊在一個預壓縮文件傳送到開啟Gzip壓縮的客戶端之前檢查是否已經存在以“.gz”結尾的壓縮文件,這樣可以防止文件被重覆壓縮。

--with-md5=/soft/md5/
設定md5庫文件路徑

--with-sha1=auto/lib/sha1
設定sha1庫文件路徑
--with-pcre=/soft/pcre-8.01
設定PCRE庫路徑

--without-select_module
標準連接模式。預設情況下自動編譯方式。您可以啟用或禁用通過使用-select_module和不帶- select_module配置參數這個模塊

--without-poll_module
不使用poll模塊

--without-http_ssi_module
不使用ngx_http_ssi_module模塊,此模塊處理伺服器端包含文件(ssi)的處理.

--without-http_userid_module
不使用ngx_http_userid_module模塊

--without-http_geo_module
這個模塊基於客戶端的IP地址創建一些ngx_http_geoip_module變數,並與MaxMindGeoIP文件進行匹配,該模塊僅用於 0.7.63和0.8.6版本之後。但效果不太理想,對於城市的IP記錄並不是特別準確,不過對於網站的來源訪問區域的分析大致有一定參考性

--without-http_map_module
不使用ngx_http_map_module模塊

--without-http_memcached_module
不使用ngx_http_memcached_module模塊

--without-mail_pop3_module
不允許ngx_mail_pop3_module模塊

--without-mail_imap_module
不允許ngx_mail_imap_module模塊

--without-mail_smtp_module
不允許ngx_mail_smtp_module模塊   

4》配置說明:
  配置文件位置:/usr/local/nginx/conf/nginx.conf
  1. Nginx配置文件分為4個部分
  2. main(全局設置)
  3. server(主機設置)
  4. upstream(負載均衡設置)
  5. localtion(URL匹配特定位置的設置)
  這四個 server繼承main location繼承server,upstream即不會繼承,其它設置也不會被繼承.

   

====nginx文件配置內容:

user user_00;
worker_processes 8;
error_log logs/error.log;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 100000;
}
worker_rlimit_nofile 100000;
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
server_names_hash_bucket_size 128k;
client_header_buffer_size 32k;
large_client_header_buffers 432k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 254k;
fastcgi_buffers 16 256k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
gzip on;
gzip_min_length 1k;
gzip_buffers 416k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript;
gzip_vary on;
charset utf-8;
access_log off;
log_not_found off;
error_page 400 403 405 408 /40x.html;
error_page 500 502 503 504 /50x.html;

server {
listen 80;
server_name www.test.com;
location / {
root html/cheche;
index index.html index.htm;
}
}

include   vhost/vhost.localhost.com;
}    

 

虛擬主機文件內容:

upstream webcount {

      server  10.0.0.202:8080 weight=1 max_fails=3 fail_timeout=20s;

#     server  10.0.0.203:8080 weight=1 max_fails=3 fail_timeout=20s;

 

}

server { 

        listen       80; 

        server_name  www.aatest.com; 

        charset utf-8; 

            location ~ (\.jsp)|(\.do)$ {  #jsp和do的交給tomcat處理實現動靜分離

            index  index.html index.htm index.jsp index.do; 

            proxy_pass        http://webcount; 

            proxy_set_header  X-Real-IP  $remote_addr; 

            client_max_body_size  100m; 

            }

         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html|htm)$#html和圖片的和其它的靜態內容存路徑html

    { 

       root   /opt/che;   #可自由指定

        expires      30d; 

    } 

}~ 

 

5》啟動與平滑重啟

  # cd /usr/local/services/nginx-0.8.55/sbin/

  # ./nginx –t 檢測配置文件是否有錯誤

  # ./nginx 啟動nginx

  # ./nginx -s reload

6》動靜分離測試

       1>在tomcat上

        在WEB目錄創建

    # cd /opt/che

    # echo “this is jsp” >index.jsp

    # echo “this is do” >index.do

      http://10.0.0.202:8080/index.jsp

      http://10.0.0.202:8080/index.do

      

  2>在Nginx上

    在Nginx的/opt/che目錄下

    # cd /opt/che

    # echo “this is index ” >index.html

    # echo “this is index a” >aa.html

      3>在瀏覽器裡面

     http://www.aatest.com/ 

                

         http://www.aatest.com/aa.html

          

        http:// www.aatest.com /index.jsp

       

        

           http://www.aatest.com/index.do

                     

 

==========================

可以實現控制tomcat開啟與關閉的腳本:

#!/bin/bash
# Title:tomcat.sh
# Decription:Tomcat manager
# system:Use Linux
# Author:Alvin_zeng
# Version:1.0
# Date:2016-08-22
# Copyright:   2016 (c) alvin
# License:     GPL
TomcatDir="/usr/local/tomcat"
#====================================
# Function-->Men_CD()
#====================================
Men_CD()
{
clear
echo
echo "========TomcatManagerTool======"
echo
tput bold
echo "1: 啟動tomcat服務"
tput sgr0
echo "    [*] start tomcat service"
echo
tput bold
echo "2: 關閉tomcat服務"
tput sgr0
echo "    [*] stop tomcat service"
echo
tput bold
echo "3: 重啟tomcat服務"
tput sgr0
echo "    [*] restart tomcat service"
echo
tput bold
echo "4: 查看tomcat日誌"
tput sgr0
echo "    [*] check tomcat logs"
echo
tput bold
echo "5:退出"
tput sgr0
echo "    [*]exit"
echo
echo "========TomcatManagerTool======="
echo
}
#====================================
# Function-->Acation_Manager
#====================================
Acation_Manager()
{
Men_CD
echo -n "Please enter you number:"
 read Myenter 
case $Myenter in 
1)
checktomcat=`ps -ef | grep java | grep "$TomcatDir" | wc -l`
if [ ${checktomcat} -eq 1 ]
then
    echo
             tput bold
    echo  " [Error]:The service is already running. Please stop the service at startup."
                                   
             tput sgr0
    echo
else
    $TomcatDir/bin/startup.sh start
    checktomcat1=`ps -ef | grep java | grep "$TomcatDir" | wc -l`
    if [ ${checktomcat1} -eq 1 ]
    then
              tput bold
              echo "Start Tomcat.....................[OK]"
              echo "Start Tomcat.....................[OK]"
              echo "Start Tomcat.....................[OK]"
              tput sgr0
    else
              tput bold
              echo "Start tomcat.....................[Fail]"
              echo "Start tomcat.....................[Fail]"
              echo "Start tomcat.....................[Fail]"
              tput sgr0
              return 1
    fi

fi
;;

2)
checktomcat1=`ps -ef | grep java | grep "$TomcatDir" | wc -l`
if [ ${checktomcat1}  -eq 1 ]
then
   
        /bin/ps -ef | grep java | grep "$TomcatDir"  | awk '{print $2}' | xargs kill -9 >>/dev/null 2>&1
    if [ $? -eq 0 ]
    then
       echo
       tput bold
       echo  "Tomcat Stop..............[OK]"
       echo  "Tomcat Stop..............[OK]"
       echo  "Tomcat Stop..............[OK]"
       tput sgr0
       echo
   else
       echo
       tput bold
       echo "Tomcat Stop...............[Fail]"
       echo "Tomcat Stop...............[Fail]"
       echo "Tomcat Stop...............[Fail]"
       tput sgr0
       echo
       return 1
    fi
else
   echo
   tput bold
   echo "Tomcat The service is already close."
   echo "Tomcat The service is already close."
   echo "Tomcat The service is already close."
   tput sgr0
   echo
fi
;;



3)
    ps -ef | grep java | grep "$TomcatDir"  | awk '{print $2}' | xargs kill -9 >>/dev/null 2>&1
        $TomcatDir/bin/startup.sh start
        checktomcat1=`ps -ef | grep java | grep "$TomcatDir" | wc -l`
        if [ ${checktomcat1} -eq 1 ]
        then
              echo
              tput bold
              echo "Restart Tomcat.....................[OK]"
              echo "Restart Tomcat.....................[OK]"
              echo "Restart Tomcat.....................[OK]"
              tput sgr0
              echo
        else
              tput bold
              echo "Restart Tomcat.....................[Fail]"
              echo "Restart Tomcat.....................[Fail]"
              echo "Restart Tomcat.....................[Fail]"
              tput sgr0
              return 1
        fi
;;

4)
 tail -f $TomcatDir/logs/catalina.out 
;;

5)
  clear
   exit 2
;;

*)
  echo "Please enter |1|2|3|4|5"
;;
esac
}

#====================================
# Function-->Main
#====================================
Main()
{
Acation_Manager
   if [ $? -eq 1 ]
   then
      exit 1
   fi
}
Main;
================================

vhost.www.fanhougame.com 文件內容(原始內容,根據需要修改)

server {
        listen       80 ;
        server_name  www.fanhougame.com fanhougame.com  www.fanhouapp.com www.fanhougame.net fanhougame.net;
#        server_name  www.fanhougame.net fanhougame.net  www.fanhouapp.net;
        root         /data/www/oa.com/www.fanhougame.com ;

        location / {
            index index.php index.html index.htm;
            if (!-e $request_filename) {
                return 444;
            }
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/nginx/html;
        }

        location ~ \.php$ {
            fastcgi_pass   unix:/tmp/php-cgi-5313-web.sock;
            fastcgi_index  index.php;
            include        fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SERVER_NAME $http_host;
            fastcgi_ignore_client_abort on;
        }

        location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ {
            error_log    off;
            access_log   off;
            expires      max;
        }
    }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [1]分類 [2]RPM [3]RPM安裝 [4]查詢與校驗 [5]YUM [6]源碼包安裝 [7]腳本安裝 [8]Nodejs安裝 ...
  • 1. Graylog2 簡介 Graylog 是一個簡單易用、功能較全面的日誌管理工具,相比 ELK 組合, 優點: 部署維護簡單,一體化解決方案,不像ELK三個獨立系統集成。 查相比ES json語法,搜索語法更加簡單,如 source:mongo AND reponse_time_ms:>500 ...
  • 教研室新進機器人,組內成員需要對其做一下必要的瞭解。手冊純英文內容多,這裡挑重點介紹幾條: 感測器: 作為輸入設備,Tiago對周圍環境感知完全通過各種感測器實現。配備的感測器有以下幾種: 1,激光測距儀:0.05-10m 15Hz 2,聲吶:0.03-1m 40kHz 3,慣性測量感測器:MPU ...
  • 本文目錄:1.1 錯誤日誌ErrorLog1.2 訪問日誌CustomLog1.3 日誌輪替:rotatelogs工具1.4 日誌輪替:cronolog工具1.5 rotatelogs和cronolog的比較 需要記錄的日誌類型有:錯誤日誌ErrorLog、訪問日誌CustomLog。錯誤日誌一般採 ...
  • 我們將ASP.NET程式從IIS6移植到IIS7,可能運行提示以下錯誤: HTTP 錯誤 500.23 - Internal Server Error 檢測到在集成的托管管道模式下不適用的 ASP.NET 設置。 為什麼會出現以上錯誤? 在IIS7的應用程式池有兩種模式,一種是“集成模式”,一種是“ ...
  • 主要包括Alias指令、AliasMatch、Redirect、RedirectMatch、ScriptAlias和ScriptAliasMatch。它們由mod_alias模塊提供,該模塊用於提供簡單的路徑映射和重定向需求,更複雜的內容見URL重寫。 其中ScriptAlias用法和Alias完全 ...
  • 本文目錄:1.1 htpasswd命令1.2 身份認證類基本指令1.3 Require指令1.4 web身份認證示例 httpd對web身份認證的支持很豐富,提供的控制也非常細緻。無疑,功能豐富意味著模塊多。關於完整的模塊,見http://httpd.apache.org/docs/2.4/mod/ ...
  • [1]顯示 [2]文件 [3]關機 [4]登錄 [5]shell [6]VIM ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...