杭州做兼职网站,百度短网址在线生成,惠州城乡和住房建设局网站,东道设计公司logo因为公司内部原因导致服务器经常关机开机#xff0c;每次重启就需要手动启动大量服务#xff0c;所以决定将所有服务都配置到开机启动里面 正常的Java项目一般都会依赖MySQL和NACOS等服务#xff0c;所以在配置开机启动的时候我们首先要考虑的是服务需不需要等待nacos等服务…因为公司内部原因导致服务器经常关机开机每次重启就需要手动启动大量服务所以决定将所有服务都配置到开机启动里面 正常的Java项目一般都会依赖MySQL和NACOS等服务所以在配置开机启动的时候我们首先要考虑的是服务需不需要等待nacos等服务启动后再启动否则Java服务也无法正常启动 这里不教怎么配置MySQL和NACOS开机启动服务直接教大家配置Java服务的脚本
首先我的Java服务jar包都放在服务器/usr/local/webapp/下了 我们先在这个目录下新建一个文件夹用来存放脚本
mkdir sh_folder然后我们在sh_folder里面给order服务创建一个脚本
touch start_order.sh脚本内容如下 pkill -f 是用来关闭之前的进程的如果只是为了开机启动这个可以不要但是我这里为了平时重启服务要用就留着了 大家也可以换成自己的启动命令
pkill -f java -jar -Dspring.profiles.activetest /usr/local/webapp/order-service-1.0-SNAPSHOT.jar
sleep 5
cd /usr/local/webapp/
nohup java -jar -Dspring.profiles.activetest /usr/local/webapp/order-service-1.0-SNAPSHOT.jar ./log/order-service.log 21 我们再给pay服务创建一个脚本
touch start_pay.sh脚本内容如下可以看到命令都一样就是换了一下jar包和日志文件
pkill -f java -jar -Dspring.profiles.activetest /usr/local/webapp/pay-service-1.0-SNAPSHOT.jar
sleep 5
cd /usr/local/webapp/
nohup java -jar -Dspring.profiles.activetest /usr/local/webapp/pay-service-1.0-SNAPSHOT.jar ./log/pay-service.log 21 这里就只写这两个服务要是有其它服务大家按照上面的流程加就可以了 下面为了一次启动多个服务我们还需要加个脚本
touch start_all.sh脚本内容如下 主要要注意的就是里面的MySQL和NACOS服务ip和端口大家换成自己的 还有一个很重要的问题就是如果一台服务器上服务很多建议启动一个等一段时间因为多个服务同时启动会瞬间耗尽服务器内存导致服务启动失败等问题所以我在里面加了sleep5这个根据平时启动项目时间大家适当调整就可以了 多个服务的大家继续往里面加即可
#!/bin/bash# 远程 MySQL 服务器的相关信息
REMOTE_MYSQL_HOST192.168.2.102
REMOTE_MYSQL_PORT3306# 等待远程 MySQL 服务就绪的函数
wait_for_mysql() {until nc -zv -w 2 $REMOTE_MYSQL_HOST $REMOTE_MYSQL_PORT; doecho Waiting for MySQL to start...sleep 5doneecho MySQL is ready!
}# 调用等待函数
wait_for_mysql# 远程 NACOS 服务器的相关信息
REMOTE_NACOS_HOST192.168.2.104
REMOTE_NACOS_PORT9000# 等待远程 NACOS 服务就绪的函数
wait_for_nacos() {until nc -zv -w 2 $REMOTE_NACOS_HOST $REMOTE_NACOS_PORT; doecho Waiting for NACOS to start...sleep 5doneecho NACOS is ready!
}# 调用等待函数
wait_for_nacos# 启动第一个脚本
/usr/local/webapp/sh_folder/start_order.sh# 在第一个脚本启动后等待一段时间例如等待5秒
sleep 5# 启动第二个脚本
/usr/local/webapp/sh_folder/start_pay.sh这三个脚本创建好后还有一件事不要忘了就是给它们加权限不然后面自启的时候会提示文件找不到或者权限不足什么的
chmod 754 /usr/local/webapp/sh_folder/start_order.shchmod 754 /usr/local/webapp/sh_folder/start_pay.shchmod 754 /usr/local/webapp/sh_folder/start_all.sh上面这些脚本只是用来启动项目的大家平时重启服务什么的也可以用 接下来才是配置开机启动 我们进到下面这个目录
cd /lib/systemd/system创建一个开机启动服务注意文件名一定要是.service结尾不然后面会报错
touch java_all.service把下面内容放进去复制的时候看下是不是完整的[Unit]这个复制的时候经常有问题 注意TimeoutSec500是给这个脚本设置超时时间单位是秒有时候脚本执行时间很长还没执行完就会中断的 然后ExecStartPre/bin/sleep 120是等待120秒因为有时候服务器启动顺序不一致有些服务还没启动这里主要针对集群服务 这两个大家看着加大部分是不需要的
[Unit]Descriptionjava_all_service
Afternetwork.target[Service]
TimeoutSec500
Typeforking
ExecStartPre/bin/sleep 120
ExecStart/usr/local/webapp/sh_folder/start_all.sh
PrivateTmptrue[Install]
WantedBymulti-user.target
保存后一样的要给这个文件加权限等直接执行下面命令
chmod 754 /lib/systemd/system/java_all.servicesystemctl daemon-reloadsystemctl enable java_all.service# 最后看下状态是否正常
systemctl status java_all.service差点忘了脚本里面用到nc命令大家可以先试下有没有没有的话用下面命令装一下
# 测试是否可以连接到MySQL服务
nc -zv -w 2 192.168.2.102 3306# 如果提示命令不存在就安装一下
yum install nc -y这样就完成了