记录一次spring-boot项目部署到linux服务器

记录一次spring-boot项目部署到linux服务器

月光魔力鸭

2018-12-12 14:11 阅读 446 喜欢 1 spring-boot linux部署

简单介绍下背景,项目使用的spring-boot框架,在平时开发中是通过jar包部署来开发的,但是在服务器上得使用war包来部署,这里简单记录下出现的问题,包括打包、环境安装(服务器没有需要的环境)等。

war包打包

这类的资料非常多,但是可能直接拿过来并不一定能使用,总是会出现这样那样的问题。 需要修改的地方有两个:pom.xml 主入口函数

pom.xml

jar->war

<build>
        <plugins>
            <!-- <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <finalName>***</finalName>
                    <mainClass>***</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>ture</fork>
                </configuration>
            </plugin>
            支持maven打包自定义名字 -->
            <!-- war包支持 --->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warName>ByyTeaching</warName>
                </configuration>
            </plugin>
        </plugins>
    </build>
主函数入口
//打war包,使用这个
public class ByyTeachingApplication extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(ByyTeachingApplication.class, args);
    }

     protected SpringApplicationBuilder configure(SpringApplicationBuilder
     builder) {
     return builder.sources(ByyTeachingApplication.class);
     }

}


//平时开发使用这个
//public class ByyTeachingApplication {
//
//	public static void main(String[] args) {
//		SpringApplication.run(ByyTeachingApplication.class, args);
//	}
//}

打包

我是直接通过maven命令来打包的,在项目目录下打开cmd命令窗口执行mvn package -f pom-war.xml 就好啦。 打包过程中出现了个问题,是由于在pom.xml中build下的plugin没有注释掉导致的。

环境安装

由于服务器一直都是使用的jdk7tomcat7 ,但是spring-boot需要jdk8 和 tomcat8,所以,环境需要重新搭建,但是又不能把原来的删掉,要同时保留。

思路很简单:跑一个tomcat8,然后指定jdk目录就可以了。

tomcat8下载 jdk8下载

下载完成后,将jdk 扔到服务器上解压,然后..就不用管了,记住路径,后面使用。

tomcat8 上传解压,然后需要修改几个文件,指定jdk版本,同时还需要修改端口号(注意不要冲突)。 修改三个文件,将以下命令放在文件开头即可。(catalina.sh startup.sh setclasspath.sh)

export JAVA_HOME=/usr/local/jdk1.8.0_60
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

端口修改,这里就不多说了。

启动

在启动后发现了一个报错,由于jar包缺少导致的,把其他项目相关的jar包复制到这个项目就好啦.一个jstl的jar包.

命令

顺便强化下部署过程中使用的几个命令:

unzip xxx.zip //解压
unzip -o xxx.zip // 解压并覆盖。
./shutup.sh //关tomcat
ps -ef|grep 端口 //查看进程中使用的端口
netstat -lnt | grep 9000 //查看端口冲突
tail -f ./catalina.out //跟踪日志

基本上就这几个啦。

转载请注明出处: https://chrunlee.cn/article/java-spring-boot-linux.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
记录下关于通过tomcat来配置https ,使java web项目可以直接通过https来访问,之前的时候都是走nginx来配置https,由于特殊原因443端口不能开启(具体是啥不清楚,运维不让开),只能如此配置下。
实际上,之前有对接过的... 但是忘记了,而且也没做详细记录,同时语言又换了.. 成java了,所有这里记录下,包括从微信的授权、token、以及到js-sdk 开发为止。
关于即时通讯,现在各路APP基本都有,虽然不能说是核心,但是如果没有又总会觉的少点啥。 如果对即时通讯要求不高,且用户量不大,只是想要从无到有的话,可以直接使用现有的服务即可,有不少免费的足够支持小量用户的要求。但是如果用户量稍微较大,且需要一些定制服务又不想受制于人,那么搭建自己的即时通讯服务器可能是你最终的选择。但是,从头开发肯定是不可能的。
之前没接触过tigase,最近开始准备用这个来做IM ,开始预研..不过中间比较坎坷,虽然有忙别的事情,但是前前后后还是花了好几天的时间,资源太少,官网又看不懂,git还下不下来... 啥机制也不懂.. 真惆怅。
项目为nginx+tomcat 部署的,由于需要https环境,本来直接配置nginx https就可以了,结果在jsp 中获取request.getScheme 怎么都是http .. 可把我这个假运维愁坏了。
nginx 监听的服务器的9000 端口,转的443 到tomcat 中,但是在java web jsp中获取的端口却还是443.
项目为长期稳定运行中,由于新增功能或修复BUG,修改代码后无法启动。根据添加的代码删减,最后确认出的问题。
这只能算是一个小实现吧 ,也不算什么难点,就是加强下记忆,后续查找方便点而已,当然也有可能给你提供个小灵感啥的,那就再好不过了。