CentOS6.8 升級python2.7

參考鏈接:https://ruiaylin.github.io/2014/12/12/python%20update/

前提:centos6.8虛擬機(jī)眉菱,新機(jī)器踊跟,很多包都沒有

centos6.8自帶python是2.6姨拥,項目需要python2.7


注意:

因為是新機(jī)器绣檬,所以os上很多依賴包都沒有璧眠。我第一次參考鏈接的方式安裝2.7缩焦,結(jié)果在執(zhí)行python get-pip.py中報錯:zipimport.ZipImportError: can't decompress data; zlib not available读虏。查看了一些文檔,都然并卵袁滥。必須執(zhí)行下面的語句盖桥,python get-pip.py才能執(zhí)行成功。(update應(yīng)該可選题翻,未親測)

yum -y update

yum groupinstall -y 'development tools'

yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget

1.下載python2.7.9的包:

wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz

xz -d Python-2.7.9.tar.xz

tar -xvf Python-2.7.9.tar

2.安裝

cd Python-2.7.9

./configure --prefix=/usr/local/python2.7

(注:

./configure --prefix=/usr/local說明揩徊。不指定prefix,則可執(zhí)行文件默認(rèn)放在/usr/local/bin嵌赠,庫文件默認(rèn)放在/usr/local/lib塑荒,配置文件默認(rèn)放在/usr/local/etc。其它的資源文件放在/usr /local/share姜挺。所以沒有特殊要求齿税,省略--prefix就可以了。你要卸載這個程序炊豪,要么在原來的make目錄下用一次make uninstall(前提是make文件指定過uninstall),要么去上述目錄里面把相關(guān)的文件一個個手工刪掉凌箕。

指定prefix,直接刪掉一個文件夾就夠了)

make && make install

3.修改/usr/bin/python軟連词渤,指向python2.7

ln -sf /usr/local/python2.7/bin/python2.7 /usr/bin/python

測試:

# python

Python 2.7.9 (default, Mar 29 2017, 14:50:12)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> exit()

成功牵舱。

/usr/local/php5/sbin/php-fpm --prefix /usr/local/php5 --fpm-config /usr/local/php5/etc/php-fpm.conf --pid /Users/liuh/development/temp/cmdb_session/php-fpm.pid

/usr/sbin/php-fpm --prefix /usr --fpm-config /etc/php-fpm.conf

4.安裝pip

cd {workdir}

wget https://bootstrap.pypa.io/get-pip.pypython get-pip.py(我總覺得上面這句話很重要,這個pip是安裝在python2.7下面的缺虐,一切使用pip安裝的包都是在python2.7下)

測試:

# pip --version

Could not find platform independent libraries

Could not find platform dependent libraries

Consider setting $PYTHONHOME to[:]

ImportError: No module named site

因為在編譯python時指定了--prefix芜壁,所以python home不再是默認(rèn)的/usr/local/,需要在/etc/profile末尾指明一下:

export PYTHONHOME=/usr/local/python2.7

退出保存高氮,使生效:source /etc/profile

# pip --version

pip 9.0.1 from /usr/local/python2.7/lib/python2.7/site-packages (python 2.7)

成功慧妄。

(pip安裝的另一種方式:

pip安裝也可以用yum完成:yum install -y python-pip,但有可能會報錯:No package python-pip available.

可能是在已有的yum源中找不到這個名稱的包纫溃,安裝epel源:

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install -y python-pip

成功腰涧。)

5.centos6.8使用的yum命令是依賴于python2.6的韧掩,我們修改了/usr/bin/python的指向后紊浩,yum命令就不可用了,需要編輯:vi /usr/bin/yum

把第一行#!/usr/bin/python 改成 #!/usr/bin/python2.6

保存疗锐,退出坊谁。yum又可以愉快地玩耍了。

6.pip安裝包時滑臊,官方地址是:http://pypi.python.org口芍。因為各種原因,網(wǎng)速不規(guī)則卡頓雇卷,于是可以修改pip鏡像地址:

http://cls1991.github.io/2015/11/29/pip%E4%BF%AE%E6%94%B9%E5%AE%98%E6%96%B9%E6%BA%90%E4%B8%BA%E8%B1%86%E7%93%A3%E6%BA%90/

或者直接這樣使用命令:

https://www.douban.com/note/302711300/

pip使用技巧:

除了直接用命令:pip install {package_name}以外

1)也可以將要安裝的包鬓椭,先下載到某個目錄{pkg_dir}颠猴,然后指定pip包的安裝來源:pip install --no-index --find-links={pkg_dir}

2)一個python項目中可以創(chuàng)建一個requirements.txt,里面指明項目所需各項的依賴小染,然后用pip安裝:pip -r requirements.txt

3)我們可以多種方式下載:pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -r requirements.txt

pip install --no-index --find-links={pkg_dir} -r requirements.txt

7.為了解決不同項目翘瓮,依賴不同版本的python;或者兼有依賴同一版本裤翩,但所需要的包不相同的問題资盅,我們需要用virtualenv來管理各個項目所用的python版本及依賴。

