Django项目部署详细笔记

个人学习笔记,参考文章如下:
https://blog.csdn.net/tr_136163798/article/details/120901363
https://www.dusaiphoto.com/article/71/
https://docs.djangoproject.com/zh-hans/3.2/howto/static-files/
https://docs.djangoproject.com/zh-hans/3.2/howto/static-files/deployment/

本文第一时间发表在我的个人博客上,欢迎访问:
https://sunguoqi.com/2021/12/15/Django_04/

  按照 Django 官方文档的指引,我们已经做好了一个投票应用。我们是在本地开发的,项目最终上线是要部署到服务器上的,本篇笔记记录了我个人部署Django项目的整个过程,仅供参考。

文章目录

  • 一、新建站点
    • 1、使用宝塔面板创建一个站点
    • 2、配置 SSL 证书(可不做)
  • 二、打包程序
    • 1、导出依赖
    • 2、打包上传
    • 3、解压
  • 三、环境安装
    • 1、安装虚拟环境
    • 2、创建虚拟环境
    • 3、激活虚拟环境
    • 4、安装依赖包
  • 四、配置项目数据库
    • 1、修改项目数据库配置信息
    • 2、迁移数据库
  • 五、启动项目
    • 1、修改项目设置
    • 2、创建后台管理超级用户
    • 3、启动项目
  • 六、Screen 进程托管
    • 1、安装 screen
    • 2、创建一个 screen
    • 3、启动项目
  • 七、Nginx 反向代理
  • 八、部署完成
    • 1、登录后台
    • 2、添加投票
    • 3、进行投票
    • 4、提交数据
  • 九、DEBUG=False?
    • 1、配置静态文件路径
    • 2、收集静态文件
    • 3、配置 Nginx
    • 4、启动项目

一、新建站点

1、使用宝塔面板创建一个站点


站点创建成功!

2、配置 SSL 证书(可不做)


配置成功

二、打包程序

1、导出依赖

  本地打开项目,执行以下命令导出项目依赖包。

pip freeze > requirements.txt

2、打包上传

  关闭 pycharm,把项目 mysite 做成压缩包,使用宝塔面板上传到网站目录/www/wwwroot/django.sunguoqi.com

3、解压

  宝塔面板可以直接解压文件,不必在命令行中操作。

三、环境安装

1、安装虚拟环境

  使用 Xshell 远程主机,进入网站目录,执行以下命令安装虚拟环境。

pip3 install virtualenv

2、创建虚拟环境

  进入项目目录

  执行以下命令创建虚拟环境。venv 为虚拟环境的名称,可自定义

virtualenv venv

3、激活虚拟环境

cd venv
source bin/activate

4、安装依赖包

cd ..
 pip3 install -r requirements.txt

报错

ERROR: Failed building wheel for mysqlclient

解决方案

  分别执行下以下命令

sudo apt-get install python3 python-dev python3-dev
sudo apt-get install build-essential libssl-dev libffi-dev
sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev

  重新安装数据库引擎

pip3 install mysqlclient

成功

  在执行下包安装命令

pip3 install -r requirements.txt

  因为安装数据库引擎的时候程序终止了,下面的包还没有装。

成功

四、配置项目数据库

1、修改项目数据库配置信息

2、迁移数据库

python3 manage.py migrate

成功

五、启动项目

1、修改项目设置

mysite/setting.py

ALLOWED_HOSTS = ['*']

2、创建后台管理超级用户

  因为未导入开发时的数据库数据,所以我们现在没有后台账户数据,执行以下命令创建超级用户。

python manage.py createsuperuser

3、启动项目

  开放你的主机 8000 端口,执行以下命令。

python3 manage.py runserver 0.0.0.0:8000

  项目可以正常启动!

六、Screen 进程托管

  当 SSH 会话关闭时,Web 服务也一起被关闭了,导致网站无法连接。我们需要让进程 24 小时不间断的工作,这里我是用 screen 实现的。

1、安装 screen

apt-get install screen

2、创建一个 screen

screen -S django_study

3、启动项目

python3 manage.py runserver 0.0.0.0:8000

七、Nginx 反向代理

  我们目前还只能用IP:Port的方式来访问 web,当最终项目上线一般都是用域名去访问的。我们项目的域名对应是django.sunguoqi.com
  利用 Nginx 的反向代理就可以将域名和端口建立关系了。
在宝塔面板上配置

八、部署完成

  访问django.sunguoqi.com/polls/,没有可用的投票,因为我们后台没添加数据。

1、登录后台

  访问django.sunguoqi.com/admin/

2、添加投票

3、进行投票

  访问django.sunguoqi.com/polls/进行投票。

4、提交数据

九、DEBUG=False?

  本质上我们目前项目使用的还是 Django 自带的 web 服务器,只是用 Nginx 做了一个反向代理。
  当我们正式部署项目的时候,我们需要关闭调试,当我们不做任何更改便启动项目,便会出现如下报错。

  在项目开发阶段,DEBUG=True 的时候,Django 会用自带的的 web 服务来处理静态文件,但他的性能不是很好。所以在项目部署阶段,DEBUG=False 的时候,Django 便不在管理静态文件了,Django 想让我们把静态文件交给 Nginx(或者其他 web 服务器)来处理。
  这个时候就需要我们处理下静态文件。

1、配置静态文件路径

  首先我们将 setting.py 里面的相关配置改成这个样子。

import os# 关闭调试模式
DEBUG = False# 允许的服务器
ALLOWED_HOSTS = ['*']# 静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

2、收集静态文件

  执行以下命令,对项目中的静态文件进行收集,收集后存放的位置就是我们上面设置的静态文件收集目录。

python3 manage.py collectstatic

3、配置 Nginx

  在站点配置文件中加入以下内容。

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|woff|woff2)${expires      30d;}location ~ .*\.(js|css)?${expires      12h;}location ~ /\.{deny all;}

4、启动项目

  ok 了!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部