国产加密服务器 将java编译的jar文件rpm打包2,sysytemd管理

继续上一篇

做天做完rpm还是没有解决掉在国产服务器开机启动的问题,今日继续

1、需要增加sysytem  的 项目.serivice 文件

2、修改打包路径下的/root/rpmbuild/SPECS/***.spec  打包配置文件

3、重新打包构建,安装

4、设置开机启动 systemctl enable  项目.serivice

一、创建runyydy.serivice systemd 管理文件

1、创建文件

vim /root/rpmbuild/SOURCES/runyydy.serivice

[Unit]

Description=yiyuduoyi

After=network-online.target

[Service]

Type=simple

WorkingDirectory=/data/yiyuduoyi_sh

ExecStart=/usr/java/jdk1.8.0_261-amd64/bin/java -Xms2048m -Xmx2048m -XX:PermSize=1024M -XX:MaxPermSize=1024M  -jar /data/***/run.jar --server.port=8080 > /data/***/temp.txt &

Restart=on-abort

ExecStop=/data/yiyuduoyi_sh/***stop.sh

[Install]

WantedBy=multi-user.target

保存 :wq!

2、创建  ***stop.sh  用于stop  需要根据个人来配置

vim /root/rpmbuild/SOURCES/***stop.sh

#!/bin/sh

pid=sudo netstat -anp|grep 8080|awk '{print $7}'|awk -F "/" '{print $1}'

echo $pid

if [ -z $pid ];then

echo "***-null 无启动端口8080"

else

echo "***-kill 端口8080"

kill -9 $pid

fi

保存 :wq!

二、修改 /root/rpmbuild/SPECS/***.spec  打包配置文件

#项目名称

Name:runyydy

#项目版本号

Version:1.0

#项目版本号-release号

Release:1%{?dist}

#项目描述

Summary:yiyuduoyi jar 打包 rpm

#项目组名

Group:yiyuduoyi

#License:默认GPL

License:GPL

#来规避掉二进制文件带来的依赖L

AutoReqProv: no

#源文件,需要打包到rpm的几个文件可以列几个,目前三个文件

Source0:***.jar

Source1:***.service

Source2:***stop.sh

#rpm软件包所依赖的软件包名称,可以使用>=或者<=表示大于或者小于某一特定版本。

Requires:      shadow-utils,bash

#rpm软件包构建过程中所依赖的软件包名称,可以使用>=或者<=表示大于或者小于某一特定版本。

BuildRequires:systemd

%{?systemd_requires}

#介绍说明

%description

****服务程序***

#安装操作,建立了两个虚拟目录app_dir,service_dir  %{buildroot}宏定义可以通过 rpm --eval "%{buildroot}" 查看路径

%install

app_dir=%{buildroot}/data/yiyuduoyi_sh

service_dir=%{buildroot}%{_unitdir}

rm -rf %{buildroot}

mkdir -p %{buildroot}

mkdir -p $app_dir

mkdir -p $service_dir

# 目录建立后拷贝需要打包的文件到对应目录 service文件拷贝到系统的/usr/lib/systemd/system 下

cp %{SOURCE0} $app_dir/runyydy.jar

cp %{SOURCE1} $service_dir

cp %{SOURCE2} $app_dir/runyydystop.sh

# 文件属性权限设置  *** 是自己的项目名称

%files

# define default file attributes

%defattr(-,root,root,755)

#表示将dir目录路径下的内容打进rpm软件包里。

%dir %attr(755, root, root) /data/y****h

#控制文件权限

%attr(755, root, root) /data/y****h/***.jar

%attr(755, root, root) /data/y****h/***stop.sh

%attr(775, root, root) /usr/lib/systemd/system/%{name}.service

# rpm软件包安装之后执行的脚本  检测service文件

%post

# ensure Spring Starter service is enabled and running

%systemd_post %{name}.service

%{_bindir}/systemctl enable %{name}.service

%{_bindir}/systemctl start %{name}.service

# 卸载前触发

%preun

%systemd_preun %{name}.service

# 卸载后执行,删除文件目录

%postun 

case "$1" in

0) # This is a package remove  杀死进程,再删除文件

pid=`sudo netstat -anp|grep 8080|awk '{print $7}'|awk -F "/" '{print $1}'`

echo $pid

if [ -z $pid ];then

echo "***-null 无启动端口8080"

else

echo "***-kill 端口8080"

kill -9 $pid

fi

# remove app  folders

rm -rf /data/**

;;

1) # This is a package upgrade

# do nothing

;;

esac

# 如果升级需要重启

%systemd_postun_with_restart %{name}.service

保存 :wq!

三、重新打包构建,安装

1、查看打包的源目录文件

[root@localhost rpmbuild]# ll SOURCES/

总用量 113900

-rw-r--r-- 1 root root 116623778 12月 20 16:38 ***.jar

-rw-r--r-- 1 root root      424 12月 20 17:36 ***.service

-rw-r--r-- 1 root root      208 12月 20 16:38 ***stop.sh

2、重新构建

cd /root/rpmbuild

dos2unix SPECS/***.spec    //对spec 改变文件中\r  为\n

rpmbuild -ba SPECS/***.spec


3、安装

查看生成的rpm包

cd /root/rpmbuild/

查看rpm包内目录:

rpm -qpl RPMS/x86_64/****-1.0-1.el7.centos.x86_64.rpm


rpm -ivh RPMS/x86_64/****-1.0-1.el7.centos.x86_64.rpm

四、设置开机启动 systemctl enable  项目.serivice

1、启动service

systemctl start ***.service  //查看程序端口是否成功

查看状态

systemctl status ***.service


输入命令:netstat -tlnp  查看配置的程序端口是否正常  OK

systemctl stop ***.service

输入命令:netstat -tlnp  查看配置的程序端口是否杀死  OK

提醒:在这里一定要检测 service文件的是否有写错的地方,之前因为一个字母一直不成功折腾很久哇 

2、加入开机启动

输入:

systemctl enable ***.service

重启服务器:

reboot

等待……

输入命令:netstat -tlnp  查看配置的程序端口是否正常  OK

完成!

拷贝文件到国产加密服务器,进行安装,systemctl start ***.service 启动

查看,OK   systemctl enable ***.service  设置开机启动,重启  查看端口程序正常,OK。

(这里又有一个问题,就是在本地写的***.jar文件名不同,无法正常启动,修改service 加密服务器不允许修改,只能到本地修改好后重新打包rpm 再次安装,才OK ,麻烦。大家也要注意啊)


注意事项:

1、rpm本身就是把文件打包到rpm,rpm 安装就是根据spec文件来进行,拷贝文件到相应位置,然后根据spec文件进行命令执行等操作,所以spec文件很重要

2、本人之前使用的是一个sh文件进行jar文件启动,但是写道service中 ExecStart=    /data/***.sh  启动一直报错,这里改为现有的配置直接启动jar命令才可以

3、service设置enable开机启动时,一直报错Failed to execute operation: Invalid argument。发现service文件中

[Install]

WantedBy=multi-user.targe

少了一个字母t  总是无法设置成功,改后,就好了

[Install]

WantedBy=multi-user.target

4、就是要细心

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容