宝塔部署django项目常见问题
宝塔官网 https://www.bt.cn/new/download.html 枫枫使用的版本:腾讯云专享版 免费版7.6.0 常规流程 宝塔部署 http://www.fengfengz

宝塔部署django项目常见问题

发布时间:2023-10-12 (2023-10-12)

宝塔官网

https://www.bt.cn/new/download.html

枫枫使用的版本:腾讯云专享版 免费版7.6.0

常规流程

宝塔部署

http://www.fengfengzhidao.com/article/50/

命令部署

http://www.fengfengzhidao.com/article/62/

常见问题

上面是常规的流程,在这些流程中,难免会有些问题,可能由于本地开发的环境差异或者宝塔的环境差异

排名不分先后

1. 进不了虚拟环境

这可能是我遇到最多的问题了

我把它归位宝塔版本的问题,例如我创建一个python项目

它给我生成的虚拟环境是这样的

这个虚拟环境中,是没有activate的,也就是说不能用source的命令进入虚拟环境

如果我们要安装模块,就只能这样做了

运行文件也只能这样运行

2. 没有requirements.txt

看看项目根目录下是不是有一个叫requirements.txt的文件

名字必须叫这个

pip freeze > requirements.txt

3. requirements.txt打不开或乱码

大概率是用powershell执行的导出命令

前面有这个PS开头的就是powershell

它导出的文件很多都有编码问题,最好还是换一下

改成cmd或者git中的bash

4. Bad Request (400)

配置中的ALLOWED_HOSTS没有配置

正常来说这里要配置为

ALLOWED_HOSTS = ['*']  # 运行访问的域名

5. 模块没有

这个就是一个很麻烦的问题了

最简单的,就是两边环境不一致,例如本地开发用的是python3.8,而服务器上用的是python3.6

通过看django官网我发现,python3.6只能支持django3.2.15,而django4.0以上得python3.8以上

https://docs.djangoproject.com/zh-hans/4.1/faq/install/#faq-python-version-support

当然,django安装失败之后,后面的模块也不会再安装了,所有你查看模块的时候,就只有几个模块,估计就是这么回事了

如何解决

保证开发环境的一致性,本地用什么版本的python,线上就用什么版本,数据库也是同样的道理

6. admin的静态文件加载不出

一般来说,nginx静态文件配置正确的话,首页的静态文件肯定是可以出来的

如果首页的静态文件没有出来,那就看看服务器上有没有static文件,也可能是打包的时候漏了(概率极低)

但是admin目录下的静态文件不出现就经常发生了

一般来说都是没有执行导出静态文件这个命令

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'feng_static')  # 收集的到feng_static目录

# 执行这个命令收集项目中所有的静态文件
python manage.py collectstatic

这个命令执行之后会在项目根目录下生成一个feng_static的目录,这个目录下除了有你的静态文件,还有django-admin的静态文件,把之前的static删掉,然后把feng_static改名为static就OK了

建议这个命令在本地执行,避免后续忘记,如果非要在服务器上执行,记得进虚拟环境

7. 没有表生成

如果导入sql文件之后,没有一张表生成,那多半是sql文件格式有问题

多半是用powershell导出的,换成cmd再次导出再导入试试

还有一个问题就是本地开发的版本过高

8. 部分表没有

如果导入sql文件之后,只有部分表生成,那么很有可能就是开发和线上数据库版本不一致

例如本地mysql版本是8系列,而线上却是5系列

那么很有可能就是在本地的部分表中使用到了5系列没有的字段,例如JSONField

有两种解决方案

  1. 将线上的mysql版本改成和本地一样的版本,但是如果你有很多应用在运行,那就比较蛋疼了
  2. 改本地代码,不要用那些高版本才有的字段,代码比较多,改起来也蛋疼,所以啊,保证环境一致是多么的重要

总结

以上就是使用宝塔部署django项目常见问题了,只要这些问题避免了

5分钟部署项目完全不是问题