58.配置tomcat监听80 虚拟主机 日志

孤人 提交于 2019-12-11 00:09:43

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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 &quot;%r&quot; %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 &quot;%r&quot; %s %b" />

prefix定义访问日志的前缀,suffix定义日志的后缀,pattern定义日志格式。新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个localhost.日期.log日志,错误日志会统一记录到catalina.out中。关于Tomcat日志,你最需要关注catalina.out,当出现问题时,我们应该第一想到去查看它。

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!