构建后,建站问题
问题1 构建后应该做什么
在成功构建后,其实就生成了一个war包或者 jar包
但是
始终访问不了 8080 和8081 ,即使添加了安全组和防火墙设置!。
这时候思路是错的,虽然前辈和我说,端口打开了,如果访问不应该是拒绝,而是404。
理论上好像是这样,但是如果端口没有进程,在ecs上就是拒绝访问。
telnet 网址 8080(端口)
解决方向
- 确定打包方式
- 编写脚本
问题2 Spring Boot 打成war包的方法
war包打包
至此war 包部署完成?
但是我有一个问题,我发现好像本地项目测试的时候如果加了这一串代码十分不方便啊,因为也不能用内置tomcat了。
就是这样,在添加tomcat配置去配置。这样好麻烦啊。
但是这样我服务器上已经全部配置完了。
github连服务器,生成war。自动部署。
其中** url * 是 ip/war包名称/+requestmaping
怎么去war包 名称呢? 建议百度,我去jar包了,
因为jar包内嵌tomcat,配置url很方便…
好的,其实war包的url,ROOT是会隐藏的。所以你可以删除原来的ROOT,更名就行。
问题3 jar包怎么弄
但是! 生活继续。看jar怎么部署,毕竟很多公司主流都是这个。
但是我有另一个问题。因为我是个人服务器+个人项目。项目集成难道也用分块jar去实现?(目前还不懂)
问题3.1 误杀
netstat -lnp|grep 80
kill -9 端口
原来版本v 1.0
mvn clean
mvn package
BUILD_ID=DONTKILLME
port=80
#根据端口号查询对应的pid
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
java -jar /root/.jenkins/workspace/webdemo/target/demo-0.0.1-SNAPSHOT.jar
用脚本kill 80 端口时候会误杀8081 8080 (这边我把80端口给留下来给项目了,吧8081给了jenkins,好麻烦啊,不如直接改个什么3562之类的不相关的就好了。)
BUILD_ID=DONTKILLME
port=80
根据端口号查询对应的pid
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
于是我找到了lsof 指令 lsof -i:80
效果如下
效果不错,比上面好多了,上面那个是aliyundun ,只要筛选就可以了
lsof -i:80|grep java
问题又来了
如果我用 -t 参数直接输出端口很好用啊,但是可能会把aliyundun 包含一起杀死
当然也有解决方法,用awk去提取 lsof -i:80|grep java 这个就行了。
但是我偷懒了….
lsof -t -i:80|sed -n '2,2p'
效果还行,但是我不保证 aliyundun pid每一次都比java小,我不懂pid机制,下次有问题再说吧
v2.0
mvn clean
mvn package
port=80
#根据端口号查询对应的pid
#pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
pid=$(lsof -t -i:80|sed -n '2,2p');
#杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
java -jar /root/.jenkins/workspace/webdemo/target/demo-0.0.1-SNAPSHOT.jar
由于项目比较简单,轻喷
做到这里就是自动构建。每次上传github需要手动构建。
还有可以添加的是 构建后的脚本 发邮箱。
有兴趣的大家加油!!!
我累了,哪天有这么刚需需要github自动构建我再加吧……