阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

部署方式

nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5 -----使用宝塔面板快速部署

系统环境

阿里云服务器,1核2g centos7.6 安全组全部放行(按需求,宝塔需要的端口和Django的端口一定要放行,部署完后可以再关端口);
mysql5.7(新版宝塔已经可以安装8.0不过需要2核的服务器才行,我是不太行了,根据调试环境的mysql版本选择) nginx1.18,python项目管理器1.9 ;

Django项目结构

此次主要是演示宝塔面板部署python项目,所以我只建了一个基本的Django项目 内含一个app,一个html和一些css js文件。

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

使用shell登录阿里云服务器下载面板

以下链接介绍了宝塔安装教程, 端口设置,面板安装都有,

https://chenyunzhi.blog.csdn.net/article/details/107326630

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

使用以上地址打开面板,然后登录

下载所需要的环境

再到软件商城,我们只需下载需要的就行,nginx,mysql,ftp,和Python项目管理器 1.9

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

配置文件

配置静态文件

首先感谢这篇文章
进入setting.py文件
在最后面添加

STATIC_ROOT=os.path.join(BASE_DIR,'static') 

然后terminal中输入以下命令就可以打包静态文件了,注意我这里有165个静态文件,你看看你是不是零:

python manage.py collectstatic 

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
打包好了之后在注释,添加以下命令

STATICFILES_DIRS=( os.path.join(BASE_DIR,'static'), ) 
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

获取项目模块(包)

python3 -m pip freeze > requirements.txt 
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

设置数据库

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

数据库导入sql时候出错,导不进去

sql版本不一样,比如说我,我在本地使用的MySQL是8.0版本的,宝塔里面是5.6,所以我导出来的sql编码有点区别,这里我们可以调一下编码

导入项目

文件导入wwrwoot目录中
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
然后等待它上传就行
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
上传完成后在settings.py将debug改为False ,database配置为刚才记录的数据库名 用户名和密码可以直接在宝塔面板里编辑
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
如果view中使用命令调用数据库也必须得修改
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

配置环境

打开宝塔里已经安装好的python项目管理器,在版本管理里先安装所需的python版本,我这用的是3.8.5(尽量和本地运行项目的python一致,避免踩肯),注意:python项目管理器所安装的python版本和各种依赖模块都是在虚拟环境中,全局shell里调用不了。

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

路径是项目的根路径
端口不要设置成8000会和nginx的端口冲突

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
然后他会自己加载模块

这里注意一下:我刚开始总会提示创建模块失败,原因是我的这个文件的目录创建了中文,修改成英文就好了

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

模块创建好了之后会在项目里面生成一个虚拟环境的文件

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

搞定模块后,先暂停正在运行的python项目,还有一些坑在这里。在xhsell中进入宝塔终端,切换到项目根目录,启用项目虚拟环境

cd /www/wwwroot/RecruitDataVsible-master1/ source ./ccccc_venv/bin/activate python3 manage.py runserver 
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

配置uwsgi

static-map = /static=/www/wwwroot/RecruitDataVsible-master1/static 

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
如果不添加就报错主项目中的运行文件就报错,如果你的文件出错也可能会出现这种错误

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

保存后点“重启”重启项目
在浏览器地址栏里输入 服务器公网IP:8001 刚才部署的项目已经可以通过ip和端口访问了
首先得开启端口
在安全里打开数据库和项目的端口,阿里云案例那边也得开教程地址
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

这里如果没有正常访问的同学请检查以下几项配置
(1)是否收集静态文件至static
(2)DEBUG是否关闭
(3)宝塔面板-安全里是否放行了8000端口和8001端口
(4)云服务器安全组里是否放行了8000端口和8001端口
(5)静态文件路径是否有错误

配置nginx反向代理

(1)在项目管理点击“映射”,输入已经提前解析到此服务器的域名(就是你购买的域名)
我这里已经配置好了,就不点击了

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
2)在“网站“里找到刚才生成的项目,在”设置“里找到”反向代理“,点击”配置文件“
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
在文件中添加以下代码

location /static/     {     	alias /www/wwwroot/RecruitDataVsible-master1/static/;     } 
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

重新启动nginx和配置管理器
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

错误:2021/04/09 11:05:28 [emerg] 279778#0: bind() to 0.0.0.0:8000 failed(98: Address already in use
原因: 端口被占用,我猜是因为nginx也是用8000端口,所以如果你的项目是8000端口必须改一下

输入域名就可加载出来了
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

将宝塔面板-安全里放行的8000端口删除,这样别人只能通过域名访问网站,不能通过IP:端口来访问了。
云服务安全组里的8000端口可以不删,因为一台服务器可能会部署多个Django项目,每次都要重新开很麻烦

错误

阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5

参考文章

使用宝塔面板的python项目管理器部署django项目

宝塔面板成功部署Django项目流程

宝塔部署django的坑

MySQL

Navicat运行sql文件出现 [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘ 错误原因

使用宝塔面板创建数据库并用navicat连接

本人博客:https://blog.csdn.net/weixin_46654114
本人b站求关注:https://space.bilibili.com/391105864
转载说明:跟我说明,务必注明来源,附带本人博客连接。

请给我点个赞鼓励我吧
阿里云服务器使用宝塔面板部署django项目——nginx1.18+uwsgi+python3.8.5+django3.1.4+mysql5.6.5