惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - snryang

鼠标右键发布文件到远程服务器 关于跑步耳机的一些思考 - snryang 对棋牌游戏平台的一些思考 - snryang 复杂业务简单化的一个小技巧 - snryang 老婆和老媽同時掉在了水裡终于有答案了 重发我的 HTML单据输入控件 - snryang js对象序列化为json字符串 CSS的一个小技巧 - snryang - 博客园 基于jQuery的单据输入 基于jQuery的表单验证 - snryang 基于JQuery的拖拉效果, cms系统也不复杂 - snryang IList对象排序方法 基于jqury的自动完成 让你的博客园变灰 弹出遮罩层示例. Jquery学习 用反射来解决字段多带来的烦恼 - snryang 数据库结构中的"树"
网站发布小工具,--让发布变简单一点 - snryang - 博客园
snryang · 2016-12-15 · via 博客园 - snryang

网站发布工具

灵感来源:每次发布都需要登录远程服务器,备份旧文件上传新文件,在不同文件夹之间反复切换非常繁琐,程序员可都是懒人,那能每天时间都耗在这些繁琐的事情上,而且还需要非常小心避免出错。最开始是用Python做了一个小工具,直接在文件上点击右键即可上传到服务器右键上传。单个文件上传倒是非常快捷,但是对于‘上传多个文件,上传文件夹’类似于zip软件右键压缩类型的功能,网上查询了一些资料,但是没有找到适合我的技术方案。最后决定牺牲一点快捷性,放弃右键方案,使用winform做客户端,使用Node.js做服务器,开发这个小工具。

服务器端介绍

部署

  • 安装Node.js
  • 下载DepolyServer 并解压
  • 进入DeployServer目录,shift+鼠标左键,选择“在此处打开命令窗口”输入node index 80 启动server。端口号可省略,默认值3000

启动成功后界面会提示 The depolyServer is now ready to accept connections on port 80

在启动前需要完善配置文件config.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'}]}
    ]
  }]
}
// 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
日志文件内容约定

{
  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。
输入图片说明

客户端介绍

安装

  • 基于.NET Framework 2.0 ,一般系统自带,没有则需要安装
  • 下载DepolyClient 并解压
  • 双击 DeployClient.exe

在启动前需要完善配置文件config.json

[
  {
    "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"
  }
]

其它说明

  • 可单独为某人配置上传帐号,方便管理,避免需要知道服务器帐号密码才能发布
  • 上传文件有加密验证,不用担心数据被窃取
  • 源码:https://git.oschina.net/nxwsyang/deploy