宝塔面板部署django项目

安装Python项目管理插件

我们在宝塔面板左边的‘软件商店’里选择‘宝塔插件’,找到‘Python项目管理’这个插件进行安装。

(注意:最新的宝塔版本已经更新,安装项目管理器的时候会让你选择安装的版本,建议选1.9的。)

安装项目所需要的Python版本。

安装成功之后,我们点击设置。

然后出现如下界面:

我们在版本管理里安装我们需要的Python版本。这里我以3.7.2为例,选择了国内的节点,国内节点安装会快一些。等一会就会安装成功。

添加项目站点

域名处填写自己的域名即可,没有域名填写服务器IP地址。

上传Django项目源码。

留意:在打包项目源码之前,先在本地环境使用下面的命令把环境依赖包导出到requirements.txt文件里,并把这个文件存放在项目目录下,这一步奏非常重要,请务必记得操作。

导出命令:

pip freeze > requirements.txt 这一步操作好之后,我们就通过下面的步骤把项目源码上传上到服务器上去。

解压项目

解压成功之后,就像下面那样。留意路径,记得源码一定要解压到根目录里。然后再检查一下,项目里有没有requirements.txt这个文件。

添加uwsgi配置文件uwsgi.ini

留意:新建一个空白文件,文件名为uwsgi.ini。新建成功之后输入如下代码,然后保存:

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:8997
#配置项目路径,项目的所在目录
chdir=/www/wwwroot/www.django.cn/
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录
wsgi-file=myblog/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log

这里面,我们最需要留意的是项目路径和wsgi.py所在的目录。

修改网站配置

左侧网站,然后点击网站名,在弹出的窗口里找到'配置文件',然后配置文件里输入如下代码:

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/; #静态资源路径
      }

里面的端口、路径都要和uwsgi.ini里的一致。

Python项目管理插件里添加项目

在左右的软件商店里找到Python项目管理插件,然后点击设置,添加项目。里面的各种选项很简单,按实际情况填写就行。

值得说的就是那个端口,端口要和uwsgi.ini里面的那个端口一致。如果有多个项目的话,不同的项目要填写不同的端口。端口随便填写,只要不与其它常用软件端口冲突就好。

留意:

使用Python项目管理插件新建项目成功之后,会自动在项目j源码目录里创建一个虚拟环境,虚拟环境目录一般都是以项目名_venv形式命名的。

进入虚拟环境方法:

在命令行输入 source 项目路径/项目名_venv/bin/activate 如:

source /www/wwwroot/myblog/myblog_venv/bin/activate 项目管理器默认使用pip安装项目根目录requirements.txt内的模块,这也是之前我强调把环境依赖包文件放到项目目录下的原因,如有其他模块需要安装请手动进入虚拟环境安装。

以上配置完成之后,基本已经部署完毕。我们在浏览器里访问我们的域名,就能查看到网站。

解决管理后台样式丢失

如果后台样式丢失了,如图:

解决办法:

在宝塔面板里,点击网站路径进入项目路径下,找到settins.py文件,我们在末尾处添加静态资源收集路径

把APP静态资源收集到指定的目录下,这里我收集到static目录下

STATICROOT = os.path.join(BASEDIR, 'static')

之后在SSH终端进入项目虚拟环境: source /www/wwwroot/myblog/myblog_venv/bin/activate 成功进入虚拟环境会出现如下标记:

出现项目名_venv这个标记,才说明已经成功进入虚拟环境。

然后我们使用下面的命令收集静态文件:

python manage.py collectstatic

收集成功之后,刷新后台页面,样式就恢复正常。

特别说明:如果安装的Python项目管理器2.0或以上版本,则虚拟环境目录为MD5_venv形式的虚拟环境目录,并且虚拟环境目录bin中并没有activate文件,所有无法激活虚拟环境运行python manager命令。 这个时候可以使用虚拟环境中的可执行文件直接运行命令如下:

abe3721d-6626-492d-8207-9708728ff5a6_venv/bin/pip3 list
abe3721d-6626-492d-8207-9708728ff5a6_venv/bin/python3 manager collectstatic

不用非要进入虚拟环境哈哈,山不过来,我就过去。

第二,我们安装的python插件如果我们有修改,则可能需要上传文件到虚拟环境中替换文件 如果ftp上传提示权限不足FTP上传文件,提示553 Can't open that file: Permission denied 原因:目录的所属组,所属用户属于root, 导致FTP无法上传, 修改组和所属用户为www即可 进入虚拟环境目录运行以下命令修改目录的用户组即可

chown -fR www ./*
chgrp -fR www ./*

使用supervisor守护进程守护 django uwsig

首先安装守护进程,在软件商店搜索supervisor 安装即可

安装后在添加要守护的进程之前先修改一下python项目管理的进程的配置:添加虚拟环境

virtualenv=/www/wwwroot/www.django.com/jpshop_venv
#pidfile = uwsgi.pid
#daemonize = uwsgi.log

添加守护进程,进守护进程添加守护进程设置如图:

然后启动即可

至此教程结束。

问题整理:

访问显示出现 Internal Server Error 之类的错误的话,可能是程序不能正常运行的原因。请进入虚拟环境下,使用python manage.py runserver 命令运行项目,看项目能不能正常运行,不能正常运行就按错误提示进行解决就好。程序能正常运行使用项目管理器重启一下项目就能正常访问。

2、如果出现:Django运行提示:SQLite 3.8.3 or later is required (found 3.7.17) 这样的错误,请按这篇文章操作。https://www.django.cn/forum/forum-21090.html

3、如果在第十二步建立项目时提现出错,请把“是否安装模块依赖”这个选项去掉,等项目建立完成之后再进入虚拟环境手动安装依赖模块。

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2023年1月6日 12:09