在Centos6.3
下安裝fabric
的時候,老是安裝不成功,在執行fab
命令的時候,老是會拋出錯誤。html
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
包python
Centos6.3
系統默認自帶的Python
版本是2.6
.git
一、下載Python2.7安裝包
在Python
的官網下載頁面下載2.7的源碼包。github
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
二、解壓,編譯,安裝ubuntu
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
三、建立軟鏈接覆蓋系統默認的python
api
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
服務器
四、安裝pip
包管理工具python2.7
pip
是一個安裝和管理python包的工具.ssh
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
五、安裝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()