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

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News | PayPal Newsroom
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
Forbes - Security
Forbes - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
PCI Perspectives
PCI Perspectives
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
Last Week in AI
Last Week in AI
Blog — PlanetScale
Blog — PlanetScale
Hacker News: Ask HN
Hacker News: Ask HN
H
Heimdal Security Blog
D
Docker
Cloudbric
Cloudbric
P
Privacy International News Feed
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Tenable Blog
Scott Helme
Scott Helme
人人都是产品经理
人人都是产品经理
Recent Announcements
Recent Announcements
P
Palo Alto Networks Blog
小众软件
小众软件
L
LINUX DO - 最新话题
美团技术团队
Google Online Security Blog
Google Online Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
雷峰网
雷峰网
Microsoft Security Blog
Microsoft Security Blog
The Hacker News
The Hacker News
Webroot Blog
Webroot Blog
T
Tor Project blog
G
Google Developers Blog
A
About on SuperTechFans
Y
Y Combinator Blog
K
Kaspersky official blog
A
Arctic Wolf
量子位
I
InfoQ
V
Visual Studio Blog
T
Troy Hunt's Blog
C
Cybersecurity and Infrastructure Security Agency CISA
J
Java Code Geeks
博客园 - 【当耐特】
GbyAI
GbyAI

博客园 - snryang

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