16.4 配置Tomcat監聽80端口php
16.5/16.6/16.7 配置Tomcat虛擬主機(有如何建立一個zrlog博客)html
16.8 Tomcat日誌java
擴展mysql
邱李的tomcat文檔 https://www.linuser.com/forum.php?mod=forumdisplay&fid=37linux
JAR、WAR包區別 http://blog.csdn.net/lishehe/article/details/41607725nginx
tomcat常見配置彙總 http://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.htmlweb
resin安裝 http://fangniuwa.blog.51cto.com/10209030/1763488/sql
1 tomcat 單機多實例數據庫
http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/apache
2 tomcat的jvm設置和鏈接數設置
http://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html
3 jmx監控tomcat
http://blog.csdn.net/l1028386804/article/details/51547408
4 jvm性能調優監控工具jps/jstack/jmap/jhat/jstat
http://blog.csdn.net/wisgood/article/details/25343845
http://guafei.iteye.com/blog/1815222
5 gvm gc 相關
http://www.cnblogs.com/Mandylover/p/5208055.html
http://blog.csdn.net/yohoph/article/details/42041729
tomcat內存溢出
https://blog.csdn.net/ye1992/article/details/9344807
16.4 配置Tomcat監聽80端口:
tomcat監聽的是8080。
那麼若是想直接訪問,不想在瀏覽器裏還要輸入8080。也就是直接在瀏覽器裏直接輸一個IP或者域名訪問的是80端口(80端口是能夠省略掉的。其餘的就要帶上,很不方便)。
因此tomcat也是能夠自定義端口的,也就是說把8080改爲80的。
如下:
~1.vim /usr/local/tomcat/conf/server.xml tomcat的配置文件
搜索8080
Connector port="8080" protocol="HTTP/1.1"修改成Connector port="80" protocol="HTTP/1.1"
~2./usr/local/tomcat/bin/shutdown.sh
~3./usr/local/tomcat/bin/startup.sh
~4.若是啓動了nginx,須要將nginx停掉(etc/init.d/nginx stop)。而後再重啓tomcat
實例:
[root@axinlinux-01 src]# vim /usr/local/tomcat/conf/server.xml vimtomcat的配置文件
<Connector port="80" protocol="HTTP/1.1" 將8080改成80
connectionTimeout="20000"
redirectPort="8443" />
[root@axinlinux-01 src]# /usr/local/tomcat/bin/shutdown.sh
更改完確定要重啓服務。不支持restart。先shutdown,再start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@axinlinux-01 src]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@axinlinux-01 src]# ps aux |grep java 查看進程是有的
root 3125 6.6 6.2 2980484 116476 pts/0 Sl 14:50 0:08 /usr/local/jdk1.8/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 3177 0.0 0.0 112720 980 pts/0 S+ 14:52 0:00 grep --color=auto java
[root@axinlinux-01 src]# netstat -lntp |grep java 可是80端口尚未出現
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3125/java
tcp6 0 0 :::8009 :::* LISTEN 3125/java
[root@axinlinux-01 src]# netstat -lntp |grep 80 搜一下80。會發現80是nginx
當nginx監聽了80端口,tomcat就不能再監聽80端口。這叫作端口占用
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1078/nginx: master
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3125/java
tcp6 0 0 :::8009 :::* LISTEN 3125/java
[root@axinlinux-01 src]# /etc/init.d/nginx stop 因此先停掉nginx
[root@axinlinux-01 src]# /usr/local/tomcat/bin/shutdown.sh 再來重啓tomcat
[root@axinlinux-01 src]# /usr/local/tomcat/bin/startup.sh
[root@axinlinux-01 src]# netstat -lntp |grep java 會發現tomcat已經監聽了80
tcp6 0 0 :::80 :::* LISTEN 3280/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3280/java
tcp6 0 0 :::8009 :::* LISTEN 3280/java
再來用瀏覽器直接訪問192.168.208.128
(須要注意的是,8005啓動會比較慢,在8005尚未啓動的時候,訪問的話會比較慢)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16.5/16.6/16.7 配置Tomcat虛擬主機:
以前的Apache或者是nginx,他們都屬於webserver,都支持虛擬主機配置文件。
虛擬主機配置文件就是說一臺服務器上或者說一個webserver能夠支持一個IP下面能夠訪問多個域名,每個域名錶明着一個網站,因此咱們能夠配置多個網站。那麼每個網站的配置文件都是一個虛擬主機。
tomcat一樣也存在這樣的概念
~1.
vim /usr/local/tomcat/conf/server.xml 看一下tomcat的配置文件
其中<Host>和</Host>之間的配置爲虛擬主機配置部分,name定義域名,
appBase定義應用的目錄,Java的應用一般是一個war的壓縮包,你只須要將war的壓縮包放到appBase目錄下面便可。剛剛阿銘訪問的Tomcat默認頁其實就是在appBase目錄下面,不過是在它子目錄ROOT裏。
docBase,這個參數用來定義網站的文件存放路徑,若是不定義,默認是在appBase/ROOT下面,定義了docBase就以該目錄爲主了,其中appBase和docBase能夠同樣。在這一步操做過程當中不少同窗遇到過訪問404的問題,其實就是docBase沒有定義對。
appBase爲應用存放目錄,一般是須要把war包直接放到該目錄下面,它會自動解壓成一個程序目錄
實例~1.中有更詳細的解釋
~2.
增長虛擬主機,編輯server.xml,在</Host>下面增長以下內容
<Host name="www.123.cn" appBase=""
unpackWARs= "true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
</Host>
~3.
下面咱們經過部署一個java的應用來體會appBase和docBase目錄的做用
咱們下載的項目是java應用是zrlog。
咱們搭建php的博客能夠用wordpress,博客就是記錄文章的,那麼這是php的博客。
那麼關於java的博客,就是zrlog(固然只是其中的一個)。
1.下載zrlog wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
2.mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
3.mv /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release /usr/local/tomcat/webapps/zrlog
4.create database zrlog; 建立zrlog這個用戶
grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'wangxin789';
建立zrlog庫(庫能夠不加單引號),指定他的IP和密碼
4.瀏覽器訪問 ip:8080/zrlog
5.mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/
創建doc目錄,使博客直接輸入IP便可訪問
實例:
~1.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
tomcat的配置文件格式和Apache nginx不太同樣,是xml這種形式。那麼這部分Host就表示一個虛擬主機。如下,解釋這四項:
域名就叫Host name=「localhost」
appBase="webapps"的意思是,只他的應用項目在哪裏。好比搭建了一個tomcat,要想用tomcat去跑一個網站,那要把網站放在那裏呢?:
首先他的應用不能是傳統意義上的目錄(好比nginx訪問網站的時候,要給他指定一個目錄,這個目錄裏存放着php的文件或者是HTML的文件,而後再去訪問)。那tomcat就不太同樣,須要提供一個WAR的包(就是一個文件一個壓縮包,這個壓縮包裏面放着運行網站的文件包括配置、gsp的代碼,還有一些和數據庫相關的,像圖片等等),須要打包WAR這樣的文件。那麼這個文件就要放在"webapps"裏面
unpackWARs="true"的意思是,是否自動的解壓WAR這個包,"true"就是自動的解壓。也就是說,把WAR包放在webapps裏面,就自動的解壓了。
autoDeploy="true"若是此項設爲true,表示Tomcat服務處於運行狀態時,可以監測appBase下的文件,若是有新有web應用加入進來,會自運發佈這個WEB應用
docbase=「」固然若是不想定義WAR包,還能夠單獨指定一個目錄,這個目錄裏存放了一些gsp的文件。也就是說給他提供的不是一個WAR包,而是一個目錄,這個目錄裏有gsp的程序。那麼若是這樣的話,就須要加上docbase來定義。至關於不用WAR包,而是解壓完了以後的
appbase與docbase二選一。若是同時存在其中一個爲空
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Valve 這一部分是配置日誌的
</Host>
~2.
[root@axinlinux-01 src]# vim /usr/local/tomcat/conf/server.xml
</Host> 在第一個Host對應的後面的那個Host。也就是這一行下面加入一個咱們自定義的Host
<Host name="www.123.cn" appBase=""
unpackWARs= "true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
</Host>
咱們定義的是docbase,那麼appbase相應的爲空
~3.
[root@axinlinux-01 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
[root@axinlinux-01 src]# du -sh zrlog-1.7.1-baaecb9-release.war
6.8M zrlog-1.7.1-baaecb9-release.war
[root@axinlinux-01 src]# ls /usr/local/tomcat/webapps/ appbase默認的路徑實在這個路徑下
docs examples host-manager manager ROOT 默認是這5個目錄
[root@axinlinux-01 src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
能夠先作一個實驗,咱們把下載的這個WAR包,cp到appbase的默認路徑下
[root@axinlinux-01 src]# ls /usr/local/tomcat/webapps/ 再來看,發現這個WAR包自動的解壓了。就是咱們剛纔說的unpackWARs="true"定義的,自動的解壓了
docs examples host-manager manager ROOT zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war
此時要注意,若是刪掉這個WAR包,他自動解壓的這個目錄也會一併刪掉
[root@axinlinux-01 src]# cd /usr/local/tomcat/webapps/
[root@axinlinux-01 webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
而後,咱們來安裝他。用瀏覽器來安裝,輸入http://192.168.208.128/zrlog/,會跳出安裝嚮導:
[root@axinlinux-01 webapps]# ps aux |grep mysql 首先檢查mysql是否啓動
[root@axinlinux-01 webapps]# mysql -uroot -pwangxin789 進入mysql
MySQL [(none)]> create database zrlog; 建立zrlog這個用戶
Query OK, 1 row affected (0.00 sec)
MySQL [(none)]> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'wangxin789';
建立zrlog庫(庫能夠不加單引號),指定他的IP和密碼
Query OK, 0 rows affected (0.01 sec)
MySQL [(none)]> quit 退出
Bye
[root@axinlinux-01 webapps]# mysql -uzrlog -h127.0.0.7 -pwangxin789 再次登陸,檢查建立的對不對
MySQL [(none)]> show databases; 看一下是否是有zrlog
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| zrlog |
+--------------------+
再回到瀏覽器上,輸入咱們剛纔mysql設置的用戶密碼:
完成,點擊查看
能夠先寫個帖子
寫完,點擊保存
再用瀏覽器查看一下http://192.168.208.128/zrlog/
就有了咱們剛寫的帖子
可是,咱們訪問192.168.208.128/zrlog才能訪問到博客。比較麻煩,咱們能夠設置一下,直接訪問域名就能夠到博客:
咱們設置了docBase="/data/wwwroot/123.cn/。先建一個123.cn的目錄
[root@axinlinux-01 ~]# mkdir /data/wwwroot/123.cn
[root@axinlinux-01 ~]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/
再在windows上設置www.123.cn的housts,讓www.123.cn訪問本機IP
[root@axinlinux-01 ~]# /usr/local/tomcat/bin/shutdown.sh 重啓一下
[root@axinlinux-01 ~]# /usr/local/tomcat/bin/startup.sh
[root@axinlinux-01 ~]# ps aux |grep java 查看是否起來
[root@axinlinux-01 ~]# netstat -lntp |grep java 查看端口。等到8005起來才能夠
tcp6 0 0 :::80 :::* LISTEN 6185/java
tcp6 0 0 127.0.0.1:41206 :::* LISTEN 6205/java
tcp6 0 0 127.0.0.1:21206 :::* LISTEN 6205/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 6185/java
tcp6 0 0 127.0.0.1:51206 :::* LISTEN 6205/java
tcp6 0 0 :::8009 :::* LISTEN 6185/java
再回到瀏覽器上,直接www.123.cn。就能夠了,以下圖:
總結一下:
一開始咱們是把zrlog放在appbase目錄下,而且是讓他自動解壓的。然後咱們又把解壓完的目錄放到了docbase目錄下,能夠直接訪問。
再來看比對一下配置文件:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
appBase="webapps"這個其實是一個路徑,是一個相對路徑,就是咱們/usr/local/tomcat/webapps的這個webapps,也就是說直接寫一個webapps,就直接省略掉了前面的/usr/local/tomcat/(好比咱們寫一個conf,就表示的/usr/local/tomcat/conf)
當咱們使用WAR包的時候,才須要把WAR包放到appbase裏面,並讓他自動解壓
若是訪問的網站他就是一個目錄,就要把涉及到這個文件的全部文件都放到docbase裏面
簡單講,appbase是放WAR包的,docbase是放網站程序的
知識點:
當咱們訪問的時候若是遇到404的問題:
除了考慮appbase和docbase。還要考慮apabase路徑涉及到一個默認的目錄,就是root。就是webapps下有一個root,這個root是默認的,也就說咱們訪問一個圖片等靜態文件就是在root下的。若是咱們自定義一個appbase,那他的路徑下也應該要有一個root目錄,把圖片等靜態文件放到root目錄下才能正常訪問
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16.8 Tomcat日誌:
~1.
ls /usr/local/tomcat/logs
其中catalina開頭的日誌爲Tomcat的綜合日誌,它記錄Tomcat服務相關信息,也會記錄錯誤日誌。 常常關注
其中catalina.2017-xx-xx.log和catalina.out內容相同,前者會天天生成一個新的日誌。
host-manager和manager爲管理相關的日誌,其中host-manager爲虛擬主機的管理日誌。 用的不多
localhost和localhost_access爲虛擬主機相關日誌,其中帶access字樣的日誌爲訪問日誌,不帶access字樣的爲默認虛擬主機的錯誤日誌。
~2.
訪問日誌默認不會生成,須要在server.xml中配置一下。
具體方法是在對應虛擬主機的<Host></Host>裏面加入下面的配置(假如域名爲123.cn):
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="123.cn_access" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
prefix定義訪問日誌的前綴,suffix定義日誌的後綴,pattern定義日誌格式。新增長的虛擬主機默認並不會生成相似默認虛擬主機的那個localhost.日期.log日誌,錯誤日誌會統一記錄到catalina.out中。關於Tomcat日誌,你最須要關注catalina.out,當出現問題時,咱們應該第一想到去查看它。