宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS

  这篇文章记录了使用宝塔面板部署Django项目的详细过程以及各种Bug的解决办法,将作者当初遇到的问题和看到过许许多多的资料集成起来,希望能够给后来者一个参考。

一、项目部署

1. 服务器环境

  • 阿里云轻量应用服务器(1核 - 2GB内存 北京)
    宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第1张图片
  • 系统镜像(CentOS 7.3)
  • 宝塔面板(7.5.1)

2. 本地项目打包

在本地电脑(自己的电脑)的项目目录下执行本章节指令
(在cmd或pycharm自带的terminal窗口中)

2.1 项目依赖环境导出
 pip freeze > requirements.txt

【指令解释】将本项目所依赖包的信息全部导出,以便于在服务器上安装项目运行环境
【特别注意】执行后会在项目目录下生成requirements.txt文件,如果内容为空则导出失败,尝试升级pip或使用pip3
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第2张图片

2.2 静态文件打包(可以跳过)
 python manage.py collectstatic

【指令解释】打包前端页面用到的css等样式文件,指令执行后会生成static文件夹。进一步还需要更改settings.py的设置,由于样式文件不影响项目运行,大佬们请参考静态文件部署

2.3 项目打包

 将项目文件打包为压缩文件,便于上传至服务器
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第3张图片
【特别注意】为了便于将项目文件解压到服务器网站目录下,打包时进入项目目录,选中全部文件后进行压缩。不要直接压缩项目文件夹

3. 部署服务器

 服务器上应该已经安装好nginx

3.1 安装python项目管理器

宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第4张图片
服务器宝塔面板->软件商店->应用搜索“python”->安装“Python项目管理器 1.9”

3.2 安装python项目环境

  打开Python项目管理器,选自一个与自己项目匹配的python环境进行安装(所需时间较长,5-30分钟左右)
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第5张图片

3.3 创建站点

  添加一个站点,作为Django项目服务的网站站点。
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第6张图片
  注意到站点添加成功,且在/www/wwwroot/下生成了该站点的文件夹。
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第7张图片
若服务器未绑定域名,你想使用ip地址访问Django项目的网站,需要设置默认站点。
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第8张图片

3.4 上传Django项目源码
  • 删除站点文件夹下如图所示的两个文件
    宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第9张图片
  • 将项目源码压缩包上传,并解压,最终效果如下图
    宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第10张图片
3.5 添加和修改配置文件
  • 添加uwsgi配置文件
    宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第11张图片
    在站点文件下新建文件uwsgi.ini,并写入以下配置代码
#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接(注意此处端口号)
socket=127.0.0.1:8997
#配置项目路径,项目的所在目录(改为自己项目目录路径)
chdir=/www/wwwroot/django.com/
#配置wsgi接口模块文件路径,wsgi.py这个文件所在的目录(改为自己项目目录路径)
wsgi-file=StudyProgram2/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log`

  注意配置文件中socker的端口号(例8997),后面的配置文件端口号要与此一致。

  • 修改站点配置文件
    宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第12张图片
    在站点配置文件下添加如下代码,并把路径改为自己项目的
location / {
	include uwsgi_params;
	uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样
    uwsgi_param UWSGI_SCRIPT myblog.wsgi;  #wsgi.py所在的目录名+.wsgi
    uwsgi_param UWSGI_CHDIR /www/wwwroot/www.django.cn/; #项目路径
}
location /static/ {
	alias /www/wwwroot/www.django.cn/static/; #静态资源路径
}
3.6 添加和启动Django项目

 在Python项目管理器中添加Django项目,如下图所示
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第13张图片
恭喜你,Django项目已经部署完成,如下图所示,还有一些小的修改项目就可以成功运行了。
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第14张图片

4. 特别修改

此时使用浏览器网站,会发现页面提示Internal Server Error或403 Forbidden
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第15张图片
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第16张图片
因为此时还需要更改两个地方才能让项目正常运行

4.1 学习如何进入项目的虚拟环境

对项目依赖环境的增删改以及项目的运行和管理都要在项目的虚拟环境下进行,这个虚拟环境是在Python项目管理器里添加项目时生成的文件夹app1_venv。
使用如下指令进入虚拟环境,其中路径中的django.com和app1_venv更换成自己项目的

 source /www/wwwroot/django.com/app1_venv/bin/activate
 cd /www/wwwroot/django.com

宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第17张图片
在虚拟环境中,可以为项目安装新的依赖包,升级或降级依赖包的版本,并测试项目的运行。
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第18张图片
如图所示,测试项目运行,可根据报错信息进行Debug

4.2 降低Django版本

在虚拟环境下运行项目时提示
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
提示我们的sqlite版本和django版本不匹配,解决办法参考此文章。
我们选择使用降低Django版本的方法(升级sqlite版本的方法使用过后仍无法运行,只能使用Django2版本,有大佬知道原因可以私聊或评论区交流)

进入项目虚拟环境运行
卸载django:   pip uninstall django
安装低版本:   pip install django==2.1.8
4.3 解决python版本和Django2不兼容问题

修改如下路径文件的代码
/www/wwwroot/django.com/app1_venv/lib/python3.8/site-packages/django/db/backends/sqlite3/creation.py
下图为源代码
在这里插入图片描述
下图为修改后的代码
宝塔面板快速部署Django项目 阿里云轻量应用服务器 Django CentOS_第19张图片
具体原因参考此篇博客

 恭喜,此时你的项目可以成功运行了,请在Python项目管理器中重启项目,然后查看你的网站吧。

如果这篇文章对你有帮助的话,希望能够给一个大大的赞哦

二、特别注意

[暂未更新]

三、各种bug的解决

[暂未更新]

四、其他文章

升级服务器Python版本
升级Sqlite版本

你可能感兴趣的:(django)