用systemctl使zookeeper开机启动,网上看了好多章,没一个好使,自己琢磨折腾了一个下午总算把它搞定。
直接上脚本:/etc/systemd/system/zookeeper.service
[Unit]
Description=zookeeper.service
After=network.target
[Service]
Type=forking
Environment=ZOO_LOG_DIR=/usr/local/zookeeper-3.4.11/
Environment=PATH=/usr/local/jdk1.8.0_152/bin:/usr/local/jdk1.8.0_152/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
ExecStart=/usr/local/zookeeper-3.4.11/bin/zkServer.sh start
ExecStop=/usr/local/zookeeper-3.4.11/bin/zkServer.sh stop
ExecReload=/usr/local/zookeeper-3.4.11/bin/zkServer.sh restart
PIDFile=/tmp/zookeeper/zookeeper_server.pid
User=www
[Install]
WantedBy=multi-user.target
重点在两行Environment。
- 第一行设置日志目录,如果没有设置,默认是当前目录,对www用户来说,可能没有权限。
- 第二行是配置环境变量,systemd用户实例不会继承类似.bashrc中定义的环境变量,所以是找不到jdk目录的,而zookeeper又必须有。
保存后,reload
systemctl daemon-reload
启用开机自启
systemctl enable zookeeper
启动服务
systemctl start zookeeper