在 Intellij IDEA 中部署 Java 应用到 阿里云 ECS
1. 打包成war文件
(1)file —> project structure —> artifacts —> +
使用idea运行web项目时首先会配置一个exploded类型的Web Application,选择
Web Application: Exploded
。如果要生成war文件,选择
Web Application: Archive
生成如下结果,其中Output directory
就是生成结果的目录。
然后点击OK确定。
(2) 点击build —> build artifacts
点击build后,在工程目录(即artifact
中的Output directory
)中去找,如图:
2.配置服务器
购买一个阿里云ESC(或其他服务器)。
进行运行环境配置,如tomcat和JDK。
我在配置过程中出现的两个问题:
-
/usr/software/jdk-11/jre/bin/java: No such file or directory
, 高版本的jdk没有jre文件夹,环境变量不要配置JRE_HOME - 在启动tomcat的shutdowm.sh时出现:
java.net.ConnectException: Connection refused: connect
。两种可能,一种是端口被占用,可以ps aux | grep tomcat
,然后kill -9 PID
,另一种可能是tomcat的startup.sh启动十分慢,在还没启动就shutdown了,多等个几分钟就好了。
3.上传文件到服务器
上传到服务器的方法有很多,比如通过github中转、SCP等。
本次采用SCP方式传输。
- 从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)
- 上传本地文件到服务器
scp /path/filename username@servername:/path
- 从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)
- 上传目录到服务器
scp -r local_dir username@servername:remote_dir
将文件上传到服务器tomcat的webapps目录。然后启动tomcat的bin目录下的startup.sh启动服务器。再次回到webapps目录下,会发现出现tryServlet.war
的加压缩文件:
3.关闭防火墙及安全组策略
要想让别的计算机能够访问服务器的8080端口,需要关闭防火墙或者让8080端口被访问。
关于防火墙的学习:
- https://www.linuxprobe.com/chapter-08.html
-
https://www.cnblogs.com/zxg-blog/p/9835263.html
我先查询iptables发现没有iptables。
然后查询fifewall,发现未启动:
但是还是无法通过别的浏览器访问:120.55.193.249:8080
。
通过一系列查询,才知道阿里云ESC服务器的安全组策略没有允许8080端口被访问,添加8080端口即可。
然后在浏览器输入 120.55.193.249:8080/tryServlet发现可以访问。