我們使用virtualenvwrapper(參考鏈接:https://virtualenvwrapper.readthedocs.io/en/latest/

pip install virtualenvwrapper

export WORKON_HOME=~/Envs

mkdir -p $WORKON_HOME

source /usr/local/bin/virtualenvwrapper.sh

# mkvirtualenv login

which: no virtualenv in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

ERROR: virtualenvwrapper could not find virtualenv in your path

還是因為我修改過python2.7的安裝路徑踊赠,所用virtualenv找不著了呵扛,把python2.7的bin添加到PATH,修改/etc/profile,在文末添加:

export PATH=$PATH:/usr/local/python2.7/bin

保存退出:source /etc/profile

再次:mkvirtualenv login成功筐带。

切換到login環(huán)境:workon login, 報錯:

Could not find platform independent librariesCould not find platform dependent librariesConsider setting $PYTHONHOME to[:]

ImportError: No module named site

查了半天原來是virtualenv沒有正確指定需要使用的python今穿,在/etc/profile末尾添加:

export VIRTUALENVWRAPPER_PYTHON=$PYTHONHOME/bin/python2.7

virtualenv的命令又可以愉快的玩耍了。

避免每次登陸都要初始化virtualenv的環(huán)境伦籍,增加以下變量在/etc/profile中

export WORKON_HOME=/home/Envs

source $PYTHONHOME/bin/virtualenvwrapper.sh

注意:不要在/etc/profile中添加上面的語句(source $PYTHONHOME/bin/virtualenvwrapper.sh)荣赶,這會導(dǎo)致yum再次失效。

8.用uwsgi啟動一個python django web項目

首先要在對應(yīng)virtualenv下安裝uwsgi鸽斟,很簡單:pip install uwsgi

其次拔创,在項目模塊下定義一個uwsgi.ini文件,文件內(nèi)容如下:

[uwsgi]

http = 127.0.0.1:8000

pidfile2 = /home/login/login_uwsgi.pid

logto2 = /home/login/logs/login_uwsgi.log

logdate = true

log-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]

daemonize = /home/login/logs/start.log

memory-report = true

master = true

vacuum = true

chdir = /home/login/src

module = wsgi:application

env=BK_ENV=production

cheaper = 4

cheaper-initial = 4

workers = 8

cheaper-algo = busyness

cheaper-overload = 5

cheaper-step = 2

cheaper-busyness-multiplier = 60

buffer-size = 8192

post-buffering = 8192

max-requests = 1024

http:項目監(jiān)聽端口

pidfile2:進(jìn)程啟動生成的pid文件富蓄,進(jìn)程kill后此文件會銷毀

logto2:uwsgi請求日志

daemonize:uwsgi后臺運行

使用啟動腳本start.sh:

#!/bin/bash

LOGIN_HOME=/home/login

LOG_DIR=${LOGIN_HOME}/logs

PID_FILE=${LOGIN_HOME}/login_uwsgi.pid

PYTHON_HOME=/usr/local/python2.7/

VIRTUALENVWRAPPER_PYTHON=$PYTHONHOME/bin/python2.7

WORKON_HOME=/home/Envs

# check repeat start

if [ -f $PID_FILE ]

then

echo "$PID_FILE do exits.."

pid=`cat $PID_FILE`

if [ $pid ]

then

ps aux|awk '{print $2}'|grep $pid && echo "login program pid:[ $pid ] already running ..." && exit 0

echo "proccess pid:[ $pid ] does not exists, prepare to start login process .."

fi

fi

source $PYTHONHOME/bin/virtualenvwrapper.sh

workon login

uwsgi --ini ${LOGIN_HOME}/src/uwsgi.ini

echo "login proccess start success."

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剩燥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子立倍,更是在濱河造成了極大的恐慌灭红,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件口注,死亡現(xiàn)場離奇詭異变擒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寝志,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門娇斑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人材部,你說我怎么就攤上這事毫缆。” “怎么了乐导?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵苦丁,是天一觀的道長。 經(jīng)常有香客問我物臂,道長旺拉,這世上最難降的妖魔是什么产上? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蛾狗,結(jié)果婚禮上蒂秘,老公的妹妹穿的比我還像新娘。我一直安慰自己淘太,他們只是感情好姻僧,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蒲牧,像睡著了一般撇贺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冰抢,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天松嘶,我揣著相機(jī)與錄音,去河邊找鬼挎扰。 笑死翠订,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的遵倦。 我是一名探鬼主播尽超,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梧躺!你這毒婦竟也來了似谁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掠哥,失蹤者是張志新(化名)和其女友劉穎巩踏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體续搀,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡塞琼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了禁舷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彪杉。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖榛了,靈堂內(nèi)的尸體忽然破棺而出在讶,到底是詐尸還是另有隱情煞抬,我是刑警寧澤霜大,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站革答,受9級特大地震影響战坤,放射性物質(zhì)發(fā)生泄漏曙强。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一途茫、第九天 我趴在偏房一處隱蔽的房頂上張望碟嘴。 院中可真熱鬧,春花似錦囊卜、人聲如沸娜扇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雀瓢。三九已至,卻和暖如春玉掸,著一層夾襖步出監(jiān)牢的瞬間刃麸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工司浪, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留泊业,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓啊易,卻偏偏與公主長得像吁伺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子租谈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容