当前位置:   article > 正文

宝塔部署Django 脱坑记

宝塔部署django

       本文参考了以下文章,通过自己的摸索脱坑。与参考的文章有细微差别有可能是使用的软件版本不一样引起的。

使用宝塔面板快速部署Django项目_宝塔 go项目部署_一越王超的博客-CSDN博客

使用宝塔面板快速部署Django项目-Django社区,Django中文网,django教程,Django!

好开始我小白的踩坑记(第一次用Django开发):

一、先说坑

  1. PyCharm 里引用模板页时{% extends 'moban/mb.html' %} {% extends 'moban\mb.html' %} 一样(/和\),但是在部署后第二种方式会找不到页面巨坑
  2. 刚开始部署时不要把 DEBUG 设置为False,因为如果有问题调试模式会更容易找到出错 的地方,但是部署成功后一定要把DEBUG 设置为False;
  3. 尽量不要用到不常用模块,会导致部署不成功,由于我的开发环境是windows而且又用到了与系统交互所以有引起win32模块根本就不能用到liunx里(收集时出错)大坑
  4. 字体:我是用的windows开发用的字休用的font = ImageFont.truetype('arial.ttf', size=40),在liunx系统内无法使用,设置为font = ImageFont.truetype('NotoSans-Regular.ttf', size=40)
  5. 新版宝塔修改网络配置不是在宝塔面板的网络里而是在Nging管理里;
  6. 如果以前在Python项目管理器里新增过项目且文件是一样的,在重新上传的时候最好用一样的IP,不然会显示找不到网页,搬到其他地方去了;
  7. 特别注意PyCharm的自动纠错给最终部署带来的负面影响(就旬第1点里说的在PyCharm里运行没有问题但是部署了就不行,类似其实还有很多)巨坑

二、部署

2.1部署流程图

2.2安装宝塔面板和相应支持库

2.2.1安装宝塔面板

2.2.1.1在线安装(有外网服务器的小伙伴):

 安装地址:宝塔官网

点击进入后显示如下:

下面的注意事项来自官网:

  • 安装前请确保是 【全新的机器】 ,没有安装其他任何环境,否则会影响您的业务使用!
  • 填写好服务器信息, 点击“立即安装到服务器”即全自动完成安装 ,在安装过程中请勿刷新页面!
  • 数据传输过程中加密处理,不保存任何账号密码信息,请放心使用。
  • 系统兼容性推荐:Centos7.x > Debian10 > Ubuntu 20.04 > Centos8 stream > Ubuntu 18.04 > 其它系统
  • 推荐浏览器:Chrome、火狐、edge,国产浏览器请使用极速模式访问面板登录地址
  • 如需在线安装请输入服务器公网IP地址

这个我就不过多介绍了,我用的是命令安装。

2.2.1.2命令安装:

Linux面板8.0.2安装脚本

安装代码如下(不会自行度娘):

  1. #Centos
  2. yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
  3. #Ubuntu/Deepin
  4. wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
  5. #Debian
  6. wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec
  7. #万能
  8. if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec
  9. #国产龙芯
  10. wget -O install_panel.sh https://download.bt.cn/install/0/loongarch64/loongarch64_install_panel.sh && bash install_panel.sh ed8484bec
 2.2.1.3面板介绍

我用到这些模块的顺序是:

软件商店(安装Python项目管理器)----数据库(增加我要用的Mysql数据库)----网站(添加站点)-----文件(上传项目文件,查看日志文件、修改配置、模板、视图文件等,他内置有代码编辑器) 这个后面说

2.2.2安装支持库

我用的是Django4,数据库是Mysql(切记Django4 不支持Mysql8以下 ),我安装宝塔面板时没有截图用下别人的:

我是在自己的内网服务器上空间多的是,所以在推荐LNMP里的我全装了,记得一定要选MySql8

点击一键安装就是·····等待

可以关掉提示窗口干其他的,当然如果没有安装完成你什么也干不了。想要再打开点面板左上角你IP或域名的右边的提示数。如下:

2.2.3安装第三方应用

2.2.3.1 Python项目管理器(必装)

进入软件商店,在应用分类选全部,在应用搜索内输入“python”回车(引号不输入),在下方出来的结果双击安装。

必装应用如下:

2.3添加数据库

点击:数据库----添加数据库----填写数据库名(会自动生成同名的用户名可以自行修改)-----点击提交。由于我开发的时候就是用的这个数据库就没有再做迁移。个人建议导入开发数据库结构(如果开发数据也要保留就都导入)。

