如何在ubuntu后台系统中部署jar包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ubuntu后台系统中部署jar包相关的知识,希望对你有一定的参考价值。
1 # 使用域名或者IP,启动之后就可以这个域名或IP访问网站了port: 80contextPath:spring:profiles:active: productionthymeleaf:cache: truejade4j:caching: truedataSource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1/spring_blogusername: rootpassword:hibernate:dialect: org.hibernate.dialect.MySQLDialecthbm2ddl.auto: updateshow_sql: falseredis:host: localhostport: 63794. 如何在Ubuntu中后台运行Spring Boot应用?推荐使用 nohup这个命令。cd /root/spring-blog/currentnohup java -jar SpringBlog-0.1.jar --spring.config.location=application-production.yml \> ../logs/production.log 2> ../logs/production.err &在Ubuntu还可以 /etc/init.d目录下新建一个脚本,把SpringBlog作为service来运行,这样不用每次都打这么繁琐的命令了。新建一个 /etc/init.d/spring_blog文件,内容如下:#!/bin/shSERVICE_NAME=spring_blogHOME=/root/spring-blogPATH_TO_JAR=$HOME/current/SpringBlog-0.1.jarPID_PATH_NAME=/tmp/spring_blog.pidLOG=$HOME/logs/production.logERROR_LOG=$HOME/logs/production.errCONFIG=$HOME/application-production.ymlcase $1 instart)echo "Starting $SERVICE_NAME ..."if [ ! -f $PID_PATH_NAME ]; thencd $HOME/currentnohup java -jar $PATH_TO_JAR --spring.config.location=application-production.yml > $LOG 2> $ERROR_LOG &echo $! > $PID_PATH_NAMEecho "$SERVICE_NAME started ..."elseecho "$SERVICE_NAME is already running ..."fi;;stop)if [ -f $PID_PATH_NAME ]; thenPID=$(cat $PID_PATH_NAME);echo "$SERVICE_NAME stoping ..."kill $PID;echo "$SERVICE_NAME stopped ..."rm $PID_PATH_NAMEelseecho "$SERVICE_NAME is not running ..."fi;;restart)if [ -f $PID_PATH_NAME ]; thenPID=$(cat $PID_PATH_NAME);echo "$SERVICE_NAME stopping ...";kill $PID;echo "$SERVICE_NAME stopped ...";rm $PID_PATH_NAMEecho "$SERVICE_NAME starting ..."cd $HOME/currentnohup java -jar $PATH_TO_JAR --spring.config.location=application-production.yml > $LOG 2> $ERROR_LOG &echo $! > $PID_PATH_NAMEecho "$SERVICE_NAME started ..."elseecho "$SERVICE_NAME is not running ..."fi;;esac现在就可以使用service的方式来运行网站了。sudo service spring_blog startsudo service spring_blog stopsudo service spring_blog restart5. 在本地自动化部署网站到远程服务器在本地我用了一个shell脚本和一个python脚本来配合自动化部署。deploy.sh使用 gradle的命令发布jar包,使用 scp命令吧jar包上传到服务器上;deploy.py使用 SSH远程登录服务器,并在服务器上执行部署命令。# deploy.sh#!/bin/bashSERVER="your_server_ip"JAR="build/libs/SpringBlog-0.1.jar"echo "Building $JAR..."./gradlew buildecho "Upload $JAR to server $SERVER..."scp $JAR root@$SERVER:/root/spring-blog/python deploy.pydeploy.py主要使用了一个 paramiko库,用于 SSH远程登录服务器,并执行命令。这个脚本会把服务器上 /root/spring-blog/current/SpringBlog-0.1.jar备份到 /root/spring-blog/releases中,并把新发布的jar包放到 /root/spring-blog/current中,然后重启 spring_blog服务。#!/usr/bin/pythonimport paramikoimport threadingimport timeip = 'your_server_ip'user = 'root'password = ''jar = 'SpringBlog-0.1.jar'home='/root/spring-blog'current=home+"/current"releases=home+"/releases"def execute_cmds(ip, user, passwd, cmd):try:ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(ip,22,user,passwd,timeout=5)for m in cmd:print mstdin, stdout, stderr = ssh.exec_command(m)# stdin.write("Y")out = stdout.readlines()for o in out:print o,print '%s\tOK\n'%(ip)ssh.close()except :print '%s\tError\n'%(ip)if __name__=='__main__':print 'Start deploying %s to server %s'%(jar, ip)now = time.strftime("%Y%m%d%H%M%S")cmd = ['echo Stop spring_blog service... && service spring_blog stop','echo Flush all redis cache data... && redis-cli -r 1 flushall','echo Stop redis server... && service redis_6379 stop','echo Use new jar... ' + \' && mv ' + current + '/' + jar + ' ' + releases + '/' + now + '_' + jar ,'mv ' + home + '/' + jar + ' ' + current + '/' + jar,'echo Stop redis... && service redis_6379 start','echo Start spring_blog service... && service spring_blog start ' + \' && echo All done.']a=threading.Thread(target=execute_cmds, args=(ip,user,password,cmd))a.start()配置完以后,在本地写完代码就可以运行 ./deploy.sh一键部署到远程服务器了。 参考技术A 第一你可以去sun的官方网站下载一个jar,然后按照他的步骤解压安装成功之后,根据他的步骤配置环境变量,然后配置好了之后你的jar命令就可以用了.Centos7 部署jar包开机自启
参考技术A 在部署zhihudemo时,没有用Jenkins这种自动化部署工具,在linux centos中部署jar包项目时遇到一个坑,通过xshell远程连接服务器,在系统中使用“java -jar”命令启动jar包时,输出日志会占据当前终端页面,如果关闭终端窗口的话,整个java程序就将停止,为了解决这个问题,可以将jar包设置为后台服务,并进一步设置为系统服务和开机自启在/etc/init.d/目录下创建zhihudemoService.sh脚本如下:
将zhihudemo-0.0.1-SNAPSHOT.jar和zhihudemoService.sh加上执行权限:
添加到chkconfig作为系统服务,并设置开机启动:
执行完成后重启,查看启动日志,可以看到该jar包程序已经作为守护进程在系统后台运行
以上是关于如何在ubuntu后台系统中部署jar包的主要内容,如果未能解决你的问题,请参考以下文章