1.Tomcat簡介使用

Tomcat

[TOC]

1.JVM介紹

JVM是Java Virtual Machine(Java虛擬機)的縮寫

Java虛擬機本質是就是一個程序捍岳,當它在命令行上啟動的時候新锈,就開始執(zhí)行保存在某字節(jié)碼文件中的指令绍载。Java語言的可移植性正是建立在Java虛擬機的基礎上。任何平臺只要裝有針對于該平臺的Java虛擬機拗窃,字節(jié)碼文件(.class)就可以在該平臺上運行篙程。這就是“一次編譯怔蚌,多次運行”。

2.Tomcat介紹

a.什么是Tomcat

Tomcat和我們此前學習的 Nginx 類似功咒,也是一個Web服務器愉阎。

b.Tomcat與Nginx有什么區(qū)別?

Nginx僅支持靜態(tài)資源力奋,而Tomcat則支持Java開發(fā)的 jsp 動態(tài)資源和靜態(tài)資源榜旦。
Nginx適合做前端負載均衡,而Tomcat適合做后端應用服務處理景殷。
通常情況下溅呢,企業(yè)會使用 Nginx+tomcat 結合使用,由Nginx處理靜態(tài)資源猿挚,Tomcat處理動態(tài)資源咐旧。

3.Tomcat快速安裝

方法1:

rpm -ivh jdk-8u102-linux-x64.rpm
mkdir /app
tar xf apache-tomcat-8.0.27.tar.gz -C /app
/app/apache-tomcat-8.0.27/bin/startup.sh 

方法2:

mkdir /app/
tar xf jdk-8u60-linux-x64.tar.gz -C /app/
ln -s /app/jdk1.8.0_60 /app/jdk
sed -i.ori '$a export JAVA_HOME=/app/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
tar xf apache-tomcat-8.0.27.tar.gz -C /app
/app/apache-tomcat-8.0.27/bin/startup.sh 

4.Tomcat啟動慢解決方案

沒優(yōu)化之前啟動時間
[root@tomcat logs]# grep 'Server startup' catalina.out
03-Aug-2019 03:15:18.225 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 591050 ms

優(yōu)化之后啟動時間
[root@tomcat logs]# grep 'Server startup' catalina.out
03-Aug-2019 03:15:18.225 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 591050 ms
03-Aug-2019 03:22:14.112 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1326 ms

優(yōu)化方法:
vi /usr/java/jdk1.8.0_102/jre/lib/security/java.security
securerandom.source=file:/dev/urandom

5.tomcat目錄結構介紹

[root@tomcat apache-tomcat-8.0.27]# ll
total 92
drwxr-xr-x 2 root root  4096 Aug  3 03:05 bin  #主要包含啟動、關閉tomcat腳本和腳本依賴文件
drwxr-xr-x 3 root root   198 Aug  3 03:05 conf #tomcat配置文件目錄
drwxr-xr-x 2 root root  4096 Aug  3 03:05 lib  #tomcat運行需要加載的jar包
-rw-r--r-- 1 root root 57011 Sep 28  2015 LICENSE #license文件亭饵,不重要
drwxr-xr-x 2 root root   197 Aug  3 03:15 logs  #在運行過程中產生的日志文件
-rw-r--r-- 1 root root  1444 Sep 28  2015 NOTICE #不重要
-rw-r--r-- 1 root root  6741 Sep 28  2015 RELEASE-NOTES #版本特性休偶,不重要
-rw-r--r-- 1 root root 16204 Sep 28  2015 RUNNING.txt   #幫助文件,不重要
drwxr-xr-x 2 root root    30 Aug  3 03:05 temp    #存放臨時文件
drwxr-xr-x 7 root root    81 Sep 28  2015 webapps #站點目錄
drwxr-xr-x 3 root root    22 Aug  3 03:05 work    #tomcat運行時產生的緩存文件

6.tomcat配置文件

核心配置文件:
/app/apache-tomcat-8.0.27/conf/server.xml
一個tomcat實例一個server

一個server中包含多個Connector辜羊,Connector的主要功能是接受踏兜、響應用戶請求。

service的作用是:將connector關聯(lián)至engine(catalina引擎)

一個host就是一個站點八秃,類似于nginx的多站點