2.4添加网站

点击:网站----添加站点----填写完成提交

2.5上传项目文件

2.5.1上传前准备

2.5.1.1 修改 settings.py,需要修改项都做了中文备注
  1. #引入OS
  2. import os
  3. #BASE_DIR就是你新增站点时的那个根目录www/wwwroot/你的域名或IP
  4. BASE_DIR = Path(__file__).resolve().parent.parent
  5. # SECRET_KEY = '***你的KEY***' 注释掉,在根目录新建key.txt写入你的KEY
  6. #从key.txt读取你的key到DJANGO_SECRET_KEY
  7. with open('key.txt') as f:
  8. DJANGO_SECRET_KEY = f.read().strip()
  9. #如果你的DJANGO_SECRET_KEY不为空就赋值,否则使用默认“你的KEY”,在开发环境用KEY.TXT,在部署用默认文本
  10. SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', '***你的KEY***')
  11. # 设置Django静态文件的前缀为"/jgrygl/static/",这样在模板中引用静态文件时就可以使用这个前缀了, 比如在模板中引用一个CSS文件,就可以使用`{{ STATIC_URL }}css/style.css`这样的语法
  12. STATIC_URL = '/你的项目目录/static/'
  13. # 设置Django静态文件的根目录,你的static文件夹在哪里就写哪里,这个目录会被Django用来收集所有的静态文件
  14. STATIC_ROOT = os.path.join(BASE_DIR, '你的路径/static')
  15. #设置DEBUG为环境变量DJANGO_DEBUG的值,如果DJANGO_DEBUG不存在则默认为True
  16. DJANGO_DEBUG = ''
  17. DEBUG = bool(os.environ.get('DJANGO_DEBUG', True))
  18. TEMPLATES = [
  19. ...
  20. #设置模板的搜索路径为BASE_DIR同级目录下的'jgrygl/templates'目录
  21. 'DIRS': [BASE_DIR / '你的路径/templates']
  22. ...
  23. ]
  24. #数据库配置
  25. DATABASES = {
  26. 'default': {
  27. 'ENGINE': 'django.db.backends.mysql',
  28. 'NAME':'你的数据库名',
  29. 'USER': '你的用户名',
  30. 'PASSWORD': '你的密码',
  31. 'HOST': '127.0.0.1', #如果你的数据库在其他地方就写你的地址
  32. 'PORT': '3306', #你的端口
  33. }
  34. }
2.5.1.2 导出环境依赖包

在PyCharm 终端内输入: 

pip freeze > requirements.txt

运行完成生成 requirements.txt 文件,注意图中的几个坑,不常用或错误的模块或开发平台不一致的模块 都要删除。

2.5.1.3 打包

把你的项目压缩打包为 .zip文件,只能是zip(rar 识别不了)

2.5.2上传

双点击网站里新增站点的根目录或文件----选择目录----上传(下图)

2.5.1.3 解压

文件上传完成,进入到根目录进行解压操作。

大家注意这里有个坑,上面的解压文件窗口,我上传的文件是tjjg.zip解压到的也是根目录,点击 解压后实际的情况是他整个解压到了“ /www/wwwroot/你的域名/tjjg ”文件夹内,我们需要进入tjjg文件夹把里面所有的文件剪切出来复制到“ /www/wwwroot/你的域名/ "根目录内(要不然你就要到设置内把根目录改成“ /www/wwwroot/你的域名/tjjg ”)。

2.6 python项目管理器添加项目

2.6.1添加项目

点击  软件商店--python项目管理器-- 添加项目

项目名称:符合命名规范不能有中文;

python版本:按你的环境选择; 

框架:django; 

启动方式:uwsgi

项目路径:先你的网站根目录(也就是你上传项目文件的目录)日志和启动两个目录会自动生成

端口:选没有占用的;

勾选安装模块依赖(就是我们生成的requirements.txt里面的模块)、开机启动,如果需要守护进程须在运行项目的用户选择root,并事行在软件商店内安装官方的“进程守护管理器”

点击确定后系统会自动安装你需要的python等所有你需要的环境、模块、框架(如果这步顺利走完那恭喜你很快就能访问你的项目了),安装的东西比较多所有等待时间可能较长。添加完成后如下 图。

你可以在这里对模块进行管理。

