使用基于Spring Boot(1.5.4.RELEASE)的微服务,我将jar部署到AWS EC实例(Linux环境)。现在,我还部署了一个外部log4j.properties文件,所以我必须像这样启动微服务:
java -jar myapp.jar -Dlogging.config=/path/to/log4j.properties
如何将此Spring Boot微服务配置为Linux服务,我可以使用这些标志启动和停止它:
sudo service myapp start | stop | status | restart
非常感谢。
答案 0 :(得分:5)
使用指向springboot应用程序的符号链接,您可以将其作为服务进行控制......
sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp
将application.properties
放入myapp文件夹,您可以覆盖应用内捆绑的那个。这样您就不需要使用命令行开关。只需将日志配置的路径指定为其内部属性键logging.config
的值。
但请注意,此解决方案并非真正的最佳做法。一旦您在生产中运行了大量服务,您可能更愿意采用spring cloud config的方式来进行外部化配置,并且您可能还希望将您的日志聚合在一个允许概述的集中服务上将您所有服务的日志放在一个地方。
答案 1 :(得分:1)
完全可执行的jar可以像任何其他可执行二进制文件一样执行,也可以使用
注册init.d
或systemd
确保使用下面的插件(共享链接中的gradle版本)构建应用程序:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
并且如Jörg所示,在init.d:
中创建一个符号链接sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp
这是简化版:)
更多问题,您需要自定义init,这可以通过conf
文件完成 - 所有这些都在文档中指定。
如下: myapp.conf除
JARFILE
和APP_NAME
外,设置均可 使用.conf文件配置。该文件预计在jar旁边 文件并具有相同的名称,但后缀为.conf而不是.jar。 例如,名为/var/myapp/myapp.jar的jar将使用 配置文件名为/var/myapp/myapp.conf。
JAVA_OPTS=-Xmx1024M
LOG_FOLDER=/custom/log/folder