博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows开发环境配置
阅读量:6279 次
发布时间:2019-06-22

本文共 2160 字,大约阅读时间需要 7 分钟。

fabric

fabric是一个用python开发的部署工具,最大的好处就是不用登陆服务器,在本地运行python脚本就可以轻松做到远程部署

fabric提供了几个简单的api来完成所有的部署

local() 本地执行命令 run() 服务器运行命令 put() 把本地文件上传到服务器 with cd('/path/to/dir/') 指定服务器的目录

在项目根目录下增加fabfile.py文件,这个文件就是控制部署的脚本

详细请参考廖雪峰老师的fabric介绍:

安装python

所以这个工具依赖python环境,在下是windows系统,需要装python环境(不得不吐槽windows,安装这些环境过程中会遇到很多坑,不想mac系统,可以跟liunx流畅的打交道)

python下载地址: 最稳地还是建议安装2.7版本,因为后面安装的一些依赖包依赖2.7版本

安装pip

pip可以理解为python的一个包管理工具,用pip工具去安装fabric

pip install fabric pip下载地址:

进入pip的安装目录,运行:

python build python install 若此时出现错误说,not found module 'setuptools',需要补装一下 setuptools下载地址:

进入安装目录执行

python build python install 或者参考另一个方法:

此时还有一步,就是把pip的安装目录添加进环境变量(windows就是有点麻烦,有钱还是买个macbook)

这时就可以用前面说的命令安装fabric了

fab test test是fabfile.py里定义的一个方法

def test(remote='xxxxxx', make=True): print '开始同步代码...' if make: local('make test') remote_dir = 'xxxxxxxx' sync_str = 'rsync --delete-after -r %s %s@%s:%s' local(sync_str % (os.getcwd() + '/dist/*', env.user, remote, remote_dir)) print '同步完毕' 这时候window上会报错,说make test这命令执行出错

前面已经说了,local()是执行本地命令,那么问题就是windows没有make这个命令,所以要安装make命令的工具

其实不安装也可以,make test就是运行package.json里面的test脚本,直接把它改为npm run test就好

在次运行fabfile脚本

还是会出错,说没有rsync命令

安装rsync工具

cwrsync下载地址: 记得把安装目录添加到PATH

再次运行fabfile脚本

还是会出错,错误信息如下:

dup() in/out/err failed rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2] 百度了一下,找个了一个解决方案,原因是本地有两个ssh,而正在使用的ssh不是cwrsync下的ssh.exe,在windows下环境变量是从前到后查找的,假如找到ssh就不会往后找

解决方案参考:

所以要把path里cwrsync的安装目录提前,像如下

λ where ssh E:\ProgramFiles\cwRsync_5.5.0_x86_Free\bin\ssh.exe C:\Program Files (x86)\Git\usr\bin\ssh.exe 再次运行fab test

也还是会出错,就是这么皮。要不然这标题就不会在坑后面加s了

这次报的错误主要是语法错误

The source and destination cannot both be remote. rsync error: syntax or usage error (code 1) at main.c(1274) [Receiver=3.1.2] 这下简单了,百度一下rsync命令在windows下的用法就行了,最后改成如下:

def test(remote='xxxxxxx', make=True): print '开始同步代码...' if make: local('npm run test') remote_dir = 'xxxxxx' sync_str = 'rsync --delete-after -r %s %s@%s:%s' local(sync_str % ('/cygdrive/E/xxxxxxx*', env.user, remote, remote_dir)) print '同步完毕' 最后运行,输入密码就成功了!!!

转载于:https://juejin.im/post/5c246ef0e51d4570c053d561

你可能感兴趣的文章
通过TMG发布ActiveSync
查看>>
Web服务器的配置与管理(4) 配置访问权限和安全
查看>>
Linux系统安装VMware Tools
查看>>
asp.net 页面右下角弹出类似QQ或MSN的消息提示
查看>>
游戏开发经常使用算法概述
查看>>
EDM制作要点
查看>>
爆牙齿的Web标准面试考题II(iPhone SMS/iChat UI的Web标准实现)
查看>>
XMOVE3.0手持终端——软件介绍(二):在2KB内存的单片机上实现的彩屏GUI控件库
查看>>
MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
查看>>
找小于N 的所有质数
查看>>
Windows下的Jupyter Notebook 的介绍(写给新手)(图文详解)
查看>>
iOS开发-CocoaPods实战
查看>>
JS组件系列——Bootstrap 树控件使用经验分享
查看>>
HTML-color:rgb()-颜色渐进
查看>>
数据库实例: STOREBOOK > 表空间 > 编辑 表空间: UNDOTBS1
查看>>
Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)...
查看>>
Javascript防冒泡事件与Event对象
查看>>
managed domain与unmanaged domain
查看>>
《中国人工智能学会通讯》——11.47 领域文本中的实体链接技术
查看>>
刚毕业不久,就在人工智能上做出这样大贡献
查看>>