用Nuxt express element 开发自动部署管理平台 node auto deploy

2,378 阅读3分钟

前言

开发中各种测试开发环境,开发环境,生产环境。需要多次频繁打包上传项目。当开发的项目过多,容易导致包上错环境,手动scp rm backup 容易出错。

本项目提供一次配置多次运行,一键操作,解决重复操作

node auto deploy

项目技术

  • 后台使用 node express开发
  • 数据库使用mysql
  • 前端使用 Nuxt vue 开发
  • ui 使用 element-ui

核心

node—auto-deploy 主要目的是代替手动执行 打包项目 上传到运程服务器 数据备份 等命令,使用node child_process模块进行衍生的子进程执行各种命令

项目启动

安装
  • 程序需要ssh 要用 password 登录 要装sshpass
yum install -y wget && wget http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz && tar xvzf sshpass-1.06.tar.gz && cd ./sshpass-1.06 && ./configure && make && make install
  • 修改数据库配置 /server/config/index.js
module.exports = {
  mysql:{
    host  : '127.0.0.1',
    user  : 'root',
    password : '123456',
    database : 'auto_deploy',
    port:'3306'
  }
};
  • 导入sql到数据库 sql文件在 /server/sql/iauto_deploy_2019-04-19.sql

  • 安装依赖 打包

# install dependencies
$ npm install

# serve with hot reload at localhost:3000  // 开发环境 端口可以 nuxt.confing.js 修改
$ npm run dev

# build for production and launch server
$ npm run build

For detailed explanation on how things work, checkout Nuxt.js docs.

  • 使用pm2为项目守护启动
# 安装pm2
$ npm install pm2 -g 
# 启动
$ pm2 start npm --name "autodeploy" -- run start
# 重新启动
$ pm2 restart  autodeploy

测试地址 http://118.24.156.247:3000/

用户/密码 admin/123456 (执行不了任务)

项目git 地址 <=

欢迎各位大神提出问题<=,

开发功能
  • 核心功能自动部署
  • 用户权限
  • 定时任务
  • 支持SVN

欢迎提出您想要的功能 =>入口<=

项目目录结构

├── README.md
├── api  // 前端接口
│   ├── login.js
│   ├── task.js
│   └── user.js
├── assets // 静态资源
├── components  // 组件
│   ├── Breadcrumb
│   │   └── index.vue
│   ├── Hamburger
│   │   └── index.vue
│   ├── Pagination
│   │   └── index.vue
│   ├── README.md
│   ├── SvgIcon
│   │   └── index.vue
│   ├── downTmp
│   │   └── downTemplate.vue
│   ├── editor.vue
│   ├── history.vue
│   └── taskDetail.vue
├── layouts // ui布局
│   ├── README.md
│   ├── components
│   │   ├── AppMain.vue
│   │   ├── Navbar.vue
│   │   ├── Sidebar
│   │   │   ├── Item.vue
│   │   │   ├── Link.vue
│   │   │   ├── SidebarItem.vue
│   │   │   └── index.vue
│   │   ├── headNav.vue
│   │   └── index.js
│   ├── default.vue
│   ├── empty.vue
│   └── mixin
│       └── ResizeHandler.js
├── log // 日志
├── middleware // 前端中间件
│   ├── README.md
│   └── login.js
├── nuxt.config.js // nuxt 配置
├── package-lock.json
├── package.json
├── pages // 页面
│   ├── 404.vue
│   ├── README.md
│   ├── index.vue
│   ├── login
│   │   └── index.vue
│   └── user.vue
├── plugins  // 插件
│   ├── README.md
│   ├── directive.js
│   ├── element-ui.js
│   ├── icons.js
│   └── socket.js
├── server // 服务器代码
│   ├── config
│   │   └── index.js
│   ├── controllers
│   │   ├── authController.js
│   │   ├── homeController.js
│   │   ├── permissController.js
│   │   ├── settingController.js
│   │   └── userController.js
│   ├── index.js
│   ├── model
│   │   ├── permissions.js
│   │   ├── permissionsSqlMap.js
│   │   ├── task.js
│   │   ├── taskList.js
│   │   ├── taskListSqlMap.js
│   │   ├── taskSqlMap.js
│   │   ├── user.js
│   │   ├── userPermissionsSqlMap.js
│   │   ├── userPrmissions.js
│   │   └── userSqlMap.js
│   ├── plugins
│   │   ├── log4j.js
│   │   └── socket.js
│   ├── routes
│   │   ├── auth.js
│   │   ├── home.js
│   │   ├── index.js
│   │   ├── permiss.js
│   │   ├── setting.js
│   │   └── user.js
│   ├── server
│   │   ├── cmd
│   │   │   ├── README.md
│   │   │   ├── branchListTask.js
│   │   │   ├── deleteDirTask.js
│   │   │   ├── historyTask.js
│   │   │   ├── localTask.js
│   │   │   ├── pullTask.js
│   │   │   ├── remoteTask.js
│   │   │   ├── scpTask.js
│   │   │   ├── startTask.js
│   │   │   └── test.js
│   │   ├── cmd.js
│   │   ├── ssh-pool
│   │   │   ├── Connection.js
│   │   │   ├── ConnectionPool.js
│   │   │   ├── README.md
│   │   │   ├── commands
│   │   │   │   ├── cd.js
│   │   │   │   ├── mkdir.js
│   │   │   │   ├── raw.js
│   │   │   │   ├── rm.js
│   │   │   │   ├── rsync.js
│   │   │   │   ├── scp.js
│   │   │   │   ├── ssh.js
│   │   │   │   ├── tar.js
│   │   │   │   └── util.js
│   │   │   ├── index.js
│   │   │   ├── remote.js
│   │   │   └── util.js
│   │   └── util
│   │       ├── argv.js
│   │       ├── git.js
│   │       ├── local.js
│   │       ├── log4j.js
│   │       ├── remote.js
│   │       └── ws.js
│   ├── sql
│   │   └── auto_deploy_2019-04-19.sql
│   └── util
│       ├── mysql.js
│       ├── startCmd.js
│       └── token.js
├── static // 
│   ├── README.md
│   └── favicon.ico
├── store //数据
│   ├── README.md
│   ├── actions.js
│   ├── app.js
│   ├── index.js
│   ├── mutation-types.js
│   ├── mutations.js
│   └── user.js
└── utils // 工具
    ├── auth.js
    ├── index.js
    ├── request.js
    ├── scrollTo.js
    └── validate.js