• 构建应用启动脚本的正确思路


    linux 环境中,一般都使用 shell 脚本来做应用的启动控制。

    在写脚本的时候,首先,先要确定在执行脚本之前,是不是需要做些什么准备工作。

    第一步,假定是用 windows 系统作为开发机,那么如果是直接把 shell 脚本复制到 linux 机器上,那么就要首先使用 dos2unix 命令把 win 风格的 shell 文件转为 linux 风格的了。
    dos2unix /path/to/*.sh

    第二步,如果要记录日志,那么要给存放日志的文件夹递归地添加读写权限
    chmod -R 664 /path/logs

    第三步,要确定脚本是可执行文件,否则要添加上可执行权限
    chmod +x /path/filename

    到了这里,执行脚本的前置工作就已经完成了。虽然还没有开始写脚本。。。那就开始写脚本吧

    第零步,在文件的最上面,表明文件需要用 bash 执行
    #!/bin/bash

    第一步,确定当前用户是否有相应应用的正确环境变量配置,如果没有,可以先在文件头部添加上
    export NODE_ENV='/usr/local/bin'
    export PATH=$NODE_ENV:$PATH
    这样来将应用的位置信息临时添加到环境变量中,便于后面直接使用 node 而不是使用完整路径启动路径
    也可以首先添加到 /etc/profile 中,然后使用
    source /etc/profile
    确保环境变量的修改生效。

    第二步,声明应用所在的文件夹,声明应用的入口文件
    APP_HOME=/path/to/app_home
    APP_MAIN=$APP_HOME"/app.js"

    第三步,检查日志文件目录是否存在,不存在的话要新建
    APP_LOG=/path/to/logPath
    if [ ! -d $APP_LOG ]; then
      mkdir $APP_LOG
    fi

    第四步,检查应用是否已经启动
    nodePids=0
    nodePids=`ps -ef | grep "node $APP_MAIN" | grep -v grep | awk '{print $2}'`

    第五步,如果应用已经启动,就全都关掉
    if [ $nodePids -ne 0 ]; then
      for id in $nodePids
        do
          kill -9 $id
        done
      if [ $? -ne 0 ]; then
        echo "kill $id fail"
        return 1
      fi
    fi

    第六步,启动应用
    nohup node $APP_MAIN > $APP_LOG/nohup.log 2>&1 &

    第七步,检查应用是否成功启动
    pids=0
    getPids(){
      pids=`ps -ef | grep "node $APP_MAIN" | grep -v grep | awk '{print $2}'`
    }
    getPids
    if [ $pids -ne 0 ]; then
      echo "app start success!"
    fi

    总结:启动一个应用,要考虑很多情况:脚本是否跨系统?脚本是否能执行?环境变量是否已经注册?日志文件夹是否有读写权限?应用是否已经启动过(会占据端口资源导致无法直接启动)?旧应用是否没有杀死?新应用是否真的启动起来了?这些全都考虑到了,才不会在上线时候遇到问题。

  • 相关阅读:
    mui 百度语音识别转换文字
    jquery插件导出word:jquery.wordexport.js
    python 3.x 爬虫基础---正则表达式
    python 3.x 爬虫基础---Requersts,BeautifulSoup4(bs4)
    python 3.x 爬虫基础---Urllib详解
    python 3.x 爬虫基础---http headers详解
    python 爬虫入门案例----爬取某站上海租房图片
    python 3.x 与2.x的区别
    基础拾遗----RabbitMQ
    基础拾遗-----mongoDB操作
  • 原文地址:https://www.cnblogs.com/lswit/p/10610283.html
Copyright © 2020-2023  润新知