linux4.1+python3.7+django2.1+mysql8.0安装过程

    最近在开发一个web服务,用了django2.1,由于django版本兼容python版本问题,版本不对应会有语法问题,因此需升级python。另外,使用了mysql数据存储。服务器使用的是国产linux系统,内核版本为4.1。安装过程中有很多依赖问题,为了方便之后安装,记录下升级的过程。

1.Python环境与Django版本对应表

图一

2.python2 升级到python3.7

首先安装依赖:

 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc  libffi-devel

因为python3需要引用openssl模块,需要的openssl版本最低为1.0.2,但是系统默认的为1.0.1,所以需要重新更新openssl。因为我的系统升级了openssl1.1.1问题仍存在,于是按python3.7官方建议安装LibreSSL。LibreSSL是openssl的一个分支,LibreSSL 的漏洞数与严重程度要比 OpenSSL 少的多、轻的多。

2.1 libressl安装

首先下载libressl:

wget  https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.9.2.tar.gz

解压:

tar -zxvf libressl-2.9.2.tar.gz

切换到libressl-2.9.2目录下,配置安装目录,我这配置安装目录为/usr/local/libressl:

cd  libressl-2.9.2

./configure --prefix=/usr/local/libressl

接着执行:make && make install 

为了系统命令默认使用该版本的ssl,需要修改一些软连接:

首先备份:

mv  /usr/bin/openssl  /usr/bin/openssl.backup

mv  /usr/include/openssl /usr/include/openssl.backup

建立软链接:

ln -s /usr/lcoal/libressl/bin/openssl  /usr/bin/openssl

ln -s /usr/local/libressl/include/openssl /usr/include/openssl

openssl一般以一种动态库或者静态库的方式链接到其他程序中,因此需要解决链接库依赖问题,把opessl编译的动态库路径写入ld.so.conf配置文件

如下: echo "/usr/local/libressl/lib/"  /etc/ld.so.conf

接着执行:ldconfig  -v  使其生效

2.2 python 3.7安装

下载python3.7: 

 wget  https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

解压:

tar -zxf  Python-3.7.3.tgz

配置安装目录:

 进入到cd Python-3.7.3后执行./configure --prefix=/usr/local/python3.7

编译及安装:

make  && make install

备份python2的软链接:

mv /usr/bin/python /usr/bin/python.bak

创建python3的软连接 :

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

查看版本: 

python  -V

因为yum需要使用python2,将/usr/bin/python改为python3后,yum就不能正常运行了,因此需要更改一下yum的配置。

vim  /usr/bin/yum

vim  /usr/libexec/urlgrabber-ext-down

编辑这两个文件,将文件头的#!/usr/bin/python改为#!/usr/bin/python2即可。

3. django安装

这里使用pip安装,首先查看pip 版本,在输出信息末尾查看python2还是python3.7:pip  -V 

如不是python3.7 ,需要修改软链接:

mv /usr/bin/pip /usr/bin/pip.backup

ln -s /usr/local/python3.7/bin/pip3 /usr/bin/pip

接着安装django2.1:

pip install django==2.1

4.mysql 8 .0安装

4.1 安装软件源

这里通过rpm包安装,首先下载rpm包。安装包下载路径:http://repo.mysql.com/。由于我这里硬件特殊性,这里选择:mysql80-community-release-el7.rpm

下载:

wget http://repo.mysql.com/mysql80-community-release-el7.rpm

安装:

rpm  -ivh  mysql80-community-release-el7.rpm

4.2 安装和配置mysql服务端

(4.2.1)安装:

yum install -y  mysql-community-server

启动mysql,验证时候安装成功:

service mysqld start

启动后查看状态:

service mysqld status

此时:active (running),表明安装成功,并正常运行。

(4.2.2)修改密码

首先查看安装时默认的密码:

grep  'temporary password'  /var/log/mysqld.log

输出如下:

图2

这里密码为:acu%ah.=q2eO

首先使用默认密码登录:

mysql -uroot -p

输入密码即可登录.

用该密码登录到服务端后,必须马上修改密码再执行一些数据库操作,不然会报如下错误:You must reset your password using ALTER USER statement before executing this statement.

修改密码(*********为你要设置的密码):

ALTER USER 'root'@'localhost' IDENTIFIED BY '*********';

如果密码设置太简单出现以下的提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements.必须修改两个全局参数:

首先,修改validate_password.policy参数的值:

set global validate_password.policy=0;

再修改密码的长度validate_password.length:

set global validate_password.length=1;

再次执行修改密码就可以了.

ALTER USER 'root'@'localhost' IDENTIFIED BY '******';

(4.2.3)授权远程登录

mysql数据库安装完成后有默认的mysql数据库,里面有个user表,数据就是默认的系统用户的一些信息,包括权限。我们给root用户一个访问权限。

use mysql;

select host,user,authentication_string,plugin from user;执行结果如下:

图3

host和user中可以看到root用户对应的值为localhost,即root用户的访问权限为localhost,想把该用户的访问权限设置可远程连接,我们只需要把localhost更改为通配的%就可以了。

update user set host = "%" where user = "root";

此时客户端连接,会出现caching-sha2-password问题:

修改加密规则:

ALTER USER 'root'@'%' IDENTIFIED BY '******' PASSWORD EXPIRE NEVER;

更新下用户密码:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY ******;

刷新权限:

FLUSH  PRIVILEGES;

5.运行django项目

python manage.py runserver

(5.1)如出现 libmysqlclient18.so无法找到,需要确定是否安装,如果有安装则需要修改软连接。我这里没有安装:

安装libmysqlclient18:

下载(我这里是arm64处理器,下载对应版本的rpm,arm适配链接:http://rpmfind.net/):

libmysqlclient18-10.0.35-35.1.aarch64.rpm

libmysqlclient-devel-10.0.35-35.1.aarch64.rpm

libmysqlclient_r18-10.0.35-35.1.aarch64.rpm

下载后直接rpm -ivh 安装即可。

(5.2)如果出找不到libssl.so.1.0.0、libcrypto.so.1.0.0则需要修改软连接,在/usr/lib/目录下有openssl的动态库,建立一个软链接即可解决问题。

我这里如下:

ln -s /usr/lib64/libssl.so.1.0.1j  /usr/lib64/libssl.so.1.0.0

 ln -s /usr/lib64/libcrypto.so.1.0.1j  /usr/lib64/libcrypto.so.1.0.0

使用2.1步骤中libressl安装目录下/usr/local/libressl/lib/目录下的动态库建立软连接也可以。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容