context類似于nginx中l(wèi)ocation的概念

8.配置tomcat basic認證

<web-app>
......    
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>test</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        
        <auth-constraint>
            <role-name>test100</role-name>
        </auth-constraint>
    </security-constraint> 
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Default</realm-name>
    </login-config>
</web-app>

9.Nginx+Tomcat集群架構實戰(zhàn)

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream java {
        server 10.0.0.100:8080;
        server 10.0.0.101:8080;
    }
    server {
        listen       80;
        server_name  http://jpress.etiantian.org;
        root   html;
        index  index.html index.htm;
        location / {
            proxy_pass http://java;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

10.Nginx+Tomcat集群實現(xiàn)全棧Https

server {
        listen 443;
        server_name blog.qstack.com.cn;
        ssl on;
        ssl_certificate /opt/xiaohua/1_blog.qstack.com.cn_bundle.crt;
        ssl_certificate_key /opt/xiaohua/2_blog.qstack.com.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        root   /opt/tuchuang;
        index  index.php index.html index.htm;
        location / {
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
}
server {
        listen 80;
        server_name blog.qstack.com.cn;
        location / {
           return    302 https://blog.qstack.com.cn$request_uri;
        }
}

11.Tomcat監(jiān)控

zabbix監(jiān)控tomcat

vim /application/apache-tomcat-8.0.27/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=10.0.0.72
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

a:安裝zabbix-java-gateway碱妆,10052
b:配置重啟zabbix-java-gateway
START_POLLERS=5
c:配置重啟zabbix-server
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
d:zabbix-web添加jmx監(jiān)控

12.Tomcat性能優(yōu)化

JAVA_OPTS="$JAVA_OPTS -server -Xms256m -Xmx256m -Xss256k -XX:+UseParallelOldGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heap_dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/tmp/heap_trace.txt -XX:NewSize=128m -XX:MaxNewSize=128m"

tomcat優(yōu)化參考


13.反向代理nginx.conf文件

upstream  test {
     server 172.16.1.8:8080;
     server 172.16.1.9:8080;
     }
    server {
        listen       80;
        server_name  blog.oldqiang.com;
        location / {
     return    302 https://blog.oldqiang.com$request_uri;
        }
    }
server {
        listen 443;
        server_name blog.oldqiang.com;
        ssl on;
        ssl_certificate /opt/nginx/1_blog.oldqiang.com_bundle.crt;
        ssl_certificate_key /opt/nginx/2_blog.oldqiang.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
       location / {
        proxy_pass http://test;
        proxy_set_header Host $host;
        }
    location ~.*\.(png|jpg) {
       root  /data;
    }
    }   
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昔驱,隨后出現(xiàn)的幾起案子疹尾,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纳本,死亡現(xiàn)場離奇詭異窍蓝,居然都是意外死亡,警方通過查閱死者的電腦和手機繁成,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門吓笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巾腕,你說我怎么就攤上這事面睛。” “怎么了尊搬?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵叁鉴,是天一觀的道長。 經常有香客問我佛寿,道長幌墓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任狗准,我火速辦了婚禮克锣,結果婚禮上,老公的妹妹穿的比我還像新娘腔长。我一直安慰自己袭祟,他們只是感情好,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布捞附。 她就那樣靜靜地躺著巾乳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸟召。 梳的紋絲不亂的頭發(fā)上胆绊,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機與錄音欧募,去河邊找鬼压状。 笑死,一個胖子當著我的面吹牛跟继,可吹牛的內容都是我干的种冬。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼舔糖,長吁一口氣:“原來是場噩夢啊……” “哼娱两!你這毒婦竟也來了?” 一聲冷哼從身側響起金吗,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤十兢,失蹤者是張志新(化名)和其女友劉穎趣竣,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旱物,經...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡遥缕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宵呛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片通砍。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烤蜕,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情迹冤,我是刑警寧澤讽营,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站泡徙,受9級特大地震影響橱鹏,放射性物質發(fā)生泄漏。R本人自食惡果不足惜堪藐,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一莉兰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧礁竞,春花似錦糖荒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狂男,卻和暖如春综看,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岖食。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工红碑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泡垃。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓析珊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親兔毙。 傳聞我的和親對象是個殘疾皇子唾琼,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349