1.将Zookeeper添加到开机自启服务
在/usr/lib/systemd/system/
文件夹下创建一个启动脚本zookeeper.service
vi /usr/lib/systemd/system/zookeeper.service
插入以下内容
[Unit] Description=zookeeper After=syslog.target network.target
[Service]
Type=forkingEnvironment='JAVA_HOME=/export/server/jdk1.8.0_144'
Environment=ZOO_LOG_DIR=/export/server/zookeeper/log
ExecStart=/export/server/zookeeper/bin/zkServer.sh start
ExecStop=/export/server/zookeeper/bin/zkServer.sh stop
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
将Path改为安装zookeeper
的Path
为什么要给ZOO_LOG_DIR赋值呢?
打开bin/zkEnv.sh,搜索ZOO_LOG_DIR,你会发现下面这段
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="."
ZOO_LOG_DIR如果未指定,则它的值为你启动zookeeper时的当前目录,而bin/zkServer.sh启动时又是先调用zkEnv.sh,然后创建一个${ZOO_LOG_DIR}/zookeeper.out
日志文件
或者你直接在zkEnv.sh
或zkServer.sh
指定ZOO_LOG_DIR的值也是可以的
#通知systemd重载此配置文件
systemctl daemon-reload
#启动服务
systemctl start zookeeper
#设置开机自启
systemctl enable zookeeper
2.将Tomcat添加到开机自启服务
在/usr/lib/systemd/system
目录下增加启动脚本tomcat.service
vi /usr/lib/systemd/system/tomcat.service
[Unit] Description=Tomcat After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/export/server/apache-tomcat-8.5.23/tomcat.pid
ExecStart=/export/server/apache-tomcat-8.5.23/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
将Path改为安装tomcat
的Path
在apache-tomcat-8.5.23/bin/目录下,增加setenv.sh
配置,
切换到apache-tomcat-8.5.23下的bin目录下,
vi setenv.sh
引入以下环境变量(需修改为你自己的tomcat和jdk安装路径)
export CATALINA_HOME=/export/server/apache-tomcat-8.5.23
export CATALINA_BASE=/export/server/apache-tomcat-8.5.23
export JAVA_HOME=/export/server/jdk1.8
#add tomcat pid
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
为什么要引入这些变量呢?
在查看了tomcat启动脚本以后,发现脚本内部其实是执行的catalina.sh
PRGDIR=`dirname "$PRG"` EXECUTABLE=catalina.sh
Check that target executable exists
if $os400; then
-x will Only work on the os400 if the files are:
1. owned by the user
2. owned by the PRIMARY group of the user
this will not work if the user belongs in secondary groups
eval
else
if [ ! -x "PRGDIR"/"EXECUTABLE" ]; then
echo "Cannot find PRGDIR/EXECUTABLE"
echo "The file is absent or does not have execute permission"
echo "This file is needed to run this program"
exit 1
fi
fi
exec "PRGDIR"/"EXECUTABLE" start "$@"
所以我们再次追踪到了catalina.sh
脚本
发现脚本使用到以上几个变量,如果找不到就会执行bin/setenv.sh
,所以我们写了一个setenv.sh
并且把catalina.sh所需的几个变量都添加了进去
#通知systemd重载此配置文件
systemctl daemon-reload
#启动服务
systemctl start tomcat
#设置开机自启
systemctl enable tomcat
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于