夜空酱

Centos6.x升级宝塔到最新版(6.x)
宝塔linux6.0版本是基于centos7开发的,务必使用centos7.x 系统(建议小伙伴们尽量使用cent...
扫描右侧二维码阅读全文
22
2019/02

Centos6.x升级宝塔到最新版(6.x)

宝塔linux6.0版本是基于centos7开发的,务必使用centos7.x 系统(建议小伙伴们尽量使用centos7)
Centos官方已宣布在2020年停止对Centos6的维护更新,各大软件开发商也逐渐停止对Centos6的兼容,新服务器不建议使用Centos6。


这里先大概说一下,核心解决方案就是升级Python到3.4或更高3.*版本。
宝塔新版6.x不支持Centos6.x的原因是因为,Centos6.x的Python版本过低(2.x),不再被宝塔6.x兼容,如果没有使用centos7的必要,还是建议升级到centos7,也可以减少不必要的麻烦。如果您对Centos比较熟悉也可以尝试安装Python3.4作为默认Python,但处理不好的话可能导致您的yum管理器无法正常使用。

我没有做多次测试,建议没有经验的小伙伴不要尝试!!不要尝试!!不要尝试!!
如果有其他问题,请在评论区留言,找到解决办法后会补充在文章里,方便其他人。

1.升级Python

1.1 备份Python2

mv /usr/bin/python /usr/bin/python2bak

1.2 安装依赖环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

1.3下载Python3

tar -zxvf Python-3.6.1.tgz

1.4 编译安装Python3
目录我安装在了/usr/local/python3(具体安装位置看个人喜好)

cd Python-3.6.1
./configure --prefix=/usr/local/python3
make
make install

1.5 建立python3的链接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

1.6 检查升级是否成功

python -V

2.修复yum

由于yum依赖Python2.x版本,并不支持3,所以我们需要修改yum的运行环境
编辑yum的配置文件:vi /usr/bin/yum
把文件头部的 #!/usr/bin/python 改成

#!/usr/bin/python2bak

保存退出即可

3.修复pip

在我升级完Python之后,发现pip报错、无法使用

Traceback (most recent call last):
  File "/usr/bin/pip", line 7, in <module>
    from pip import main
ImportError: cannot import name 'main'

经过Google查询解决方案,需要修改 /usr/bin/pip 文件
将原来的

from pip import main
if __name__ == '__main__':
    sys.exit(main())

改为

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

4.尝试升级宝塔6.x

按照我当时的操作思路,检查了一下没什么问题之后,我就尝试执行了宝塔升级脚本。

curl http://download.bt.cn/install/update6.sh|bash

备注:这里你们也尝试升级一下,否则无法继续。
我当时的情况是提示升级失败了,检查了一下安装日志之后,似乎一切正常,不过在后来找到了原因:
请输入图片描述

gunicorn: command not found

不过在我输入指令pip show gunicorn,发现是已经安装了的。
中间一堆查找解决方案的过程我就省略掉叭,如果你们有这个问题的,参考下面这个方法:
1.首先在/usr/bin创建一个名为gunicorn的文件,并给予权限。

chmod 755 /usr/bin/gunicorn

在gunicorn文件中编写如下内容(第一行请写你的Python3路径):

#!/usr/local/bin/python

#-*- coding: utf-8 -*-
import re
import sys

from gunicorn.app.wsgiapp import run


if __name__ == '__main__':
        sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$','',sys.argv[0])
        sys.exit(run())

完成后我们检查一下gunicorn能否正常工作:

gunicorn -v

返回版本号没有报错即为正常。

此时我们重新升级宝塔

curl http://download.bt.cn/install/update6.sh|bash

如果不出意外的话,就升级成功了。

我没有做多次测试,建议没有经验的小伙伴不要尝试!!不要尝试!!不要尝试!!
如果有其他问题,请在评论区留言,找到解决办法后会补充在文章里,方便其他人。

Last modification:February 22nd, 2019 at 08:41 am
If you think my article is useful to you, please feel free to appreciate

One comment

  1. 文娱帝国

    写的很好,很喜欢

Leave a Comment