之前我们已经配置了Tomcat的基础架构,也可以使用IP+8080去访问,但是有一个问题如何去更改这个端口呢?
1.1 打开配置文件
[[email protected]03 sbin]# vim /usr/local/tomcat/conf/server.xml
搜索8080
更改80端口:
Connector port="8080" protocol="HTTP/1.1"
修改为:
Connector port="80" protocol="HTTP/1.1"
1.2 重启服务
[root@zhdy-03 sbin]# /usr/local/tomcat/bin/shutdown.sh
[root@zhdy-03 sbin]# /usr/local/tomcat/bin/startup.sh
当我们再次使用IP+80访问的时候发现还是可以使用80端口;再次查看一下端口:
[[email protected]03 sbin]# netstat -lntp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1675/nginx: master
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3226/java
tcp6 0 0 :::8009 :::* LISTEN 3226/java
[[email protected]03 sbin]#
不难发现,80端口已经被我们之前配置的nginx占用。
所以我们需要停掉nginx,然后再次重启java
[[email protected] sbin]# /etc/init.d/nginx stop
Stopping nginx (via systemctl): [ 确定 ]
[[email protected]03 sbin]# /usr/local/tomcat/bin/shutdown.sh
[[email protected]03 sbin]# /usr/local/tomcat/bin/startup.sh
[[email protected]03 sbin]# netstat -lntp | grep 80
tcp6 0 0 :::80 :::* LISTEN 3320/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3320/java
tcp6 0 0 :::8009 :::* LISTEN 3320/java
虚拟主机也就是咱们之前讲过的,一个IP地址可以配置多个站点,绑定多个不同的域名,其中说白了就是咱们配置多个webserver。
2.1 server.xml其实就是java的主配置文件
其中<Host>和</Host>之间的配置为虚拟主机配置部分
name 定义域名;
appBase 定义应用的目录;
unpackWARs=”true” 是否自动解压;(也是就是说,当我们往站点目录里面直接上传一个war的包,它会自动解压)
Java的应用通常是一个jar的压缩包,你只需要将jar的压缩包放到appBase目录下面即可。刚刚访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里。
2.2 如何配置一个新的虚拟主机?
增加虚拟主机,编辑server.xml,在</Host>下面增加如下内容:
<Host name="www.asd.com" appBase=""
unpackWARs= "true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data/wwwroot/www.asd.com/" debug="0" reloadable="true" crossContext="true"/>
</Host>
增加一个www.asd.com的java站点。
docBase=”/data/wwwroot/www.asd.com/” 这个就和咱们之前配置LAMP和LNMP差不多了。就是把站点的配置文件上传到此处。 有时候配置完毕,再次访问站点会出现404,那么几乎都是这个地方没有定义对,要么就是appBASE也上传了站点文件。(如果不知道如何解压war包,我们可以先把站点的包放到appBASE下,然后等到自动解压完毕,我们再次move站点的包到自定义的位置。)
铭哥专业解释:
docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。
appBase为应用存放目录,通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录
2.3 部署一个java站点
[[email protected]03 src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
[[email protected]03 src]# mkdir /data/wwwroot/www.asd.com/
//我们先把站点程序放到appBASE中解压,然后再次全部移动到此目录下↑
[[email protected]03 src]# mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
等待个10几秒钟,就会出现一个自动解压出来包
[[email protected]03 webapps]# ls
docs examples host-manager manager ROOT zrlog-1.7.1-baaecb9-release zrlog-1.7.1-baaecb9-release.war
移动解压出来的站点目录到自定义的目录:
[[email protected]03 webapps]# mv zrlog/* /data/wwwroot/www.asd.com/
[[email protected] www.asd.com]# ls
admin assets error favicon.ico include install META-INF WEB-INF
[root@zhdy-03 sbin]# /usr/local/tomcat/bin/shutdown.sh
[root@zhdy-03 sbin]# /usr/local/tomcat/bin/startup.sh
192.168.59.131 www.asd.com
[root@zhdy-03 www.asd.com]# ps aux | grep mysql
[root@zhdy-03 www.asd.com]# mysql -uroot -pzhangduanya
创建数据库并授权:
mysql> create database zrlog;
Query OK, 1 row affected (0.04 sec)
mysql> grant all on zrlog.* to 'zrlog'@'127.0.0.1' identified by 'zhangduanya';
Query OK, 0 rows affected (0.05 sec)
测试创建的用户是否正确:
[root@zhdy-03 www.asd.com]# mysql -uzrlog -h127.0.0.1 -pzhangduanya
mysql> show databases;
在日常运维中,Tomcat用的还是蛮多的,但是一旦出现问题,我们就需要去解决,思路就来自日志文件。
3.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字样的为默认虚拟主机的错误日志。
访问日志默认不会生成,需要在server.xml中配置一下。
3.2 配置日志
在对应虚拟主机的<Host></Host>里面加入下面的配置(假如域名为asd.com):
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="asd.com_access" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
prefix 定义访问日志的前缀;
suffix 定义日志的后缀;
pattern 定义日志格式。
新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个localhost.日期.log日志; 错误日志会统一记录到catalina.out中。
关于Tomcat日志,最需要关注catalina.out,当出现问题时,我们应该第一想到去查看它。