美文网首页
CentOS7配置新增系统服务或修改rc.local使应用或服务

CentOS7配置新增系统服务或修改rc.local使应用或服务

作者: zxws1009 | 来源:发表于2023-11-24 21:13 被阅读0次

    服务开机启动配置

    本文将配置myapp(开发的java应用服务)和文件服务fastdfs服务举例。

    一、创建启动脚本

    首先需要为自己的应用和服务创建一个批处理文件,手动执行改批处理文件可启动服务。
    比如创建了一个startup.sh。
    批处理文件中需要注意的是路径要采用绝对路径,如:

    #!/bin/bash
    AppPath=/home/myapp
    JAR_NAME=myapp-0.0.1.jar
    LOG_PATH=$AppPath/appLog/app.log
    
    pid=`ps -ef|grep $JAR_NAME |grep -v grep|grep -v kill|awk '{print $2}'`
    
    echo "....................................................................."
    if [ ${pid} ]; then
        echo "Try to kill progress pid:${pid}..."
        kill -9 $pid
        echo "pid:${pid} stoped!"
    else
        echo "${JAR_NAME} is NOT running..."
    fi
    echo "....................................................................."
    
    sleep 2
    
    echo "....................................................................."
    echo "${JAR_NAME} begin start..."
    nohup java -jar -Xms16g -Xmx16g -Dloader.path=$AppPath/lib -Dlog4j.configurationFile=$AppPath/config/log4j/log4j2.xml $AppPath/$JAR_NAME >> $LOG_PATH 2>&1 &
    echo "${JAR_NAME} started!"
    echo "....................................................................."
    
    echo "....................................................................."
    echo "........................Here is the app.log.........................."
    echo "....................................................................."
    tail -f $LOG_PATH
    

    再如:

    #!/bin/bash
    nohup /home/fastdfs/fileserver server  &>/home/fastdfs/log/app.log
    

    都需要用绝对路径。

    二、添加到自启动,2种方式

    方式一,配置到/etc/rc.local上

    这种方式倒是服务器远程直连一直打印输出,无法回到主界面。

    1、脚本配置到/etc/rc.local上

    vi /etc/rc.local
    
    #export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64
    #export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
    #export PATH=$PATH:$JAVA_HOME/bin
    #app应用
    cd /home/app
    sudo sh startup.sh & # 以root执行,不然可能会出现权限错误,&表示后台执行
    
    #fastdfs服务
    cd /home/fastdfs
    sudo sh startup.sh & # 以root执行,不然可能会出现权限错误,&表示后台执行
    

    注意

    1、若无法启动,尝试将export的注释解开试下。

    2、默认系统的/etc/rc.d/rc.local是没有执行权限的,需要给予开机权限,否则无法开机自启。

    #授权
    chmod +755  /etc/rc.d/rc.local
    

    方式二,系统服务

    1、创建一个服务文件,用于启动脚本。服务文件应该被保存到 /etc/systemd/system 目录中。以 root 用户身份运行以下命令:

    touch /etc/systemd/system/myapp.service
    vim /etc/systemd/system/myapp.service
    
    touch /etc/systemd/system/fastdfs.service
    vim /etc/systemd/system/fastdfs.service
    #或者如下创建
    nano /etc/systemd/system/myapp.service   #ctrl+x 保存,也可用vim
    

    2、在编辑器中添加以下内容到 myapp.service 文件中,fastdfs服务同理:

    [Unit]
    Description=myapp开机启动脚本
    After=network.target
    
    [Service]
    ExecStart=/home/myapp/startup.sh
    Restart=always
    User=root
    
    [Install]
    WantedBy=multi-user.target
    

    确保修改 Description 字段为你自己的脚本描述,并将 ExecStart 字段指向你的脚本的实际路径。

    3、保存并关闭文件。然后运行以下命令使 systemd 重新加载服务文件,并启动服务设置开机自启,fastdfs同理。

    chmod +755  /home/myapp/startup.sh
    
    systemctl daemon-reload
    
    systemctl start myapp
    systemctl enable myapp
    

    现在,你的脚本将在系统启动时自动运行。

    请注意,你需要以 root 用户身份运行以上命令。此外,确保你的脚本不会在系统启动时出现任何错误,否则会导致系统启动失败。

    相关文章

      网友评论

          本文标题:CentOS7配置新增系统服务或修改rc.local使应用或服务

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