结合 Shell 对 Koa 应用运行环境检查
在开发环境中,启动一个koa 应用服务,通常还需要同时启动数据库。比如。Mongodb、mysql 等
如果一直开着数据库服务,在不使用的话,电脑会占一定的性能。然而如果每次手动去启动服务,效率又不高。因此如果我们在执行npm run start
启动 koa 应用时,如果可以提前把需要的服务启动起来,那么就会效率高很多。
简单来说就是把我们平时运行的命令写成脚本,在启动时运行即可。
这里以mongodb 为例说明这个过程。
一、mongodb 启动脚本
我们在应用目录下新建脚本文件
/post-process/sh/mongodb.sh
```#!/usr/bin/sh
dbPath=$HOME/Documents/database/mongo-db
#start up mongod service
# 这里把mongodb 服务后台运行,错误输出重定向到 ./logs/mongod.log
mongod --dbpath ${dbPath} > ./logs/mongod.log &
```
二、利用child-process
运行shell 脚本
结合nodejs 的 child_process
模块,写一个运行脚本的方法:
// post-process/index.js
const { exec } = require('child_process');
/**
* 执行一个 shell 脚本
* @param {*} shell
*/
const excecShell = (shell) => {
exec(`sh ${shell}`, (err, stdout, stderr) => {
if (err) {
console.log(err)
return true
} else {
console.log(stdout)
}
})
}
/**
* 检查依赖,其实就是运行一系列脚本
*/
const dependencyCheck = (shellArray) => {
if (Array.isArray(shellArray)) {
shellArray.map(item => excecShell(item))
} else {
console.log('Illeagal shell queue!')
}
}
module.exports = {
excecShell: excecShell,
dependencyCheck: dependencyCheck
}
三、把检查过程写到config.js 中
还可以把我的执行检查写道config.js 中:
// config/index.js
const fs = require('fs')
const path = require('path')
let scriptPath = path.resolve(path.join('./post-process/sh'))
//console.log(scriptPath)
module.exports = appConfig => {
// 省略
...
config = {
preChecksScripts: [
`${scriptPath}/mongodb.sh`
],
}
return config
}
四、app.js 中执行检查过程:
const Koa = require('koa')
const app = new Koa()
const appConfig = require('./config')()
// 省略...
// 环境检查脚本
const preCheckTool = require('./post-process')
// 需要检查的脚本数组
const checkScripts = appConfig.preChecksScripts
preCheckTool.dependencyCheck(checkScripts)
// ...
来源:https://segmentfault.com/a/1190000017135577
结合 Shell 对 Koa 应用运行环境检查的更多相关文章
- 通过shell快速配置J2EE运行环境
虽然可以通过已经配置好的docker镜像来快速运行相关环境, 但是 现实往往就是这么残酷+有钱很任性的时候 就是给出了一个装好系统的电脑让配置环境,每次的配置环境变量真的很烦 纯体力活 就简单的写个脚 ...
- Java开发和运行环境的搭建
Java开发需要准备的东西? JDK+Eclipse 其中JDK的意思是Java开发工具包,Eclipse是进行用于做Java程序开发的工具(当然你也可以用记事本什么的去做). 其他开发工具:JCre ...
- Linux:Ubuntu下部署Web运行环境
Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...
- 理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- 使用Docker搭建Java Web运行环境
这周末体验了一下挺火的Docker技术,记录学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发 ...
- 如何在Mac OS X上安装 Ruby运行环境
对于新入门的开发者,如何安装 Ruby和Ruby Gems 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境.此安装方法同样适用于产品环境! 系统需求 首先确定操 ...
- 9款一键快速搭建PHP运行环境的好工具
9款一键快速搭建PHP运行环境的好工具 胡倡萌 2011/02/19 网络资源 77,063 1 内容提要: 建立一个PHP网站,首先需要搭建PHP的开发和运行环境,对于PHP初学者也是一个难 ...
- PsySH:PHP交互运行环境
是什么 我们经常会在命令行用到诸如mysql.python等命令,特点是一旦输入后,会进入命令本身的交互运行环境.示例: [root@iZ25vs3mckhZ ~]# python Python 2. ...
- Windows 8 IIS中配置PHP运行环境的方法
在Windows 8 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 1.进入控制面板>>程序和功能>>打开或关闭Windows 功能,找到Internet信息 ...
随机推荐
- 牛客网PAT练兵场-德才论
题解:用sort排序即可 题目地址:https://www.nowcoder.com/questionTerminal/97b6a49a85944650b2e3d0660b91c324 /** * C ...
- [转] Linux操作系统启动流程
总启动流程 这部分转自:https://www.cnblogs.com/liang-io/p/9651656.html 一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可 ...
- “网络巨轮”BGP的高级装备(增强配置)
引入 如下图在很多时候,BGP建立对等体的时候,要去建立大量的EBGP和IBGP对等体,IBGP还要全连接,这就给我们带来了大量重复的工作,路由表就会变得很庞大,区域内和区域之间就会很难管理,以下这些 ...
- python官网打不开
这可能是因为该站点使用过期的或不安全的 TLS 安全设置. 解决:依次打开IE的Internet选项.高级,往下拉,找到安全模块,勾上四个使用:使用SSL 3.0.使用TLS 1.0.使用TLS 1. ...
- rake
ruby-rake https://rubygems.org/gems/rake 官方文档 https://ruby.github.io/rake/ http://docs.seattlerb.org ...
- TypeError 之 Cannot convert undefined or null to object
分享一个今天遇到的一个bug , 希望对你也有用. 1.Object.keys()中传错了参数 2.由于undefined和null无法转成对象,所以如果它们做为Object.assign()的参数( ...
- AOP理论
目录 AOP理论 什么是AOP 那Spring AOP,AspectJ又是啥呢? 为什么说AOP是OOP的补充和完善呢? 应用场景举例 AOP的优点 AOP的术语整理 AOP理论 什么是AOP AOP ...
- [BUUOJ记录] [ZJCTF 2019]NiZhuanSiWei
考察PHP伪协议+反序列化,都比较简单 进入题目给出源码: <?php $text = $_GET["text"]; $file = $_GET["file&quo ...
- MyBatis源码流程分析
mybatis核心流程三大阶段 Mybatis的初始化 建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提 ...
- Ubuntu 16.04 安装Python 3.6
1.配置软件仓库,因为python 3.6 新版没有发布到ubuntu的正式仓库中,咱们通过第3方仓库来做.在命令行中输入: sudo add-apt-repository ppa:jonathonf ...