结合 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信息 ...
随机推荐
- Java多线程_Semaphore信号量
概念: Semaphore是信号量,又称为信号灯,它可以控制某个共享资源可被同时访问的次数,即可以维护当前访问某一共享资源的线程个数,并提供了同步机制.当Semaphore的个数变成1时,即代表只允许 ...
- Flink启动脚本改造--制作适用于CDH的Flink parcel包
#!/usr/bin/env bash ################################################################################ ...
- muduo源码解析2-AtomicIntegerT类
AtomicIntegerT template<typename T> class atomicTntergerT:public noncopyable { }; 作用: 与std::ao ...
- 牛客网数据库SQL实战解析(1-10题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- php 正则表达式匹配(持续更新)
正则表达式匹配网址: <?php header('Content-type:text/html;charset=utf-8'); $str = ' 百度http://www.baidu.com网 ...
- ASP.NET Core3.1使用IdentityServer4中间件系列随笔(一):搭建认证服务器
配套源码:https://gitee.com/jardeng/IdentitySolution 1.创建ASP.NET Core Web应用程序,选择空模板. 去掉HTTPS 2.添加nuget包:I ...
- 深圳做假证h
深圳做假证[电/薇:187ヘ1184ヘ0909同号]办各类证件-办毕业证-办离婚证,办学位证书,办硕士毕业证,办理文凭学历,办资格证,办房产证不. 这是一个简单的取最大值程序,可以用于处理 i32 数 ...
- Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作
今天是golang专题第15篇文章,我们来继续聊聊channel的使用. 在我们的上篇文章当中我们简单介绍了golang当中channel的使用方法,channel是golang当中一个非常重要的设计 ...
- 你不得不知的Java基础知识
本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...
- JQuery生成图片列表
<!DOCTYPE html> <html> <head> <title>生成图片列表</title> <style type=&qu ...