在CentOS6.3下安装fabric的时候,总是安装不成功,在执行fab命令的时候,总是会抛出错误。 Traceback (most recent call last): File "/usr/bin/fab", line 5, in <module> from pkg_resources import load_entry_point File "/usr/lib/Python2.6/site-packages/pkg_resources.py", line 2655, in <module> working_set.require(__requires__) File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 648, in require needed = self.resolve(parse_requirements(requirements)) File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 546, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: paramiko>=1.10
解决方案
安装Python2.7替代系统默认的Python2.6,再安装fabric包
Centos6.3系统默认自带的Python版本是2.6.
1、下载Python2.7安装包 在Python的官网下载页面下载2.7的源码包。 wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
2、解压,编译,安装 xz -d Python-2.7.8.tar.xz tar xvf Python-2.7.8.tar cd Python-2.7.8 ./configure --prefix=/usr/local/python2.7 make make install
3、创建软连接覆盖系统默认的python ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python
系统的yum依赖于python2.6,此时系统默认的python已经是2.7.*版本,要确保yum能正常运行,务必修改/usr/bin/yum vi /usr/bin/yum
将第一行的#!/usr/bin/python修改为#!/usr/bin/python2.6
4、安装pip包管理工具
pip是一个安装和管理python包的工具. wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py python get-pip.py ln -fs /usr/local/python2.7/bin/pip /usr/bin/pip
5、安装fabric pip install fabric ln -fs /usr/local/python2.7/bin/fab /usr/bin/fab
到这里fabric就安装完成了,可以正常运行了,折腾了好久,终于搞好了。~~~在Ubuntu下安装fabric就省事很多。
附上执行简单部署的一份代码例子,仅供参考。 # -*- coding: utf-8 -* #添加中文注释的编码 #fabfile.py from fabric.api import *
env.user = 'root' env.hosts = ['192.168.1.100'] #远程服务器的密码,这个建议不要填写,宁愿在运行的过程输入,因为这是明文显示的,不安全 #也可以将机子的ssh打通,这样就可以避免输入密码的麻烦 #env.password = 'testtest'
#从版本库取出,并删除.svn文件 def download(): local('rm -rf /tmp/newer' ) local('mkdir /tmp/newer') local('svn checkout svn://localhost/newer /tmp/newer') local('find /tmp/newer -name ".svn" | xargs rm -rf')
#压缩打包 def pack(): with lcd('/tmp/'): local('tar czvf newer.tar.gz ./newer')
#部署远程服务器目录结构 def display(): run('rm -rf /var/www/html/tmp') run('mkdir /var/www/html/tmp') # 将本地的压缩包发送到远程服务器 put('/tmp/newer.tar.gz','/var/www/html/tmp')
with cd('/var/www/html/tmp'): run('tar xvf newer.tar.gz')
#都部分目录进行特别处理 with cd('/var/www/html/newer/public/'): run('cp -r ueditor ../../tmp')
with cd('/var/www/html/'): run('rm -rf newer') run('cp -r /var/www/html/tmp/newer ./')
with cd('/var/www/html/newer/public'): run('rm -rf ueditor') run('cp -r /var/www/html/tmp/ueditor ./')
# 执行部署 def go(): download() pack() display()