fis3进阶之服务器发布脚本http-push插件
发布于 作者:苏南大叔 来源:程序如此灵动~苏南大叔继续讲述百度前端模块化工具fis3
,本文中讲述服务器发布脚本。在以前的fis3
文章中,所有的demo
都是发布到本机的另外一个目录的。那么本文中,发布的对象是另外一台服务器。这个服务器的上需要部署一个特殊的receiver
脚本。好,剧透就这么多,想知道更多fis3
服务器端发布脚本的细节,请继续查看正文吧。
'http-push'插件
依然是插件制度,这里使用的是个http-push
。见名思意,通过http
进行push
操作.... 那就是文件上传了。那么苏南大叔是这么理解这个插件的,把所有的文件上传到另外的接口。那么是不是这样的呢?大家可以看看文末的代码解读部分,这里就先卖个关子。
同样,苏南大叔这里修改的文件是fis-config.js
文件。利用了media
和plugin
功能,将这个release
限定了一个特定的场景qa
。代码如下:
fis.media('qa').match('*', {
deploy: fis.plugin('http-push', {
receiver: 'http://remote:888/receive.php',
to: 'E:/fis3/php/www/' // 注意这个是指的是测试机器的路径,而非本地机器
})
});
对于参数receiver
和to
,请看下一步的继续说明。to
中目录分隔符,即使远程机器是win
,目录的写法也是仿linux系列的写法。这点需要注意。
特制的receiver
百度提供了一个php
的demo,名叫receiver.php
。代码见这里:
这个php
文件,预先放置在远程服务器上面就可以了。
在部署receiver.php
的时候,可以看到这里的注释上面写了这个代码非常危险,请不要部署在正式环境里面。所以,苏南大叔粗略的看了一下这个代码。因为毕竟也挺简单的,一目几行就看完了。确实蛮危险的,用于演示还可以。但是部署正式服务器的话,挺冒险的。
危险点主要有下面几个:
- 会先删除远程服务器上的目标目录
to
,也就是说已有的老数据会被先行清除。可以想象,如果把to
目录指定为根目录,会发生什么事情。记得那个经典程序员笑话么?“QQ群里面教了我一个高级命令sudo rm -rf /
”。 - 目标目录
to
是由fis3
发布方指定的,receiver
完全没有发言权。很容易把代码发布到不合适的位置上面去。 - 没有鉴权策略,任何知道
receiver
脚本位置的人,都可以发布数据。 - 没有文件检测策略,比如没有改变的文件可以不用上传。
不过作为内部演示的话,这个代码还是可以操作的。所以,fis-config.js
上的to
参数,一定要小心谨慎配置,异常小心谨慎!!否则,一不小心远程服务器就误删除了。
当然,百度官方还有提供一个node
版本的receive
。原理上和php
版本的是一致的,所以上述安全问题一致存在。node
版的代码见这里:
在本文中,就暂时不做评述了,大家可以自行试验。记得小心谨慎操作!这些脚本都异常危险!
解读fis3-deploy-http-push
这个脚本文件位于npm
全局包的下的这个位置:/node_modules/fis3/node_modules/fis3-deploy-http-push/index.js
。
结合上一个receiver.php
,大家可以知道:这个发布的逻辑就是:删除目标文件夹to
,然后批量文件上传,保存文件。
如何查找全局包的位置,请点击 https://newsn.net/say/npm-whereis.html
相关截图
苏南大叔执行的代码是:fis3 release qa
。然后远端服务器是个win
主机,php端口监听888
。远端服务器脚本的发布目录是:E:/fis3/php/www/
。
结论
这个receiver.php
,如果稍加改造,还是可以使用的。但是一定要加强其安全性。鉴权以及对目录to
的控制,对删除时机的控制,这些都是要考虑到的安全因素。
更多由苏南大叔解读的fis3
使用经验文章,请点击下面的连接查看。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。