1. 介绍
粗鄙的介绍:tomcat,很好用,可以跑java服务,也可以跑前端服务。但是都是要打包后的。
tomcat 在linux和windows上都可以运行。
2. 下载
官网地址 :https://tomcat.apache.org/
进入官网后,左侧有download,点需要的版本,然后在右边找到Binary Distributions,我下载的是Core的版本。
3. jdk和jre环境配置
-
进入
/tomcat/bin
目录 -
编辑
setclasspath.bat
文件 -
在第二个分割线之后(建议),添加java环境变量
set JAVA_HOME=/home/java/jdk1.8.0_291 # 你自己的jdk安装目录,bin目录的上一层
set JRE_HOME=/home/java/jdk1.8.0_291/jre # 你自己的jre安装目录,可以使用jdk里自带的
- 保存后退出
4. 日志编码格式
作用:(避免日志乱码)
- 进入
/tomcat/conf
目录 - 编辑
logging.properties
文件
java.util.logging.ConsoleHandler.encoding = GBK # 把日志打印的字符编码改成GBK,原来是UTF-8
5. 服务配置
-
进入
/tomcat/conf
目录 -
编辑
server.xml
文件…原配置文件里有很多注释掉的东西,我直接删除了,下边附上简单易懂的配置文件。
注意: 建议把原始配置文件备份,然后新配置文件直接粘贴下方内容。。。多个service标签可同级并存(即可配置多个服务)
5.1 java服务
3个步骤:改完配置文件,运行一下,然后把war包丢进去。运行方式参考 6.
- 改配置文件(重新运行后生效)
在下方,主要是 Service
这一组标签里的内容
- 运行
参考6。运行后,会在/tomcat
目录下生成 java-browser
这个目录(服务1的工程名称,我的是java-browser
)
- 部署
把 java打的war包改名成 ROOT.war,丢进这个目录里,即部署完成
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!--服务1,放browser-->
<Service name="java-browser">
<!--服务1的端口,就是java服务的端口-->
<Connector port="6061" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!--服务1在conf里的工程名称-->
<Engine name="java-browser" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!--服务1的工程名称-->
<Host name="localhost" appBase="java-browser"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
5.2 前端服务
3个步骤:改完配置文件,运行一下,然后把index.html
整组文件丢进去。运行方式参考 6.
- 改配置文件(重新运行后生效)
在下方,主要是 Service
这一组标签里的内容
- 运行
参考6。运行后,会在/tomcat
目录下生成 web-browser
这个目录(服务2的工程名称,我的是web-browser
)
- 部署
在web-browser
目录下新建一个ROOT 目录,把前端内容丢进去(直接放index.html就是能直接访问了)。注意,如果是VUE项目,会有一个坑。
- 解决vue项目 刷新404坑请看文章最下方。
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<!--服务2,放前端-->
<Service name="web-browser">
<!--服务2的端口,通过这个端口访问前端页面-->
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!--服务2在conf里的工程名称-->
<Engine name="web-browser" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!--服务2的工程名称-->
<Host name="localhost" appBase="web-browser"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
6. 运行
- windows上运行:
进入/tomcat/bin
目录,双击 startup.bat
文件
- linux上运行:
进入 /tomcat/bin
目录, 命令 ./catalina.sh start
运行
查看是否启动成功(日志)
进入/tomcat/log
目录,命令 tail -f ./catalina.out
7. 停止
- windows上运行:
进入/tomcat/bin
,双击 startup.bat
文件
- linux上运行:
进入 /tomcat/bin
, 命令 ./catalina.sh stop
停止
PS : 问题解决
前端vue项目打包后,是一个dist目录,将这个目录里的文件,全部放在ROOT 文件夹下,并且配置,即可通过tomcat访问。
进入非主业后,刷新会404。。需要进行设置(2步)
- 改前端的router
前端工程中,route -->index.js
export default new Router({
mode:'histroty', //注意这里,把mode改成history
})
- 添加一个配置文件
在/tomcat/web-browser/ROOT
目录下(就是你前端tomcat的ROOT 目录),新建一个WEB-INF
文件夹,创建一个web.xml
文件,内容如下.
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<display-name>webapp</display-name>
<description>
webapp
</description>
<error-page>
<error-code>404</error-code>
<location>/</location>
</error-page>
</web-app>