最详细完整,使用idea远程部署Tomcat(包括一些注意事项和不容易注意到的坑)
最近因为课程项目需要多人合作,所以就想着配置一下服务器上的Tomcat和本机的idea以达到远程部署的目的,没想到一个简简单单的配置竟然有如此多的坑,一不小心就是启动失败、没反应、报错……
一、准备
我使用的服务器配置:
阿里云Ubuntu 20.04 64位
2核 2GiB 1Mbps
Tomcat 9.0.65
JDK1.8.0_341(如果还没有配置JDK的就先去配置)
Tomcat安装路径为:/usr/local/apache-tomcat-9.0.65
本机配置:
MacBook Air 2020
macOS Monterey 12.6
IntelliJ IDEA 2022.2
二、配置Tomcat
首先配置服务器端的Tomcat。
找到你服务器上Tomcat的安装路径,进入bin文件夹,对bin文件夹下的catalina.sh进行编辑,命令如下(命令中涉及路径记得改为你自己的路径):
# 进入tomcat安装路径中的bin文件夹下
cd /usr/local/apache-tomcat-9.0.65/bin
# vim打开catalina.sh进行编辑
vim ./catalina.sh
打开后向下翻,找到334行左右(不同版本的Tomcat可能有出入),找到下面这行:
# ----- Execute The Requested Command -----------------------------------------
首先按键盘上的“i”,进入编辑模式(INSERT),在这行下面添加以下内容:
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=你的服务器的IP地址"
export CATALINA_OPTS
记得把内容中“你的服务器的IP地址”换成你的服务器的IP地址(😅)
这里有几个注意事项!!!
- 内容中的“-”前面用空格隔开(第一个“-”前不用),一定不能回车,不然会导致Tomcat不能运行!
- 网上很多地方在配置这里的时候,都没有“-Dcom.sun.management.jmxremote.rmi.port=1099”这一句,但是这一句其实很重要,不加可能会导致idea远程部署失败。
- 1099是JMX的端口。
然后就可以按键盘左上角的“esc”退出编辑模式,再输入“:wq“后敲回车来保存。
到这里就可以启动Tomcat了,不过要注意的是,平时在Windows系统的电脑上启动Tomcat都是直接双击批处理文件“startup.bat“就会看见弹窗启动的Tomcat,并且在弹窗中会打印控制台内容;但是在Linux服务器上,“.bat”格式的批处理文件肯定不能用,但如果运行“startup.sh”文件的话只会看到如下的内容:
# 执行 ./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-9.0.65
Using CATALINA_HOME: /usr/local/apache-tomcat-9.0.65
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-9.0.65/temp
Using JRE_HOME: /usr/local/jdk1.8.0_341/jre
Using CLASSPATH: /usr/local/apache-tomcat-9.0.65/bin/bootstrap.jar:/usr/local/apache-tomcat-9.0.65/bin/tomcat-juli.jar
Using CATALINA_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=你的服务器的IP地址
Tomcat started.
只知道Tomcat启动了,但是看不见控制台打印的内容,所以就不能使用“startup.sh”来启动Tomcat了,我们需要用“catalina.sh”来启动,输入以下命令,回车后就能看到Tomcat启动并且打印了内容,和在Windows系统的电脑上运行“startup.bat”一样的效果就出来了:
./catalina.sh run
注意!一定要使用run命令启动才能看到控制台打印的日志信息。
这时候就可以在本地电脑的浏览器上输入“你的服务器的IP地址:8080”,回车后看到以下内容则Tomcat部署成功:
服务器端的Tomcat配置就到这里。
三、idea配置远程部署
接下来就是本地电脑上的idea的配置了
首先打开idea的设置,找到工具(Tools) -> SSH配置(SSH Configurations),然后点击中间的“+”,在右侧填写信息:
SSH配置完成后,进入要部署的项目,点击右上角的“编辑配置”:
在弹出的窗口中选择左上角的“+”,然后选择Tomcat服务器(Tomcat Server) -> 远程(Remote):
在右边的窗口中首先将Tomcat服务器设置(Tomcat Server Settings) -> 远程暂存(Remote staging) -> 类型(Type)选择为sftp,然后点击下一行主机(Hosts)右侧的“…”按钮,在弹出的窗口中点击左上角的“+”按钮,选择SFTP,取一个名字后填写右侧信息:
主机配置完成后回到Tomcat配置页面,选择主机为刚刚配置的主机,会多出两个需要填写内容的部分,都填写你的服务器上Tomcat下的webapps目录的路径,将远程连接设置(Remote Collection Settings) -> 主机(Host)设置为你的服务器的IP地址,端口保持不变:
服务器页面配置好后,点击上方的“部署(Deployment)”选项卡,点击“+”,选择工件(Artifacts),选择第二个(以exploded结尾),再点击确定,idea上的配置就完成了:
四、启动服务
点击idea上的运行按钮,等待一会儿,即可部署成功:
五、注意事项
idea远程部署到服务器上的Tomcat本质上是将构建好的工件上传至服务器上Tomcat下的webapps目录下,利用Tomcat检测到webapps目录下文件发生变化就会重新部署特性,达到远程部署的目的,也就是说,要完成idea远程部署,前提是服务器上的Tomcat必须要处于运行状态,如果服务器上的Tomcat没有处于运行状态,idea远程部署时就会发生报错无法连接。