一、环境

带jdk、mysql 等。

我的环境

[root@VM_0_3_centos rc.d]# cat /proc/version

Linux version 3.10.0-862.14.4.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Wed Sep 26 15:12:11 UTC 2018

[root@VM_0_3_centos rc.d]# java -version

java version "1.8.0_181"

Java(TM) SE Runtime Environment (build 1.8.0_181-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

[root@VM_0_3_centos rc.d]# mysql -V

mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper

二、项目启动脚本编写

我的实验项目随便放在了/root/springbootdemo 文件夹中,编写 start.sh

RESOURCE_NAME=demo-0.0.1-SNAPSHOT.jar #product name

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [ ${tpid} ]; then

echo 'Stop Process...'

kill -15 $tpid

fi

sleep 5

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [ ${tpid} ]; then

echo 'Kill Process!'

kill -9 $tpid

else

echo 'Stop Success!'

fi

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [ ${tpid} ]; then

echo 'App is running.'

else

echo 'App is NOT running.'

fi

rm -f tpid

nohup java -jar ./$RESOURCE_NAME &

echo $! > tpid

echo Start Success!

注意:此文件必须和jar文件同级!!

编写好之后,启动、重启等,直接使用 sh start.sh 启动即可!

三、编写开机自启服务

查看开机启动项   systemctl list-unit-files

1、编写另外一个启动文件

vi /root/springbootdemo/autostart.sh

#!/bin/sh

JAVA_HOME=/root/tools/javatool/jdk1.8.0_181

CLASSPATH=$JAVA_HOME/lib/

PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME PATH

nohup java -jar /root/springbootdemo/demo-0.0.1-SNAPSHOT.jar &

回到 /root/springbootdemo文件夹内,ll (ls -l 缩写) 查看列表信息,此时的  autostart.sh 为浅黑色。

执行     ./a   (tab键按住)不能自动显示,说明只有读写权限,没有执行权限。

注意:#!/bin/sh是指此脚本使用/bin/sh来解释执行,参考博客 <>

2、开启执行权限

给  autostart.sh  文件最大的执行权限:

chmod 777 autostart.sh

关于这个 777 是什么?同事给我做了详细解答

在linux终端先输入ll,可以看到如:

-rwx-r--r-- (一共10个参数) 表示文件所属组和用户的对应权限。

第一个跟参数属于管理员,跟chmod无关,先不管.

2-4参数:属于user

5-7参数:属于group

8-10参数:属于others

接下来就简单了:r==>可读 w==>可写 x==>可执行

r=4 w=2 x=1

所以755代表 rwxr-xr-x

777 代表 rwxr-rwx-rwx 所有用户都可读可写可执行。

例如:

-rwxrwxrwx 1 root root 197 Aug 7 20:16 autostart.sh

drwxr-xr-x 2 root root 4096 Aug 7 01:02 LOG_HOME_IS_UNDEFINED

第一个字符 有时是-有时是d -表示是文件 d表示文件夹

后面的以3个长度进行拆分 rwx rwx rwx

rwx 4+2+1=7 表示最大权限7 包含 读r 写w 执行x

-rwxrwxrwx 1 root root 197 Aug 7 20:16 autostart.sh

中的-rwxrwxrwx 表示autostart.sh 是一个文件

第一组权限为“读写执行”,第二组权限为“读写执行”,第三组权限为“读写执行”

所以,使用此命令后,将 autostart.sh 权限变更为  读、写、执行,此时颜色为深黑色,且 ./autostart.sh 可以执行!

3、添加开机启动项

[root@VM_0_3_centos springbootdemo]# cd /etc/rc.d

[root@VM_0_3_centos rc.d]# ll

total 36

drwxr-xr-x. 2 root root 4096 Oct 18 2018 init.d

drwxr-xr-x. 2 root root 4096 Aug 4 2017 rc0.d

drwxr-xr-x. 2 root root 4096 Aug 4 2017 rc1.d

drwxr-xr-x. 2 root root 4096 Aug 4 2017 rc2.d

drwxr-xr-x. 2 root root 4096 Aug 4 2017 rc3.d

drwxr-xr-x. 2 root root 4096 Aug 4 2017 rc4.d

drwxr-xr-x. 2 root root 4096 Aug 4 2017 rc5.d

drwxr-xr-x. 2 root root 4096 Aug 4 2017 rc6.d

-rwxr-xr-x 1 root root 236 Aug 7 20:31 rc.local

在 rc.local 中添加执行脚本,在原始文件末尾追加

/root/springbootdemo/autostart.sh

后 保存并退出,完整为

[root@VM_0_3_centos rc.d]# cat rc.local

#!/bin/sh

/usr/local/qcloud/rps/set_rps.sh >/tmp/setRps.log 2>&1

/usr/local/qcloud/irq/net_smp_affinity.sh >/tmp/net_affinity.log 2>&1

/usr/local/qcloud/gpu/nv_gpu_conf.sh >/tmp/nv_gpu_conf.log 2>&1

/root/springbootdemo/autostart.sh

其中的  >/tmp/nv_gpu_conf.log 2>&1  表示不保存日志文件

4、重启服务器

reboot

5、编写守护进程脚本

[root@VM_0_3_centos springbootdemo]# vi hopdemo.sh

#! /bin/sh

pro_name='demo-0.0.1-SNAPSHOT.jar'

while true

do

NUM=`ps aux|grep ${pro_name} |grep -v greep|wc -l`

if [ "${NUM}" -lt "2" ];then

echo "重启项目"

nohup java -jar /root/springbootdemo/demo-0.0.1-SNAPSHOT.jar &

fi

#暂停时间按照具体的项目启动时间定义,时间太短,会导致单位时间内多个相同项目启动

sleep 10

done

exit 0

其中为什么判断条件中写入 -lt(小于) 2的判断

[root@VM_0_3_centos springbootdemo]# ps -ef|grep demo-0.0.1-SNAPSHOT.jar -wc

2

上述命令执行后,返回为查询到指定进程的数目信息。当然也可以让他返回指定有效进程的数目

[root@VM_0_3_centos springbootdemo]# ps aux | grep demo-0.0.1-SNAPSHOT.jar | grep -v grep |wc -l

1

6、向开机自启脚本中,追加守护进程脚本信息

[root@VM_0_3_centos springbootdemo]# vi autostart.sh

#!/bin/sh

JAVA_HOME=/root/tools/javatool/jdk1.8.0_181

CLASSPATH=$JAVA_HOME/lib/

PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME PATH

nohup java -jar /root/springbootdemo/demo-0.0.1-SNAPSHOT.jar &

echo "暂停30秒后 执行守护进程的启动"

sleep 30

# > /root/springbootdemo/hopdemo.txt 表示保存日志信息至指定文件,方便查看 最后一个&表示后台执行

nohup sh /root/springbootdemo/hopdemo.sh > /root/springbootdemo/hopdemo.txt &

#或者直接使用下列命令

#nohup sh /root/springbootdemo/hopdemo.sh &

这里注意几个小小的细节问题:摘自于<>

后台运行脚本

a.执行脚本test.sh:./test.sh

b.中断脚本test.sh:ctrl+c

c.在a的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z

执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid)

