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

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

一、项目部署

1. 服务器环境

  • 阿里云轻量应用服务器(1核 - 2GB内存 北京)
    在这里插入图片描述
  • 系统镜像(CentOS 7.3)
  • 宝塔面板(7.5.1)

2. 本地项目打包

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

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

【指令解释】将本项目所依赖包的信息全部导出,以便于在服务器上安装项目运行环境
【特别注意】执行后会在项目目录下生成requirements.txt文件,如果内容为空则导出失败,尝试升级pip或使用pip3
在这里插入图片描述

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

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

2.3 项目打包

 将项目文件打包为压缩文件,便于上传至服务器
在这里插入图片描述
【特别注意】为了便于将项目文件解压到服务器网站目录下,打包时进入项目目录,选中全部文件后进行压缩。不要直接压缩项目文件夹

3. 部署服务器

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

3.1 安装python项目管理器

在这里插入图片描述
服务器宝塔面板->软件商店->应用搜索“python”->安装“Python项目管理器 1.9”

3.2 安装python项目环境

  打开Python项目管理器,选自一个与自己项目匹配的python环境进行安装(所需时间较长,5-30分钟左右)
在这里插入图片描述

3.3 创建站点

  添加一个站点,作为Django项目服务的网站站点。
在这里插入图片描述
  注意到站点添加成功,且在/www/wwwroot/下生成了该站点的文件夹。
在这里插入图片描述
若服务器未绑定域名,你想使用ip地址访问Django项目的网站,需要设置默认站点。
在这里插入图片描述

3.4 上传Django项目源码
  • 删除站点文件夹下如图所示的两个文件
    在这里插入图片描述
  • 将项目源码压缩包上传,并解压,最终效果如下图
    在这里插入图片描述
3.5 添加和修改配置文件
  • 添加uwsgi配置文件
    在这里插入图片描述
    在站点文件下新建文件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),后面的配置文件端口号要与此一致。

  • 修改站点配置文件
    在这里插入图片描述
    在站点配置文件下添加如下代码,并把路径改为自己项目的
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项目已经部署完成,如下图所示,还有一些小的修改项目就可以成功运行了。
在这里插入图片描述

4. 特别修改

此时使用浏览器网站,会发现页面提示Internal Server Error或403 Forbidden
在这里插入图片描述
在这里插入图片描述
因为此时还需要更改两个地方才能让项目正常运行

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

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

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

在这里插入图片描述
在虚拟环境中,可以为项目安装新的依赖包,升级或降级依赖包的版本,并测试项目的运行。
测试项目运行,可根据报错信息进行Debug
如图所示,测试项目运行,可根据报错信息进行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
下图为源代码
在这里插入图片描述
下图为修改后的代码
在这里插入图片描述
具体原因参考此篇博客

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

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

二、特别注意

[暂未更新]

三、各种bug的解决

[暂未更新]

四、其他文章

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值