这篇文章记录了使用宝塔面板部署Django项目的详细过程以及各种Bug的解决办法,将作者当初遇到的问题和看到过许许多多的资料集成起来,希望能够给后来者一个参考。
在本地电脑(自己的电脑)的项目目录下执行本章节指令
(在cmd或pycharm自带的terminal窗口中)
pip freeze > requirements.txt
【指令解释】将本项目所依赖包的信息全部导出,以便于在服务器上安装项目运行环境
【特别注意】执行后会在项目目录下生成requirements.txt文件,如果内容为空则导出失败,尝试升级pip或使用pip3
python manage.py collectstatic
【指令解释】打包前端页面用到的css等样式文件,指令执行后会生成static文件夹。进一步还需要更改settings.py的设置,由于样式文件不影响项目运行,大佬们请参考静态文件部署
将项目文件打包为压缩文件,便于上传至服务器
【特别注意】为了便于将项目文件解压到服务器网站目录下,打包时进入项目目录,选中全部文件后进行压缩。不要直接压缩项目文件夹
服务器上应该已经安装好nginx
服务器宝塔面板->软件商店->应用搜索“python”->安装“Python项目管理器 1.9”
打开Python项目管理器,选自一个与自己项目匹配的python环境进行安装(所需时间较长,5-30分钟左右)
添加一个站点,作为Django项目服务的网站站点。
注意到站点添加成功,且在/www/wwwroot/下生成了该站点的文件夹。
若服务器未绑定域名,你想使用ip地址访问Django项目的网站,需要设置默认站点。
#添加配置选择
[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/; #静态资源路径
}
在Python项目管理器中添加Django项目,如下图所示
恭喜你,Django项目已经部署完成,如下图所示,还有一些小的修改项目就可以成功运行了。
此时使用浏览器网站,会发现页面提示Internal Server Error或403 Forbidden
因为此时还需要更改两个地方才能让项目正常运行
对项目依赖环境的增删改以及项目的运行和管理都要在项目的虚拟环境下进行,这个虚拟环境是在Python项目管理器里添加项目时生成的文件夹app1_venv。
使用如下指令进入虚拟环境,其中路径中的django.com和app1_venv更换成自己项目的
source /www/wwwroot/django.com/app1_venv/bin/activate
cd /www/wwwroot/django.com
在虚拟环境中,可以为项目安装新的依赖包,升级或降级依赖包的版本,并测试项目的运行。
如图所示,测试项目运行,可根据报错信息进行Debug
在虚拟环境下运行项目时提示
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
修改如下路径文件的代码
/www/wwwroot/django.com/app1_venv/lib/python3.8/site-packages/django/db/backends/sqlite3/creation.py
下图为源代码
下图为修改后的代码
具体原因参考此篇博客
如果这篇文章对你有帮助的话,希望能够给一个大大的赞哦
[暂未更新]
[暂未更新]
升级服务器Python版本
升级Sqlite版本