今天用Python写了一个收集日志的系统,目的就是将每个服务器系统中的日志归总到本地。写了一天终于在本地服上测试完成了。可以将每个服务器id以及对应的过滤的日志都收集到本地,完美!
正要到Boss面前报告进度,并拿外网的用户名和密码来测试外网。Duang~ 访问禁止!What,不能用SSH的方式来访问外网服务器,这就尴尬了,那我能怎么操作呢?
思考一番,用请求的方式来操作吧。在每个服务器中部署一个进程,并访问这个进程去做外网服的数据归总。归总完毕之后将数据发送或者下载外网归总好的日志。好像也只有这一种方法了。因此就需要用到一个进程,SpringBoot的jar方式启动一个小小的进程的方式最合适不过了。
构建SpringBoot项目踩过的坑
第一个API无法访问
写了这个第一个API之后发现用localhost:8086/collectLog并不能访问
错误是@RequestMapping("collectLog")
我忘记吧斜杠也写上导致。
补充好斜杠之后,发现还是不能访问。这就奇怪了,查找资料发现我的代码的位置有问题。Springboot自动扫描的地址是和启动类相同或者是启动类的下面包的路径,因此需要将包和类文件都放入到下图红色框的位置
通过上面的一通操作之后就可以访问到了。
打包部署到Linux中出错
nohup java -jar logsys.jar 命令启动jar方式
报错如下
原因是jarfile文件不对。
第一反应是打包不对吧,检查
最重要的是第四步将MANIFEST.MF中的文件信息放入到resource文件夹中,这样就会将依赖的包都打入到jar包中了。
重新打包mvn clean install 并上传到linux中我用的是rz,sz的方式
启动:还是报错
我检查了一下我的pom表,发现并没有内置tomcat,然后加上,最后的pom结构如下
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-loader -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-loader</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--内置tomcat使用jar启动服务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
</dependencies>
<!--项目打包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
简单项目的结构如下
修改了之后,打包上传还是启动不来.
这就奇怪了,为什么啊?应该是没有地方出错了啊。最后我发现是我用rz的时候勾选了ASCII方式上传文件导致文件的格式不对
去掉后,正常上传文件!命令行nohub java -jar logsys.jar
启动并使用192.168.0.239:8086/collectLog
访问成功返回hello。
查看是否已经启动起来 ps -ef | grep java 查看已经有一个进程在运行中了。
总结:
记录一次SpringBoot以Jar方式的启动,其中遇到了几个坑,不急,遵循以下几步即可
- 资料,因为你遇到的别人也肯定会遇到过。
- 想想原理,什么会导致项目不能按照预定的设想来走呢?
- 最后就是请教他人