介绍
介绍
我们学习一下如何将我们的Java项目发布到Tomcat服务器上面。
管理
配置
manager是用来管理tomcat的GUI工具,默认部署在 webapps 下面
如果我们的项目不是在 webapps 下面,我们可以复制 webapps/manager 目录到自己的 Host.appBase 目录下面
服务配置
打开 conf/server.xml 文件,在 Server 节点增加 Service 节点
<Service name="TongfuJava"> <Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="TongfuJava" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps"> </Host> </Engine> </Service>
用户配置
打开 conf/tomcat-users.xml 文件,在 tomcat-users 节点下面增加用户设置
<role rolename="manager-gui"/> <user username="admin" password="123456" roles="manager-gui"/>
重启Tomcat
./bin/shutdown.sh ./bin/startup.sh
授权IP地址
默认 manager 只能通过 localhost 访问,如果需要其他 IP 页可以访问,则需要进行如下配置
打开 webapps/manager/META-INF/context.xml 文件,修改 <Value ... RemoteAddrValue ... />
增加自己的 IP 地址,我们这里设置的是 192.168.1.133
<Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1|192\.168\.1\.133|::1|0:0:0:0:0:0:0:1" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
测试
通过 curl 测试 manager 首页
curl --basic -u admin:123456 'http://localhost:8088/manager/html'
看到界面表示安装成功!!!
打包
通过 Maven 打包 war
我们使用 Maven 工具将项目打包成 war 文件,方便 tomcat 使用
准备
打开 pom.xml
在 project 里增加
<packaging>war</packaging>
在 dependencies 里增加
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
打包
切换到项目跟目录
通过 mvn 打包 war
mvn clean package -Dmaven.test.skip=true
maven.test.skip=true:表示在打包的时候跳过测试项目
因为大多数打包的环境是不能连接数据库之类的外部资源的,如果不加这一句,打包将会因为无法连接数据库而失败
部署
手动部署war
我们通过 maven 打包的 war 压缩包可以被 tomcat 解析来使用
配置
打开配置文件 conf/server.xml,在虚拟主机 <Host> 里增加设置
<Context path="/" docBase="/data/web/myweb" debug="0" privileged="true"> </Context>
解压缩war
使用 unzip 解压缩 war 文件到指定目录
unzip -o myweb.war -d /data/web/myweb/
重启tomcat
重新启动tomcat
./bin/shutdown.sh ./bin/startup.sh
打开浏览器测试程序!
自动部署war
我们利用 tomcat 的 Host 主机进行自动解压缩 war 文件来完成自动部署
配置
打开配置文件 conf/server.xml,给虚拟主机 <Host> 增加属性
unpackWARs="true" autoDeploy="true"
unpackWARs="true":表示允许自动解压缩 war 文件
autoDeploy="true":表示开启自动部署功能
更新war
将打包好的 war 文件放到 <Host> 的 appBase 指定的目录下面,默认是 webapps 目录
重启tomcat
重新启动tomcat
./bin/shutdown.sh ./bin/startup.sh
打开浏览器测试程序!
FAQ
项目发布完记得删除war文件
如果appBase下面有war文件,即使没有开启unpackWARs,没有开启autoDeploy,tomcat还是会去等待,所以用完记得要删除哦~~
ROOT目录是可以删除的
通过war文件自动部署完项目之后会发现,在同级目录下面有个ROOT目录,这个目录是可以删除掉的
Tomcat启动速度瓶颈在CPU上
tomcat启动慢和内存关系不大,主要cpu才是瓶颈,所以笔记本电脑开发尽量提供IDE的模式调试
项目更新后必须重启Tomcat
项目更新了,必须重启tomcat才能生效,因为java是整体运行思路的语音,和脚本语音不一样,任何一个改动都需要重新来过