开放shell脚本的读、写、可执行权限

[root@VM_0_3_centos springbootdemo]# chmod 777 hopdemo.sh

7、如果中途我进行了项目更新,需要修改服务器上的项目,有守护进程在,如何能杀掉原来的项目部署新的项目呢?

查询守护进程的信息,杀掉守护进程

[root@VM_0_3_centos springbootdemo]# ps -ef|grep hopdemo.sh

root 7204 3338 0 11:27 pts/0 00:00:00 sh hopdemo.sh

root 12614 3338 0 12:01 pts/0 00:00:00 grep --color=auto hopdemo.sh

[root@VM_0_3_centos springbootdemo]# kill 3338

查询项目的进程,杀掉进程

[root@VM_0_3_centos springbootdemo]# ps -ef|grep java

root 19360 1 1 16:06 pts/1 00:00:13 java -jar /root/springbootdemo/demo-0.0.1-SNAPSHOT.jar

root 21515 10834 0 16:23 pts/0 00:00:00 grep --color=auto java

[root@VM_0_3_centos springbootdemo]# kill -9 19360

上传新的项目文件,重启守护进程shell脚本

[root@VM_0_3_centos springbootdemo]# sh hopdemo.sh

四、防火墙问题

我自己玩的时候,请求总会失败,最后分析才知道防火墙没关。大佬的防火墙操作   链接

防火墙部分操作

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

