linux下nginx+uwsgi+django项目部署踩坑记录


nginx版本:1.20.1
uwsgi版本:2.0.19.1
django版本:3.2.5


踩坑点:

  • Django项目数据库使用sqlite3,django版本为3.2.5,linux环境自带的sqlite版本太低,启动时时提示 django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher

  • 项目需要到部署公司预生产服务器,没有开放端口白名单,只能使用开发部署好的nginx做代理,出现静态文件请求接口路径出错的问题

  • Python3.7及以上版本不支持1.0.2版本以下的openssl(服务器自带版本为1.0.1),导致请求https接口报 Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")


CentOS版本号

注:建议你先倒着看最后一个问题,不然你得重头再来,有坑。


问题一 sqlite3版本过低:

​ 首次把写好的django项目丢到本地服务器测试运行,使用 python3 manage.py runserver 0.0.0.0:8088 命令时启动报错,django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher,自带的sqlite3版本过低,django3不支持使用,使用 sqlite3 -version 查看sqlite3版本为3.6.20,天真的我以为升级下版本就好了,于是下载了3.27.2版本的sqlite3安装包,更新后重新配置,在python中也验证了版本没有问题:

升级后的sqlite3版本号

再次运行时继续报错

无果后只能通过安装 pysqlite3pysqlite3-binary 库,再修改django配置解决,那就装吧。

pip3 install  pysqlite3 

pip3 install pysqlite3-binary

分别安装好两个库,接下来就是修改django中的导入配置:

# 根据自己python3安装的位置填写路径
vim /usr/local/python3/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py
# from sqlite3 import dbapi2 as Database (在文件内找到并注释掉这段)
from pysqlite3 import dbapi2 as Database 	# 修改为pysqlite3

至此,sqlite3版本过低 的问题解决。


问题二 nginx做代理转发:

​ 在本地环境运行时没有任何问题,使用 python3 manage.py runserver 0.0.0.0:8088 命令启动后可以正常打开,在我上传到预生产环境、然后启动项目、打开浏览器访问准备大干一场时,发现前端页面请求不到静态资源了,前端页面写的非常简陋我就不放了,就是实现一个对接百度API识别发票接口,客户在前端上传包含发票图片的压缩包,上传完毕后可点击归档按钮,后台解压压缩包–>获取所有图片–>压缩后进行图片识别–>识别完成后根据返回的开票人姓名创建文件夹–>将该图片移动至新建文件夹内–>将图

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值