16.4 配置tomcat监听80端口
默认浏览器访问某域名或ip时访问80端口,若其他端口需要在末尾特殊注明
修改tomcat监听的端口
[root@hyc-01-01 ~]# vim /usr/local/tomcat/conf/server.xml
…
67 Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
68 -->
69 <Connector port="80" protocol="HTTP/1.1"
70 connectionTimeout="20000"
71 redirectPort="8443" />
72 <!-- A "Connector" using the shared thread pool-->
…
重启服务
[root@hyc-01-01 ~]# /usr/local/tomcat/bin/shutdown.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
[root@hyc-01-01 ~]# /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@hyc-01-01 ~]# ps aux|grep java
root 3974 3.7 8.0 2281856 81444 pts/0 Sl 07:43 0:03 /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 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -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 4006 0.0 0.0 112720 980 pts/0 R+ 07:44 0:00 grep --color=auto java
端口占用
[root@hyc-01-01 ~]# netstat -lntp|grep java tomcat监听的端口中没有80
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3974/java
tcp6 0 0 :::8009 :::* LISTEN 3974/java
[root@hyc-01-01 ~]# netstat -lntp|grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 946/nginx: master 80端口被nginx占用
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3974/java
tcp6 0 0 :::8009 :::* LISTEN 3974/java
停止nginx服务
[root@hyc-01-01 ~]# /etc/init.d/nginx stop
Stopping nginx (via systemctl): [ 确定 ]
再重启tomcat服务
检查80端口监听情况
[root@hyc-01-01 ~]# netstat -lntp |grep 80
tcp6 0 0 :::80 :::* LISTEN 4090/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 4090/java
tcp6 0 0 :::8009 :::* LISTEN 4090/java
16.5 配置tomcat的虚拟主机(上)
编辑配置文件
[root@hyc-01-01 ~]#vim /usr/local/tomcat/conf/server.xml
…
以下是一台主机的配置
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 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" />
</Host>
以上就是一台主机的配置,到此该主机配置结束
…
这里的webapps是一个相对路径,实际绝对路径应该是/usr/local/tomcat/webapps
tomcat的应用项目:tomcat正常提供web服务需要提供一个war的包(一个压缩包),该包中包含了运行该网站的一些文件(包括配置、jsp代码、数据库相关的文件),需要将该包放到webapps中
unpackWARs:是否自动解压WAR包(true or false),若该项为true,则用户将WAR包放入webapps中WAR包就会被自动解压
用户也可以指定一个目录,此时提供的不再是WAR包,而是一个存放jsp程序的目录,在目录中存放jsp的文件,此时需要的不是appbase而是docbase
用户可以在原先主机的后面直接增加新的主机配置:
…
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</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>
…
appBase参数为空,在下面的配置中定义了docBase,为避免相互干扰通常appbase和docbase总有一个为空
16.6 配置tomcat的虚拟主机(中)
下载zrlog的war包
将下载的war包放到appbase的路径下
[root@hyc-01-01 src]# mv zrlog-1.9.1-cd87f93-release.war /usr/local/tomcat/webapps
[root@hyc-01-01 webapps]# ls
docs host-manager ROOT zrlog-1.9.1-cd87f93-release.war
examples manager zrlog-1.9.1-cd87f93-release
文件webapps自动解压了zrlog-1.9.1-cd87f93-release的压缩文件
为了不影响实验,将zrlog-1.9.1-cd87f93-release.war从webapps下移走或删除;
为方便实验将包名改为一个简短的名称
[root@hyc-01-01 webapps]# rm -f zrlog-1.9.1-cd87f93-release.war
[root@hyc-01-01 webapps]# mv zrlog-1.9.1-cd87f93-release/ zrlog
使用1.7的版本在删除war包时由war包生成的目录也会被删除
用浏览器访问zrlog
该界面要求用户配置zrlog使用的数据库,zrlog不会自动创建数据库
数据库相关操作:
检查数据库是否正常启动
[root@hyc-01-01 webapps]# ps aux|grep mysql
root 828 0.0 0.0 115432 1704 ? S 15:24 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/hyc-01-01.pid
mysql 1210 0.0 24.4 1302736 458344 ? Sl 15:24 0:13 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=hyc-01-01.err --pid-file=/data/mysql/hyc-01-01.pid --socket=/tmp/mysql.sock
root 11276 0.0 0.0 112724 984 pts/0 S+ 19:22 0:00 grep --color=auto mysql
登录数据库进行相关操作:
创建数据库zrlog
mysql> create database zrlog;
Query OK, 1 row affected (0.00 sec)
创建用户zrlog,授予用户zrlog对数据库zrlog的所有权限,指定zrlog登录的ip为127.0.0.1
mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'hyc940421';
Query OK, 0 rows affected (0.00 sec)
检查配置是否正确
[root@hyc-01-01 webapps]# mysql -uzrlog -h127.0.0.1 -phyc940421
…
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| zrlog |
+--------------------+
2 rows in set (0.00 sec)
在浏览器填写相关信息
总结:
安装zrlog的相关操作
1 部署环境
tomcat+jdk
2 下载zrlog的WAR包
3 将WAR包放到appbase指定的目录下,若设置了unpackWARs="true"可以使WAR包自动解压,解压后的目录就是要访问的位置
4 博客对帖子的相关操作需要用到数据库,需要在系统中创建对应的数据库用户、密码并创建对应的数据库
16.7 配置tomcat的虚拟主机(下)
通过配置使用户访问zrlog时可以不输入http://192.168.31.129/zrlog,而是输入域名访问
…
<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"/>
…
[root@hyc-01-01 conf]# mkdir /data/wwwroot/123.cn 创建docBase指定的目录
[root@hyc-01-01 conf]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/
移动zrlog文件到docBase定义的目录下
在windows主机上的hosts文件中将域名与服务器ip绑定
测试绑定是否成功
重启tomcat服务
在浏览器输入www.123.cn访问zrlog博客
Webapps下的ROOT目录
当用户只输入服务器ip时显示的页面就是ROOT目录下的index.jsp
当用户只在浏览器输入ip时默认会将请求交给localhost,根据配置文件,会到webapps目录下寻找访问内容,默认访问webapps/ROOT下的内容
有时用户会自定义appBase目录,此时该目录下也应该创建一个ROOT目录
使用自定义的appBase目录时,用户需要将图片等静态文件以及.jsp文件放到appBase目录中的ROOT目录中才可以正常访问
16.8 tomcat日志
[root@hyc-01-01 tomcat]# ls logs
catalina.2018-09-01.log host-manager.2018-09-01.log localhost_access_log.2018-09-01.txt
catalina.out localhost.2018-09-01.log manager.2018-09-01.log
tomcat的四类日志
catalina开头:
tomcat的综合日志,记录tomcat服务相关信息及错误日志,通常该日志中出现严重等字眼时需要重点关注
每天会生成一个新的catalina.xxxx-xx-xx.log文件,该文件内容与catalina.out相同
host-manager和manager:记录管理相关的信息,接触不多
localhost和localhost_access:默认虚拟主机的错误日志
带access字样为访问日志,不带access字样为默认虚拟主机的错误日志
访问日志默认不会生成,需要在server.xml中配置
…
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
…
directory="logs" 定义访问日志的目录
prefix="localhost_access_log" 访问日志的前缀名
suffix=".txt" 访问日志的后缀名