在Centos6.3安裝Python Fabric運行環境

背景

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,再安裝fabricpython

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

三、建立軟鏈接覆蓋系統默認的pythonapi

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()
相關文章
相關標籤/搜索