网络部署过程中_python3.6+django2.2部署过程中问题及解决方案笔记

以前采用的python2.7和django1.X形式进行的部署。

上周打算用比较新版的python和django来进行管理系统的搭建。可是在部署过程中遇到了很多问题。我在这里记录下。由于系统环境的不同,可能会出现有些问题我这边没有遇到而大家在安装过程中遇到的情况。

python3.6安装

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz tar xvf Python-3.6.8.tgz  cd Python-3.6.8 ./configure --prefix=/usr/local/python3.6 --enable-optimizationsmake && make installln -s /usr/local/python3.6/bin/python3.6 /usr/bin/python3.6

安装setuptools + pip

wget https://files.pythonhosted.org/packages/1d/64/a18a487b4391a05b9c7f938b94a16d80305bf0369c6b0b9509e86165e1d3/setuptools-41.0.1.zipunzip setuptools-41.0.1.zip cd setuptools-41.0.1/usr/local/python3.6/bin/python3.6 setup.py install/usr/local/python3.6/bin/easy_install-3.6 pip

创建沙盘

 /usr/local/python3.6/bin/python3.6 -m venv /data/venv/python3.6.8/

进入虚拟环境

source /data/venv/python3.6.8/bin/activate

安装django

pip install Django

到这里为止,django就在虚拟环境中安装完成了。

表面看上去很简单,其实还有很多的坑。下面在应用过程中介绍。

创建Django应用

安装项目:

python manage.py startapp TaskSystem

报错:

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.6.20).

解决方案:需要重新安装高版本的sqlite

wget https://www.sqlite.org/2019/sqlite-tools-linux-x86-3280000.zipunzip sqlite-tools-linux-x86-3280000.zip cd sqlite-tools-linux-x86-3280000wget https://www.sqlite.org/snapshot/sqlite-snapshot-201906112102.tar.gzcd sqlite-snapshot-201906112102./configure --prefix=/usr/local/sqlite3/makemake installmv /usr/bin/sqlite3 /usr/bin/sqlite3_oldln -s /usr/local/sqlite3/bin/sqlite3 /usr/bin/sqlite3echo 'export LD_LIBRARY_PATH="/usr/local/sqlite3/lib"' >> /etc/profilesource /etc/profile

再次执行:

 python manage.py startapp TaskSystem

成功

在本地运行程序,尝试用web访问

python manage.py runserver 0.0.0.0:8000

又报错:

django.db.utils.NotSupportedError: URIs not supported

解决方案:

"/home/python3/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py"这个文件,修改修改大概198行,通过搜索uri查找。kwargs.update({'uri': False}) #这里原来是True,修改为False就可以了

接下来,启动项目,但是访问 ip:port 却还是访问不了

解决方案:

将 settings.py 里面的 ALLOW_HOSTS

ALLOWED_HOSTS = ["*"]

将启动项目的命令改成:

python3 manage.py runserver 0.0.0.0:8000

再次尝试ip:port形式进行访问,正常了。我的是如下:

710b2119a71c0dccc6ec714b67f7db92.png

开始创建mysql数据库

Django默认是sqlite数据库,所以项目文件夹下会生成db.sqlite3这个文件。

突然想到我傻了,我本来就打算使用mysql的,最开始报错我升级sqlite干嘛,反正后面又用不到。

Django(Python)操作MySQL依赖第三方包,所以要先安装MySQL for Python。

wget https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zipunzip MySQL-python-1.2.5.zipsudo python3.6 setup.py install

报错:

ModuleNotFoundError: No module named 'ConfigParser'

解决方法:

找到文件 configparser ,更名为旧版本的名称 ConfigParser

cp /usr/local/python3.6//lib/python3.4/configparser.py /usr/local/python3.6//lib/python3.4/ConfigParser.py 

现在要让Django支持MySQL数据库。编辑配置文件(mysite/settings.py)。找到DATABASES的配置,当前版本是在77行,默认是sqlite,把它改成MySQL:

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #设置为mysql数据库 'NAME': 'dmyz', #mysql数据库名 'USER': 'root', #mysql用户名,留空则默认为当前linux用户名 'PASSWORD': 'root', #mysql密码 'HOST': '', #留空默认为localhost 'PORT': '', #留空默认为3306端口 }}

当执行 python manage.py migrate 使用mysql数据库时,再次出现报错:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.zh

真实解决办法:

pip3.6 install mysqlclient

或者:

pip3.6 install --upgrade mysqlclient

这里有个巨坑,千万不要按着步骤来操作,请看完下一段。

网上找了很多资料,大家都说这个报错是因为MySQLdb不支持Python3,如果要使用对应功能需要将MySQL驱动设置为pymysql。 或者降级django版本。

所以我当时在虚拟环境下(root)安装pymysql,执行

pip install PyMySQL

再次提示报错:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

还是报错,提示 mysqlclient 得升级,搞了半天最后发现并不需要什么 PyMySQL,升级mysqlclient 后MySQLdb 直接就可以使用了。

尝试创建数据库表正常:

python manage.py migrate

到这里为止django以及对用的数据库连接设置就已经完成了。这也是上周我搭建过程中遇到了一些问题,希望对大家有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值