记录一下idea远程tomcat运行项目的配置过程
背景:每次系统修改代码后则需手动打包手动部署到测试服务器上,为了简化这个过程我这里选择尝试一次idea的远程运行功能,结论来讲这玩意配置麻烦,并不算很好用,只是部署的话,还是Jenkins之类的自动化工具更合适。
远程机:安装有tomcat
本地机:顾名思义,开发用的装有idea的机器
系统均为windows7,tomcat为8.5
远程机:
tomcat默认项目路径是webapps,首先不建议继续使用这个路径,为server.xml下/Server/Engine/Host@appBase指定一个新路径,然后将其设置为共享文件夹用于给本地机传包,idea有好几种方式可用于传包,这里我选择windows自带的共享文件夹方式,ftp也可以这里我就不多说了。
接下来修改tomcat启动参数,首先明确一点,windows下tomcat有2种常见启动方式,1是startup.bat,2是tomcat8.exe以服务方式启动。
用方法1启动则需要添加setenv.bat文件设置CATALINA_OPTS,内容为set CATALINA_OPTS=...
。
如果使用第二种方式启动则需要使用tomcat8w.exe在Java下的Java Options后添加启动参数,注意这种方式需要注意服务名称,如果服务名称为Tomcat8那么没有问题,如果为自定义名称则需要重命名tomcat8w.exe为${自定义名称}w.exe,例如我把服务名改为tomcat666那么我就需要重命名tomcat8w.exe为tomcat666w.exe
启动参数内容可以在idea帮助文档中查到。
-Dcom.sun.management.jmxremote=
-Djava.rmi.server.hostname=<host>
-Dcom.sun.management.jmxremote.port=<port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
host为远程机的ip,port为jmx port,自定义,注意不要被占用。
然后启动tomcat。
以上,远程机的准备就做完了。
本地机:
首先,因为我们使用的是共享文件夹方式来传输,本地机需要挂载共享文件夹为网络驱动器,win7下右键计算机选择映射网络驱动器,这里我将其映射到X盘,成功后计算机下会多出一个X盘。
接下是idea配置
首先新建一个tomcat-remote运行项
修改localhost为远程机的ip地址,JMX port设置为先前在tomcat配置好的端口,然后修改type为local or mounted folder,意思为本地或挂载文件夹,之后的host需要手动添加先前映射的X盘,path from root可以为空,如果共享的文件夹不是tomcat的appBase则需要填此项,注意mapped as为指定文件夹对于远程机的本地路径,比如远程机共享了D:\artifacts文件夹,而path from root为空,则这一栏就应该填D:\artifacts,如果path from root为webapps,则这一栏就应该为D:\artifacts\webapps,之后运行时会把编译好的项目放到这里。
之后再在Deployment中添加artifact,这里就不多赘述了。
接下来就应该可以编译运行了,如果artifact选择的war包则需要先用maven打好包再运行。注意远程机的tomcat必须为启动状态。
以上就是使用远程tomcat运行项目的配置过程,实际使用时时常会报错,此时清一下共享文件夹再运行一次多半就解决了,注意这个就算运行stop后tomcat也不会真的stop,所以可以用来远程部署。
以上只是远程运行的配置,如果需要远程debug还需做额外配置。在远程机tomcat运行参数中添加如下参数即可
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005