58.配置tomcat监听80 虚拟主机 日志
2019獨角獸企業重金招聘Python工程師標準>>>
16.4 配置Tomcat監聽80端口
16.5/16.6/16.7 配置Tomcat虛擬主機(有如何創建一個zrlog博客)
16.8 Tomcat日志
擴展
邱李的tomcat文檔 https://www.linuser.com/forum.php?mod=forumdisplay&fid=37
JAR、WAR包區別 http://blog.csdn.net/lishehe/article/details/41607725
tomcat常見配置匯總 http://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.html
resin安裝 http://fangniuwa.blog.51cto.com/10209030/1763488/
1 tomcat 單機多實例
http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/
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,當出現問題時,我們應該第一想到去查看它。
?
?
轉載于:https://my.oschina.net/u/3866149/blog/1937050
總結
以上是生活随笔為你收集整理的58.配置tomcat监听80 虚拟主机 日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转发:php解决高并发
- 下一篇: 口无遮拦的钉钉与坐立不安的腾讯