使用Python项目管理插件新建项目成功之后,会自动在项目j源码目录里创建一个虚拟环境,虚拟环境目录一般都是以xxxxxxx_venv形式命名的。(由于我的模块有很多不能识别的所以我我没能成功进入虚拟环境,我就不写了)

进入虚拟环境方法:

#1.9版本的:
source /www/wwwroot/www.django.cn/myblog_venv/bin/activate


#2.0版本的
/www/wwwroot/www.django.cn/d69daf27a976191fa87ff9_venv/bin/python3 manage.py makemigrations
/www/wwwroot/www.django.cn/d69daf169413721fa87ff9_venv/bin/python3 manage.py  migrate
/www/wwwroot/www.django.cn/d69daf169413721fa87ff9_venv/bin/python3 manage.py  runserver
2.6.1.1 添加项目失败

我遇到的在安装环境时跳出出错,你可以在/www/wwwroot/你的无名或IP/****_venv/bin

文件里找一下是不是有以“~”开头的文件删除掉就可以了。删除后再重新添加项目。

2.6.2 设置 uwsgi 启动文件

添加项目成功后,系统会自动在根目录里新建一个uwsgi.ini文件,你可以在上图中的配置或者在文件里找到他双击进行编辑。编辑配置文件前一定要关闭项目不然你修改后保存时会提示你端口被占用导致保存失败

  1. [uwsgi]
  2. chdir = /www/wwwroot/你的域名或IP/
  3. # 切换uwsgi工作目录
  4. wsgi-file= /www/wwwroot/你的域名或IP/你的项目名/wsgi.py
  5. # 指定wsgi入口文件
  6. processes = 4
  7. # 启动4个工作进程
  8. threads = 2
  9. # 每个工作进程启动2个线程
  10. master = true
  11. # 启用主进程模式
  12. pidfile=uwsgi.pid
  13. #进程文件
  14. http = 0.0.0.0:9999
  15. # 监听9999端口(网站入口要与Nginx里的uwsgi_pass一致,改成你自己的端口)
  16. logto = /www/wwwroot/你的域名或IP/logs/error.log
  17. # 日志输出到指定的文件
  18. chmod-socket = 660
  19. # 设置socket文件的权限
  20. vacuum = true
  21. # 进程退出时清理资源
  22. uid=root
  23. # 设置uwsgi进程运行所使用的用户
  24. gid=root
  25. # 设置uwsgi进程运行所使用的组
  26. max-requests = 1000
  27. # 每个工作进程最大请求数
  28. daemonize=/www/wwwroot/你的域名或IP/uwsgi.log
  29. #配置dump日志记录

2.6.3修改网站配置

其他的教程说的是在网站的配置里修改如下数据,但是我测试了很多次都无法保存,提示出错。

我的修改方法是:在软件软件商店--双击 Nginx -- 点击配置修改 -- 在 server{}内加入如下代码

  1. location / {
  2. include uwsgi_params;
  3. uwsgi_pass 127.0.0.1:9999; #端口要和uwsgi里配置的一样
  4. uwsgi_param UWSGI_SCRIPT 你的项目名.wsgi; #wsgi.py所在的目录名+.wsgi
  5. uwsgi_param UWSGI_CHDIR /www/wwwroot/你的域名或IP/; #项目路径
  6. }
  7. location /static {
  8. #如果你的static目录就在根目录下就是alias /www/wwwroot/你的域名或IP/static/;
  9. alias /www/wwwroot/你的域名或IP/你的存放static目录的目录/static/;
  10. }

三、完成

到这里不出意外你就能访问你的网站了。下面是我的页面

但是不出意外就是意外。

如果出现网站访问不了、CSS样式不对、静态文件不对,你可以把你的settings.py中的 DEBUG = True 设置为真这样你就可以在网页端看出出错信息(处理完成一定要把 DEBUG设置为False),并和/www/wwwroot/你的域名或IP/uwsgi.log(在python项目管理里的配置的daemonize=/www/wwwroot/你的域名或IP//uwsgi.log)的日志信息进行排查错误并度娘。

总知:我这个小白反反复复搞一个星期,各种度娘,各种不对,大家要有耐心。当看到主页显示出来的时候那个开心啊。大家不要放弃各种错误我们一个一个的处理,不要怕改配置文件最多只是重来一次(和打副本差不多)。由于各种环境、版本的升级可能我现在的操作也不合适以后的环境,主要还是大家要有耐心,有耐性。写给小白的自己~~~~~~~~~~~~~~。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/996064
推荐阅读
相关标签
  

闽ICP备14008679号