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

2023-11-24  本文已影响0人  zxws1009

服务开机启动配置

本文将配置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 用户身份运行以上命令。此外,确保你的脚本不会在系统启动时出现任何错误,否则会导致系统启动失败。

上一篇下一篇

猜你喜欢

热点阅读