1、打包前准备

1.1、 打包前确认工程中指定的端口在服务器在未被占用。
application.properties文件

server.port=8090

 并确保改端口已经添加到你的阿里云安全组中,具体参考前面文章中


1.2、 确保数据源连接参数正确,开发时若使用的是本地数据库,那在打包前将数据库连接参数修改为目标数据库。

#datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://数据库所在主机ip:3306/数据库名?useSSL=true&characterEncoding=utf-8
spring.datasource.username = ***
spring.datasource.password = ***

1.3、确保工程使用的是jdk不能是jre,如下图所示。

阿里springboot命名规范 springboot项目部署到阿里云_java

1.4、在pom.xml中添加如下依赖。

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

2、打包

2.1、右键单击pom.xml文件,执行“Run As”–>“Maven clean”,清理之前的打包数据,出现如下图表示成功:

阿里springboot命名规范 springboot项目部署到阿里云_阿里springboot命名规范_02

2.2 右键单击pom.xml文件,执行“Run As”–>“Maven build…”

阿里springboot命名规范 springboot项目部署到阿里云_阿里springboot命名规范_03

2.3 在窗口中的Goals中输入package,点击run 

阿里springboot命名规范 springboot项目部署到阿里云_阿里springboot命名规范_04

如下图所示打包成功

 

阿里springboot命名规范 springboot项目部署到阿里云_jar_05

2.4 jar包就在工程的target目录下,如果看不到就刷新下工程。

 

阿里springboot命名规范 springboot项目部署到阿里云_spring_06

 

 

3.部署到阿里云

1、首先在服务器home目录下创建jar目录,在jar中在创建一个工程目录(这都是方便管理,不能随便找个地方一扔,后面项目多了就乱七八糟)

2、将jar包上传到创建的工程目录

3、启动
可以直接使用java -jar命令,但是这个命令有问题,如果是使用远程工具连接方式操作服务器,那当远程连接窗口关闭项目也会随之停止,并且项目启动后会占据窗口,直接在服务器上操作也是一样,所以需要解决。我们可以通过 nohup 和 & 让项目在后台运行。
 

# --server.port=8090指定端口
nohup java -jar xxx.jar --server.port=8090 &
  • nohup:不挂起的意思( no hang up),退出、关闭窗口都不影响;
  • &:后台运行。

同时相应的日志会默认输出到nohup.out中,可以查看该文件来查看相应的log。
既然有启动那也有停止,上面启动后会有对应的进程ID,通过kill -9 ID 即可停止。

示例:

ps -ef|grep java              ——看有关java的进程    ps -ef是显示所有进程信息   后面那个grep是匹配的意思

kill -9 123123 213231         ——后面两个数字是两个进程的进程号pid,多少个进程要kill好像都可以写在后面

nohup java -jar xxxxx.jar &   ——后台启动java工程的命令    
后面加个&的命令是后台运行的意思;
nohup是no hang up,不挂起,就用户退出还可以运行的意思(好像是这样)。   

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup java -jar xxxx.jar > myout.out 2>&1 &
这个2>1&的意思就是将标准错误重定向到标准输出。

tail -f nohup.out            ——可以实时监控刚刚那个后台java命令的输出。 额进去了好像就要一直看着它更新,不能干其他的事,可以用ctrl+z强制退出,反正只是退出这个监控。

tailf nohup.out              —— 等同于tail -f -n 10

tail -f      等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

tail -F     等同于--follow=name  --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

tailf        等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电

3.1首先创建start.sh  (为了方便管理,可以定通过shell脚本来操作项目。)

 

#!/bin/bash
nohup java -jar xxx.jar --server.port=8090 &

 3.2 创建stop.sh

#!/bin/bash
PID=$(ps -ef | grep xxx.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi

3.3 创建run.sh

#!/bin/bash
echo stop application
source stop.sh
echo start application
source start.sh

注意 xxx.jar替换成自己的jar包

3.4 设置shell文件的执行权限

chmod u+x *.sh

然后就可以通过 ./run.sh启动项目,./stop.sh停止项目