美文网首页
国产加密服务器 将java编译的jar文件rpm打包2,sysy

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

作者: 杜金华 | 来源:发表于2022-12-19 18:57 被阅读0次

    继续上一篇

    做天做完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、就是要细心

    相关文章

      网友评论

          本文标题:国产加密服务器 将java编译的jar文件rpm打包2,sysy

          本文链接:https://www.haomeiwen.com/subject/gxzyqdtx.html