# deploy **Repository Path**: coolbits/deploy ## Basic Information - **Project Name**: deploy - **Description**: 简便的WEB发布工具 - **Primary Language**: NodeJS - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2017-02-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网站发布工具 > 灵感来源:每次发布都需要登录远程服务器,备份旧文件上传新文件,在不同文件夹之间反复切换非常繁琐,程序员可都是懒人,那能每天时间都耗在这些繁琐的事情上,而且还需要非常小心避免出错。最开始是用Python做了一个小工具,直接在文件上点击右键即可上传到服务器[右键上传](https://git.oschina.net/nxwsyang/postfile)。单个文件上传倒是非常快捷,但是对于‘上传多个文件,上传文件夹’类似于zip软件右键压缩类型的功能,网上查询了一些资料,但是没有找到适合我的技术方案。最后决定牺牲一点快捷性,放弃右键方案,使用winform做客户端,使用Node.js做服务器,开发这个小工具。 ## 服务器端介绍 ### 部署 - 安装[Node.js](https://nodejs.org/en/) - 下载[DepolyServer](https://git.oschina.net/nxwsyang/deploy/raw/master/DepolyServer.zip) 并解压 - 进入DeployServer目录,shift+鼠标左键,选择“在此处打开命令窗口”输入**node index 80** 启动server。端口号可省略,默认值3000 启动成功后界面会提示 _The depolyServer is now ready to accept connections on port 80_ #### 在启动前需要完善配置文件config.js ```js module.exports = { projects:[{ "name":"admin", //项目名称 不建议中文,用于创建文件夹,遵守文件夹命名约定。 "directory":"d:\\wwwroot\\web\\", //IIS网站根目录 "users":[{"account":"ywb","password":"123"},{"account":"帐号","password":"密码"}], "fileHandlers":[ {filePath:'\\web.config',rules:[{name:'C',p1:'test string'},{name:'B',p1:'test string',p2:'new string'},{name:'B',p1:/x/g,p2:'y'}]} ], "Ignores":"" }] } // fileHandlers.filePath 设置需要处理的文件,相对路径,需要以 \ 开头 // 示例fileHandlers规则意思是:在文件'\web.config'的尾部增加字符串'test string',然后将文件中的字符串'test string' 改为'new string'。 // 适用场景 增加js代码,用于在测试环境增加一些提示文本,用户在正式环境增加统计代码,或者替换一些关键配置。 //rule规则说明 var rules = [ { name:'A',//用 p1文件 覆盖上传的文件 p1:'\\my\\web.config' // 相对于DeployServer运行目录 }, { name:'B',//对上传的文件进行字符串替换 相当于str.replace(p1, p2) p1:'old text | regexp ', p2:'new text | regexp ' }, { name:'C',//将字符串追加到上传文件尾部 p1:'append string' } ] ``` #### 上传文件存放目录约定 \data 目录,存放所有上传文件的历史数据。 \data\\{project} 目录,存放某个'project'上传文件的历史数据 \data\\{project}\history 目录,存放文件历史数据。 \data\\{project}\\{yyyymmdd}-{tag}.json 日志文件,每次上传日志文件。 未解决:如果在23:59分进行文件上传,上传文件较多,会产生回滚BUG 日志文件内容约定 ```js { data: '2016-12-14 11:09:00', //文件上传时间 tag: '{tag}', //标签 (上传时可以自由约定标签,使用有意义的字母,遵守文件命名规则) account: 'ywb', //上传人 memo: '修改短信接口', //上传原因 target: '\\web.config', //目标文件相对路径 old: "\\data\\{project}\\history\\20161214\\{tag}-Web-old-34c123a0.config", //旧文件备份 如果为空,说话没有找到旧文件 new: "\\data\\{project}\\history\\20161214\\{tag}-Web-new-34c123a0.config" //新上传的文件备份 因为同一个Tag,同一个文件可能反复推送,所以增加了一个随机标识,记录每一次推送内容 } ``` #### 回滚操作 命令行工具 请避免project名称中间有空格,不解决该BUG,哦 node back 列出所有project node back -l admin 列出admin下的所有上传日志 node back -r admin tag 回滚admin下的tag日志 tag支持1,2,3,回滚序号对应的Tag。 ![输入图片说明](http://git.oschina.net/uploads/images/2016/1215/144429_eba99b6d_46328.png "在这里输入图片标题") ## 客户端介绍 ### 安装 - 基于.NET Framework 2.0 ,一般系统自带,没有则需要安装 - 下载[DepolyClient](https://git.oschina.net/nxwsyang/deploy/raw/master/DeployClient.zip) 并解压 - 双击 DeployClient.exe #### 在启动前需要完善配置文件config.json ```js [ { "Name": "Web 正式环境", //你容易理解的名称 "Url": "http://localhost:3000/upload", //替换localhost:3000成 server的 域名:端口号 "Project": "admin", //与server配置保持一致 "Account": "ywb", //帐号 与server配置保持一致 "Password": "123", //密码 与server配置保持一致 "Directories": "D:\\publish\\admin\\;D:\\postFile\\postfile\\", //本地目录 可配置多个 ;号分隔 "Files": "dll;cshtml;js;json;config;css;png;html;jpg", //允许上传的文件后缀 ;号分隔 "IgnorePath": "\\Assets;\\Content\\themes" //上传忽略的路径 ;号分隔 }, { "Name": "Admin 正式环境", "Url": "http://localhost:3000/upload", "Project": "admin22", "Account": "ywb22", "Password": "1234", "Directories": "D:\\publish\\Web", "Files": "dll;cshtml;js;json;config;css;png;html;jpg", "IgnorePath": "\\Assets;\\Content\\themes" } ] ``` ![输入图片说明](http://git.oschina.net/uploads/images/2016/1216/103457_9828ba65_46328.png "在这里输入图片标题") ## 其它说明 - 可单独为某人配置上传帐号,方便管理,避免需要知道服务器帐号密码才能发布 - 上传文件有加密验证,不用担心数据被窃取 ## 历史记录 - 2016-12-22 增加功能,允许zip压缩包上传,加快上传时间