天天看点

Centos7配置服务开机启动

Background

这里记录方便自己以后查阅。配置开机启动的方法有三种:1、配置

/etc/rc.d/rc.local

;2、配置

/etc/rc.d/init.d

;3、配置

/usr/lib/systemd/system

,添加自定义系统服务。这里仅记录第三种方法,以mysql、redis、emqx、rabbitmq 服务为例。

配置文件语法

[Unit]:服务的说明
Description:描述服务
After:描述服务类别

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户
           

1、 mysql

  • 添加配置文件
vim /usr/lib/systemd/system/mysql.service
           
  • 配置文件内容如下
[Unit]
Description=mysql
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/opt/mysql-5.7.25/support-files/mysql.server start

[Install]
WantedBy=multi-user.target
           
  • 设置开机自启动
systemctl enable mysql.service 
           

2、 redis

  • 添加配置文件
vim /usr/lib/systemd/system/redis.service
           
  • 配置文件内容如下
[Unit]
Description=redis
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/redis/bin/redis-operator.sh start
ExecStop=/usr/redis/bin/redis-operator.sh stop

[Install]
WantedBy=multi-user.target
           
  • 设置开机自启动
systemctl enable redis.service 
           
  • redis-operator.sh,这个脚本是自己写的
# 服务基本信息
operate=$1
ps_1='./redis-server'
pid_1=`ps -ef | egrep "$ps_1" | egrep -v grep | awk '{print $2}'`
dir_home=/usr/redis/
dir_log=/usr/redis/redis-server.log

# 判断输入参数
if [[ -z $operate || $operate = "help" ]]; then
    echo '#####'
    echo "please input your operate [run|stop|status|log|shell]"
    echo '#####'
fi

# 启动服务
if [[ $operate = "run" || $operate = "start" ]]; then
    rm -rf $dir_log
    nohup $dir_home/bin/redis-server $dir_home/redis.conf >> $dir_log 2>&1 &

# 停止服务
elif [[ $operate = "stop" ]]; then
    kill -9 $pid_1

# 查看服务运行状态
elif [[ $operate = "status" ]]; then
    if [[ $pid_1 ]]; then
        # 黄底蓝字
        echo -e "\033[43;34m RUNNING \033[0m"
    else
        # 蓝底黑字
        echo -e "\033[44;30m STOPPED \033[0m"
    fi

# 查看服务运行日志
elif [[ $operate = "log" ]]; then
    if [[ -e $dir_log ]]; then
        tail -f $dir_log
    else
        echo '#####'
        echo "No logs have been generated so far"
        echo '#####'
    fi

# 进入服务命令行界面
elif [[ $operate = "shell" ]]; then
    if [[ $pid_1 ]]; then
        $dir_home/bin/redis-cli -h localhost -p 6377 -a cloudansys[redis]
    else
        echo '#####'
        echo "The redis service has not been started yet"
        echo '#####'
    fi
fi
           

3、 emqx

  • 添加配置文件
vim /usr/lib/systemd/system/emqx.service
           
  • 配置文件内容如下
[Unit]
Description=emqx
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
Environment=HOME=/var/lib/emqx
ExecStart=/usr/bin/emqx start

[Install]
WantedBy=multi-user.target
           
  • 设置开机自启动
systemctl enable emqx.service 
           

4、 rabbitmq

  • 添加配置文件
vim /usr/lib/systemd/system/rabbitmq.service
           
  • 配置文件内容如下
[Unit]
Description=rabbitmq
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server -detached
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop

[Install]
WantedBy=multi-user.target
           
  • 修改启动脚本,在rabbitmq-server脚本中在

    NOTIFY_SOCKET = \

    这一行下面加入如下内容
# vim /usr/local/rabbitmq/sbin/rabbitmq-server
ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export HOME=/usr/local/rabbitmq/
           
  • 设置开机自启动
systemctl enable rabbitmq.service 
           

5、OpenTSDB

  • 添加配置文件
vim /usr/lib/systemd/system/opentsdb.service
           
  • 配置文件内容如下
[Unit]
Description=OpenTSDB Service
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/share/opentsdb/etc/init.d/opentsdb start
ExecStop=/usr/share/opentsdb/etc/init.d/opentsdb stop
Restart=on-abort

[Install]
WantedBy=multi-user.target
           
  • 设置开机自启动
systemctl enable opentsdb.service 
           

6、查看所有已启动的服务

systemctl list-units --type=service
           

继续阅读