用Nuxt express element 開發自動部署管理平臺 node auto deploy

arno-react發表於2019-04-22

前言

開發中各種測試開發環境,開發環境,生產環境。需要多次頻繁打包上傳專案。當開發的專案過多,容易導致包上錯環境,手動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
複製程式碼

相關文章