做网站路径,重庆九龙坡区哪里有做网站的,开源展示型网站,遵义市城乡建设局网站2019独角兽企业重金招聘Python工程师标准 spring Boot 其默认是集成web容器的#xff0c;启动方式由像普通Java程序一样#xff0c;main函数入口启动。其内置Tomcat容器或Jetty容器#xff0c;具体由配置来决定#xff08;默认Tomcat#xff09;。当然你也可… 2019独角兽企业重金招聘Python工程师标准 spring Boot 其默认是集成web容器的启动方式由像普通Java程序一样main函数入口启动。其内置Tomcat容器或Jetty容器具体由配置来决定默认Tomcat。当然你也可以将项目打包成war包放到独立的web容器中Tomcat、weblogic等等当然在此之前你要对程序入口做简单调整。 项目构建我们使用Maven或Gradle这将使项目依赖、jar包管理、以及打包部署变的非常方便。 一、内嵌 Server 配置 Spring Boot将容器内置后它通过配置文件的方式类修改相关server配置。 先看一下下面的图为关于server的配置列项 其中常用的配置只有少数几个已经用紫色标记起来。红框圈起来的部分看名称分类就可以明白其作用。 对server的几个常用的配置做个简单说明 # 项目contextPath一般在正式发布版本中我们不配置
server.context-path/myspringboot
# 错误页指定发生错误时跳转的URL。请查看BasicErrorController源码便知
server.error.path/error
# 服务端口
server.port9090
# session最大超时时间(分钟)默认为30
server.session-timeout60
# 该服务绑定IP地址启动服务器时如本机不是该IP地址则抛出异常启动失败只有特殊需求的情况下才配置
# server.address192.168.16.11 Tomcat Tomcat为Spring Boot的默认容器下面是几个常用配置 # tomcat最大线程数默认为200
server.tomcat.max-threads800
# tomcat的URI编码
server.tomcat.uri-encodingUTF-8
# 存放Tomcat的日志、Dump等文件的临时文件夹默认为系统的tmp文件夹如C:\Users\Shanhy\AppData\Local\Temp
server.tomcat.basedirH:/springboot-tomcat-tmp
# 打开Tomcat的Access日志并可以设置日志格式的方法
#server.tomcat.access-log-enabledtrue
#server.tomcat.access-log-pattern
# accesslog目录默认在basedir/logs
#server.tomcat.accesslog.directory
# 日志文件目录
logging.pathH:/springboot-tomcat-tmp
# 日志文件名称默认为spring.log
logging.filemyapp.log Jetty 如果你要选择Jetty也非常简单就是把pom中的tomcat依赖排除并加入Jetty容器的依赖如下 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jetty/artifactId/dependency
dependencies 打包 打包方法 CMD进入项目目录使用 mvn clean package 命令打包以我的项目工程为例 E:\spring-boot-samplemvn clean package 可以追加参数 -Dmaven.test.skiptrue 跳过测试。 打包后的文件存放于项目下的target目录中如spring-boot-sample-0.0.1-SNAPSHOT.jar 如果pom配置的是war包则为spring-boot-sample-0.0.1-SNAPSHOT.war 二、部署到JavaEE容器 修改启动类继承 SpringBootServletInitializer 并重写 configure 方法public class SpringBootSampleApplication extends SpringBootServletInitializer{private static final Logger logger LoggerFactory.getLogger(SpringBootSampleApplication.class);Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(this.getClass());}} 修改pom文件中jar 为 war!-- packagingjar/packaging --
packagingwar/packaging 修改pom排除tomcat插件 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactId/exclusion/exclusions/dependency 打包部署到容器 使用命令 mvn clean package 打包后同一般J2EE项目一样部署到web容器。 三、使用Profile区分环境 spring boot 可以在 “配置文件”、“Java代码类”、“日志配置” 中来配置profile区分不同环境执行不同的结果 1、配置文件 使用配置文件application.yml 和 application.properties 有所区别 以application.properties 为例通过文件名来区分环境 application-{profile}.properties application.properties app.nameMyApp
server.port8080
spring.profiles.activedev application-dev.properties server.port8081 application-stg.properties server.port8082 在启动程序的时候通过添加 –spring.profiles.active{profile} 来指定具体使用的配置 例如我们执行 java -jar demo.jar –spring.profiles.activedev 那么上面3个文件中的内容将被如何应用 Spring Boot 会先加载默认的配置文件然后使用具体指定的profile中的配置去覆盖默认配置。 app.name 只存在于默认配置文件 application.properties 中因为指定环境中不存在同样的配置所以该值不会被覆盖 server.port 默认为8080但是我们指定了环境后将会被覆盖。如果指定stg环境server.port 则为 8082 spring.profiles.active 默认指定dev环境如果我们在运行时指定 –spring.profiles.activestg 那么将应用stg环境最终 server.port 的值为8082 2、Java类中Profile注解 下面2个不同的类实现了同一个接口Profile注解指定了具体环境 // 接口定义
public interface SendMessage {// 发送短信方法定义public void send();}// Dev 环境实现类
Component
Profile(dev)
public class DevSendMessage implements SendMessage {Overridepublic void send() {System.out.println(Dev Send());}}// Stg环境实现类
Component
Profile(stg)
public class StgSendMessage implements SendMessage {Overridepublic void send() {System.out.println(Stg Send());}}// 启动类
SpringBootApplication
public class ProfiledemoApplication {Value(${app.name})private String name;Autowiredprivate SendMessage sendMessage;PostConstructpublic void init(){sendMessage.send();// 会根据profile指定的环境实例化对应的类}} 3、logback-spring.xml也支持有节点来支持区分 ?xml version1.0 encodingUTF-8?
configurationinclude resourceorg/springframework/boot/logging/logback/base.xml /logger nameorg.springframework.web levelINFO/springProfile namedefaultlogger nameorg.springboot.sample levelTRACE //springProfilespringProfile namedevlogger nameorg.springboot.sample levelDEBUG //springProfilespringProfile namestaginglogger nameorg.springboot.sample levelINFO //springProfile/configuration 再说一遍文件名不要用logback.xml 请使用logback-spring.xml 四、指定外部的配置文件 有些系统关于一些数据库或其他第三方账户等信息由于安全问题其配置并不会提前配置在项目中暴露给开发人员。 对于这种情况我们在运行程序的时候可以通过参数指定一个外部配置文件。 以 demo.jar 为例方法如下 java -jar demo.jar --spring.config.location/opt/config/application.properties 其中文件名随便定义无固定要求。 五、创建一个Linux 应用的sh脚本 下面几个脚本仅供参考请根据自己需要做调整 start.sh #!/bin/shrm -f tpidnohup java -jar myapp.jar --spring.config.locationapplication.yml /dev/null 21 echo $! tpidecho Start Success!stop.sh #!/bin/sh
APP_NAMEmyapptpidps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk {print $2}
if [ ${tpid} ]; thenecho Stop Process...kill -15 $tpid
fi
sleep 5
tpidps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk {print $2}
if [ ${tpid} ]; thenecho Kill Process!kill -9 $tpid
elseecho Stop Success!
fi check.sh #!/bin/sh
APP_NAMEmyapptpidps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk {print $2}
if [ ${tpid} ]; thenecho App is running.
elseecho App is NOT running.
fi kill.sh #!/bin/sh
APP_NAMEmyapptpidps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk {print $2}
if [ ${tpid} ]; thenecho Kill Process!kill -9 $tpid
fi 六、使用Linux服务的方式启动、停止、重启 1、首先在 pom.xml 中配置插件 buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexecutabletrue/executable/configuration/plugin/plugins/build 特别注意一下 executabletrue/executable 2、然后正常使用 mvn clean package -Dmaven.test.skiptrue 将工程打成jar包 3、上传jar包到服务器假设部署路径为 /var/apps/myapp.jar 使用命令做一个软连接到 /etc/init.d 目录命令 ln -s /var/apps/myapp.jar /etc/init.d/myapp 11其中 /etc/init.d/myapp 最后的 myapp 可以是别的名字这个就是服务名我们后面使用 service [服务名] start 来启动下面有说明。 4、给jar文件授予可执行权限命令 chmod x myapp.jar 5、接下来就可以使用我们熟悉的 service myapp start|stop|restart|status 来对应用进行启停了。 执行命令后将得到形如 Started|Stopped [PID] 的结果反馈。 默认PID文件路径/var/run/appname/appname.pid 默认服务日志文件路径/var/log/appname.log可以通过下面.conf 的方式修改LOG_FOLDER 6、使用自定义的.conf文件来变更默认配置方法如下 在jar包相同路径下创建一个.conf文件名称应该与.jar的名称相同如myapp.conf如果我们打包的文jar文件为 myapp-1.0.0.jar 那么这里的conf文件也应该是 myapp-1.0.0.conf其内容配置可以如下 JAVA_HOME/usr/local/jdk
JAVA_OPTS-Xmx1024M
LOG_FOLDER/data/logs/myapp 注LOG_FOLDER 对应的文件夹目录要必须存在如果目录不存在服务并不会自从创建目录。 结束 转载于:https://my.oschina.net/qiangzigege/blog/904253