猿问
下载APP

如何部署Spring Boot应用?

如何部署Spring Boot应用


青春有我
浏览 74回答 3
3回答

MMTTMM

Spring Boot 是 Spring 产品中一个新的子项目,致力于简便快捷地搭建基于 Spring 的独立可运行的应用。大多数的 Spring Boot 应用只需要非常少的 Spring 配置。 你能够使用 Spring Boot 创建 Java 应用并通过 java -jar 来运行或者创建传统的通...

繁星coding

在Ubuntu中安装Java8以下是一个简单的安装方法。$ sudo add-apt-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get install oracle-java8-installer$ java -versionjava version "1.8.0_60"Java(TM) SE Runtime Environment (build 1.8.0_60-b27)Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)2. 本地使用Gradle发布Spring Boot应用我这里使用Jetty9作为内置的服务器。// ...bootRun {systemProperties = System.properties}configurations {compile.exclude module: "spring-boot-starter-tomcat"}dependencies {// spring bootcompile "org.springframework.boot:spring-boot-starter-web:1.3.0.M5"compile "org.springframework.boot:spring-boot-starter-jetty"// ...}//...在本地运行默认使用src/main/resources/application.yml作为配置文件,而在production环境中我们系统它支持提供外部的配置文件application-production.yml。./gradlew bootRun # 开发环境下默认使用项目里的application.yml# 在本地测试使用外部配置文件./gradlew bootRun -Dspring.config.location=/path/to/application-production.yml # 发布./gradlew build # 运行java -jar build/libs/SpringBlog-0.1.jar  # 默认使用jar包里面的application.yml配置文件# 使用外部配置文件java -jar build/libs/SpringBlog-0.1.jar --spring.config.location=/path/to/application-production.yml3. 在Ubuntu服务器上部署Spring Boot应用# 上传SpringBlog-0.1.jar到服务器scp build/libs/SpringBlog-0.1.jar root@your_server_ip:/root/spring-blog/current# 在服务器上配置生产环境的配置文件scp application-production.yml root@your_server_ip:/root/spring-blog/current然后SSH登录服务器,修改配置文件application-production.yml,试运行应用。ssh root@your_server_ipcd spring-blog/currentjava -jar SpringBlog-0.1.jar --spring.config.location=application-production.yml # application-production.ymlserver:address: raysmond.com # 使用域名或者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一键部署到远程服务器了。

慕用2447696

SpringBoot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于SpringMVC的Web应用和REST服务开发。Spring4倡导微服务的架构,针对这一理念,近来在微博上也有一些有价值的讨论,如这里和这里。微服务架构倡导将功能拆分到离散的服务中,独立地进行部署,SpringBoot能够很方便地将应用打包成独立可运行的JAR包,因此在开发模式上很契合这一理念。目前,SpringBoot依然是0.5.0的里程碑版本,因此相关的文档尚不完善,本文将会以一个简单的样例来介绍基于这个项目的开发过程。要SpringBoot进行功能开发,需要使用Gradle或者Maven作为构建工具。在本例中,我们会使用Eclipse和Maven插件进行开发。要使用SpringBoot,首先创建一个Maven工程,并修改Maven主要的配置文件pom.xml,如下所示:org.springframework.bootspring-boot-starter-parent0.5.0.M7org.springframework.bootspring-boot-starter-weborg.thymeleafthymeleaf-spring3com.levin.Applicationorg.springframework.bootspring-boot-maven-plugin
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答