linux关闭防火墙后台 启动文件,centos——部署springboot项目(含启动脚本编写、开机自启脚本编写、守护进程开机二合一脚本编写)...相关推荐

  1. CentOS部署SpringBoot项目(二)

    v阅读目录 vLinux部署springboot vIntelliJ IDEA打包 vspringboot部署CentOS v相关常用命令 v博客总结 Linux部署SpringBoot 1. < ...

  2. docker 挂载目录_完美解决:Docker部署SpringBoot项目后图片无法访问和上传,3招搞定!...

    以前使用FTP在Linux中使用java -jar xxx.jar部署SpringBoot项目时,由于在项目中指定了主机文件存放路径映射,可以直接访问服务器的文件. 但是最近入坑Docker,将Spr ...

  3. docker部署mysql项目_docker部署springboot项目(web + mysql)

    前言 docker目前是非常热门的项目,本文暂不讨论docker集群环境中的部署项目问题. 环境准备 1. docker环境(本文使用centos7下的docker环境) 2. javaWeb项目(s ...

  4. linux防火墙桌面关闭端口,Linux关闭防火墙,开放端口

    Centos/redhat系统: 开启防火墙 #systemctl start firewalld.service 停止firewall #systemctl stop firewalld.servi ...

  5. linux防火墙关闭开放的端口,Linux关闭防火墙,开放端口

    Centos/redhat系统: 开启防火墙 #systemctl start firewalld.service 停止firewall #systemctl stop firewalld.servi ...

  6. linux关闭防火墙stop,linux如何关闭防火墙

    我的linux不想开启防火墙了,想要关闭,该怎么办呢?下面由学习啦小编给你做出详细的linux关闭防火墙方法介绍!希望对你有帮助! linux关闭防火墙方法一: 重启后生效 开启: chkconfig ...

  7. Linux关闭防火墙、SELinux

    使用root权限: Linux关闭防火墙: 1. chkconfig –list|grep iptables 2. chkconfig iptables off 永久关闭防火墙 3. chkconfi ...

  8. 学linux需要关闭防火墙,一起学习linux 关闭防火墙命令

    p>Linux还是比较常用的,于是我研究了一下Linux关闭防火墙命令,在这里拿出来和大家分享一下,希望你能学会Linux关闭防火墙命令 . 1) 永久性生效,重启后不会复原 开启: chkco ...

  9. Linux关闭防火墙命令总结

    Linux关闭防火墙命令: 问题:老是关闭防火墙太麻烦,所以选择彻底关闭防火墙,发现每次都记不住命令! 下面是Linux/CentOs7关闭防火墙的命令! 1.关闭防火墙 临时关闭 start 是开启 ...

  10. linux 网卡天启与关闭,手把手教你Linux关闭防火墙命令

    满意答案 qq1984383 2017.02.23 采纳率:47%    等级:8 已帮助:764人 手把手教你linux关闭防火墙命令linux还是比较常用的,于是我研究了一下linux关闭防火墙命 ...

最新文章

  1. Gearman的使用
  2. Python2和Python3中raise Exception
  3. 【职场】如何才能成功的创业,创业成功的本质是什么
  4. 那些功能逆天,却鲜为人知的pandas骚操作
  5. linux下安装nvm进行node的版本的快速切换
  6. 松下壁挂式新风系统推荐_松下壁挂式新风怎么样 松下壁挂式新风系统优势介绍【详解】...
  7. LeetCode 2197. 替换数组中的非互质数(栈)
  8. python getattr用法_python自省函数getattr的用法
  9. android 图片方向,Android图片处理:识别图像方向并显示实例教程
  10. 使用Sklearn模型做分类并绘制机器学习模型的ROC曲线
  11. LINUX下载编译libsrtp-1.5.0
  12. unity3d赛车游戏视频教程
  13. Qt--探讨.exe程序加密
  14. 【JZOJ 4623】搬运干草捆
  15. Android Ui卡断的原因分析及常见的解决方式
  16. CF1155F Delivery Oligopoly
  17. #{}ogl表达式_使用OGL制作程式化的鼠标轨迹
  18. Django二级域名路由配置方案django-hosts
  19. 企业防火墙软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 尚硅谷java练习题to循环

热门文章

  1. 如何设置点击listview的任何位置都可以选中checkbook
  2. 44.Linux君正X1000-添加st7789v显示
  3. mysql多表查询去重复数据_SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法...
  4. HDMI接口 HDCP
  5. mysql c盘 越来越大_c盘分区太大怎么调整
  6. 熬夜爆肝!C++实现圣域之战!(修过码)
  7. 深度解读“人类首次实现室温超导”:思路并无突破,中国并不落后-1
  8. 一文带你了解机器翻译
  9. 2021-03-03-Beamforming algorithms - beamformers
  10. 【7】PR音频及结合AU去除噪音【8】PR字幕运用