Unix/Linux 服务

systemd 服务

操作过程

1. 安装了JDK的centOS7虚拟机

注意下载linux版本JDK的时候不能直接通过wget这种直接链接下载,否则会解压不成功,应该打开原官网,点击同意许可后点击下载(这种方式下载很慢),比较好的方式是复制下载页的地址到迅雷,通过迅雷打开该下载页,同意许可后点击下载。

下载后解压、配置环境变量

tar -zxvf jdk1.8.0_211.jar.gz

环境变量配置:/etc/profile 文件最后添加如下

export JAVA_HOME=/var/java/jdk1..0_211
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

添加环境变量之后,执行source /etc/profile,让环境变量生效

2. 准备好要安装的spring boot应用程序
2.1 要想安装成功,尤其要注意pom文件的有关插件的配置。正确示例如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.itsherman.dcm.Application</mainClass>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

如果只单单声明了spring-boot-maven-plugin插件,忽略了后面的配置项,那么很可能你构建的程序包(jar)移植过去启动不成功。报找不到主菜单属性错误。

上面的问题主要是因为构建的可执行jar包中有一个META_INF文件夹,该文件夹下的MANIFEST.MF文件描述了改程序包的主要信息,其中缺少了Main-Class的一行。解决办法是我们可以手动加上,或者按照上面的配置,尤其不能缺少execution的配置项,然后重新执行mvn install。重新生成jar包以后通过winrar工具打开,检查MANIFEST.MF文件的信息。

一般完整的文件信息如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Sherman
Start-Class: com.itsherman.dcm.Application
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.1.5.RELEASE
Created-By: Apache Maven 3.6.0
Build-Jdk: 1.8.0_172
Main-Class: org.springframework.boot.loader.JarLauncher

没问题之后,可以尝试在本地使用java -jar myapp.jar 命令执行一下

3. 通过xftp等文件移植工具将jar包移植到【1】 步骤的虚拟机上
4. 在虚拟机上 /etc/systemd/system 下编写服务的配置文件,参考实例如下:
[Unit]
Description=myapp
After=syslog.target [Service]
User=hadoop
ExecStart=/var/java/jdk1..0_211/bin/java -jar /home/hadoop/myapp/dev-manager.jar
SuccessExitStatus= [Install]
WantedBy=multi-user.target
  • Description: 程序的描述信息
  • User: 系统用户
  • ExecStart: 程序启动的命令

编写好改配置文件之后,保存,退出

. 启动服务

刷新服务配置信息

systemctl daemon-reload

启动服务

systemctl start myapp.service

开机启动服务

systemctl enable myapp.service

查看服务状态信息

systemctl status myapp.service
6.测试

即打开浏览器,访问服务

最新文章

  1. AutoMapper随笔记
  2. Java 二叉树遍历右视图-LeetCode199
  3. 使用File类列出指定位置下的文件及目录信息
  4. Win10 Hyper-V 配置
  5. linuxMint下面的截图工具
  6. GitHub 上有哪些完整的 iOS-App 源码值得参考?
  7. 分模块创建maven项目(一)
  8. Xamarin如何生成Android项目的APK
  9. DOS命令行中的双引号
  10. PHP中header用法详解带范例(转)
  11. loadrunner http协议put模式脚本编写
  12. APUE(1)——UNIX基本概念
  13. c#基础语言编程-按值类型和引用类型传递参数
  14. BZOJ 2743: [HEOI2012]采花( 离线 + BIT )
  15. substance的使用示例(转)
  16. ng自定义一个过滤器
  17. 生成git私钥
  18. R语言读入数据库的中英名词互译测试并计分脚本(考试用)
  19. C#如何测量字符串的高度宽度和精确取得字符串的高度宽度
  20. java数据类型之间的转换

热门文章

  1. 【Python】解析Python中的异常操作
  2. java.lang.UnsupportedOperationException 异常分析
  3. mongo 分片机如何建立库和实例(数据表)
  4. linux环境下安装python 3
  5. 【Python】解决使用pyinstaller打包Tkinker程序报错问题
  6. Git 更新
  7. strace调试工具编译移植
  8. java字符串截取
  9. Java课堂笔记1
  10. Vue(七)整合vue-router&amp;Vuex&amp;Axios