IDEA-17 自动部署JavaWeb项目至云服务器

# 前言

应用场景


这个学期选了JavaEE这门课程,能够成功在本地运行开发好的JavaWeb项目之后,就想尝试将本地项目部署到自己的远程云服务器的Tomcat上。

  • 传统的做法就是:在本地运行编译项目,再将编译后的文件打包成war包,然后通过工具(如FileZilla)上传至服务器的Tomcat上,但总觉得这样很麻烦(特别是要线上调试时)。
  • 现在更简便的部署方式则是:利用IDEA,在本地运行编译项目之后,自动将编译后的项目文件上传至云服务器上的Tomcat。而我们只需要设置服务器与IDEA的一些配置即可,省去了手动打包上传的步骤。

环境与工具


下面是我的开发环境信息与使用的工具

  • 腾讯云服务器 CentOS 7.2 64位
  • 本地 Windows 10
  • 服务器必须已安装JDK(java-1.8.0-openjdk),可以参考我之前的文章CentOS7 yum 安装JDK8
  • 服务器必须已安装Tomcat(Tomcat9.0.7),可以参考我之前的文章CentOS7 安装Tomcat9
  • /usr/local/webDevelopmentTools/tomcat/apache-tomcat-9.0.7/,这是我的Tomcat安装路径,下面配置涉及的路径请替换成你的实际安装路径
  • Xshell:用于本地远程连接、操作管理云服务器的一个终端工具
  • IDEA 17.2旗舰版(Ultimate),社区版功能不全,最好安装旗舰版


# 服务器端Tomcat的配置

Tomcat的配置信息


  • 进入Tomcat的安装目录下的bin目录:cd /usr/local/webDevelopmentTools/tomcat/apache-tomcat-9.0.7/bin/
  • 编辑catalina.sh文件:vim catalina.sh
  • 在catalina.sh文件中完成以下配置
export CATALINA_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=10999  ## 替换成你的服务器可用的端口
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=119.29.251.126" ## 替换成你的服务器IP

export JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=10999  ## 替换成你的服务器可用的端口
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

端口问题:在配置端口之前一定要先检测是否被占用,很多无法成功自动部署的最大原因就是这个。

netstat -anp | grep 10999   ## 若是没有任何输出信息则说明该端口可用

更改Tomcat启动方式


配置前
我的Tomcat启动方式:systemctl start tomcat9.service,本质执行的是Tomcat安装目录/bin/startup.sh脚本。

配置后
需要更改为通过Tomcat安装目录/bin/catalina.sh脚本启动

注意:使用新启动方式之前一定要用配置前的关闭方式(systemctl stop)关掉Tomcat。

cd /usr/local/webDevelopmentTools/tomcat/apache-tomcat-9.0.7/bin/
catalina.sh run > /dev/null 2>&1 &

其中“ > /dev/null 2>&1 &”是Linux中的命令:把标准输出和出错处理都放到回收站,这样就免得一大堆输出占领你的屏幕。

检测Tomcat是否成功启动


  • 使用浏览器访问you ip:8080,能看到Tomcat的默认页面则说明成功
  • 使用命令jps,出现如下界面则说明成功
    Tomcat启动成功

# 本地IDEA的配置

本地IDEA的设置主要分为两部分,DeploymentRun Configuration的设置。可以理解为

  • Run Configuration设置运行项目的云服务器的Tomcat信息,例如Tomcat版本、项目存放地址、jmx端口等

  • Deployment的设置则是用来连接、上传本地编译后的项目到你远程云服务器的Tomcat,例如连接服务器的用户名与密码信息、项目上传地址等

IDEA创建JavaWeb项目


IDEA-17 自动部署JavaWeb项目至云服务器_第1张图片


设置IDEA的Deployment


  • IDEA上Deployment的设置入口:导航栏Tools-->Deployment-->Configuration
    IDEA-17 自动部署JavaWeb项目至云服务器_第2张图片

  • 新建一个Deployment
    IDEA-17 自动部署JavaWeb项目至云服务器_第3张图片

  • 相关信息信息设置
    Port:服务器的连接端口为22,请确认你的服务器是否开放了该端口
    服务器连接验证方式:有三种,如果没有了解过秘钥的同学最好选择密码登录。
    Root Path的设置:在服务器连接测试成功之后,将Tomcat的webapps目录作为根目录,webapps目录是存放可访问项目(即网站)的目录,在之后我们会将编译后的项目上传到这里
    IDEA-17 自动部署JavaWeb项目至云服务器_第4张图片


IDEA的run Configuration配置


  • Run Configuration的设置入口
    IDEA-17 自动部署JavaWeb项目至云服务器_第5张图片
    选择远程Tomcat
    IDEA-17 自动部署JavaWeb项目至云服务器_第6张图片

  • Run Configuration的相关配置
    Name:即Run Configuration配置的名称
    Application server:服务器上运行项目的Tomcat版本,注意由于这里只能选择本地的Tomcat版本,为此服务器的Tomcat版本必须与本地Tomcat版本一致,这样才能保证配置的Tomcat版本与服务器真实运行的Tomcat版本一致
    Host:选择我们上一步配置的Deployment
    Path from root:这个是项目编译后上传的目录设置,填写根目录符号“/”,它其实映射的目录是Tomcat的webapps目录,因为在配置Deployment中我们设置过了
    Mapped as:这个配置也是填写Tomcat的webapps目录,这个配置我也不是很明白,网上一些教程说的又很矛盾,英文好的同学看IDEA官方文档吧
    IDEA-17 自动部署JavaWeb项目至云服务器_第7张图片

  • 项目编译文件打包、浏览器访问、jmx端口的设置
    Artifacts:项目的打包部署设置,详细参考这里理解 IntelliJ IDEA 的项目配置和Web部署
    IDEA-17 自动部署JavaWeb项目至云服务器_第8张图片
    Application context:看到有些资料说是应用上下文,其实可以理解它用于绑定访问上一步设置Artifact。Artifact即项目编译后的Java类、web资源等整合,本地运行项目后它会被自动上传部署到我们的远程Tomcat上面,这样通过ip:8080/Application context/就能访问到我们指定项目,也就是我们的JavaWeb项目
    JMX port:需要跟我们之前服务器端设置的jmx端口保持一致
    IDEA-17 自动部署JavaWeb项目至云服务器_第9张图片
    IDEA-17 自动部署JavaWeb项目至云服务器_第10张图片


#本地运行项目、IDEA自动部署


IDEA-17 自动部署JavaWeb项目至云服务器_第11张图片

IDEA-17 自动部署JavaWeb项目至云服务器_第12张图片

# 参考链接


在这过程中参考了许多文章,但我觉得还是看IDEA官网最好,无奈我英语差…

  • IDEA官网配置教程
  • 理解 IntelliJ IDEA 的项目配置和Web部署
  • idea配置application context
  • IntelliJ IDEA 远程部署tomcat应用
  • intellij idea部署ssm/web项目到远程tomcat遇到的1099端口问题

# 总结

实际上,每个人的情况都是不同的,碰到的问题也是不同,这就需要你自己独立去解决问题,当然,要懂得利用好Google。

你可能感兴趣的:(IDEA的使用)