美文网首页
linux4.1+python3.7+django2.1+mys

linux4.1+python3.7+django2.1+mys

作者: lx_jian | 来源:发表于2019-06-14 12:52 被阅读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/目录下的动态库建立软连接也可以。

    相关文章

      网友评论

          本文标题:linux4.1+python3.7+django2.1+mys

          本文链接:https://www.haomeiwen.com/subject/clzyfctx.html