首页 > 其他分享 >Django 文件上传项目部署

Django 文件上传项目部署

时间:2023-08-18 13:55:05浏览次数:40  
标签:部署 app upload django ssl Django 上传 middleware

Django 文件上传项目部署

相关文件准备

Dockerfile

Django项目的主要文件是manage.py,并且你的依赖包列表在一个名为requirements.txt的文件中,根据你的实际项目结构和需求。

# 使用一个基础镜像
#最小版镜像通常只包含了Python解释器和一些基本的系统工具
FROM python:3.8.10-slim-buster
# 设置工作目录
WORKDIR /app

# 复制项目文件到镜像中
COPY . /app

# 安装项目依赖
RUN pip install -r requirements.txt
RUN rm -f /app/requirements.txt

# 运行数据库迁移
RUN python manage.py migrate

# 暴露Django运行的端口号
EXPOSE 8000

# 启动Django应用
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

 

.dockerignore

忽略项目中的一些文件优化镜像大小

Dockerfile*
.dockerignore
.git
.gitignore
.env
*/bin
*/obj
README.md
LICENSE
.vscode

 

requirements.txt

在requirements.txt文件中,你可以定义你的项目所需的常用包及其版本。

在使用pip安装依赖时,可以使用以下命令:pip install -r requirements.txt

paramiko==2.7.2
requests==2.25.1
django==4.2.1
six==1.16.0

 

查看Django的版本

要查看Django的版本,你可以在项目的Python环境中执行以下命令:

import django
print(django.get_version())

 

这将会导入Django模块并打印出当前安装的Django版本号。

另外,你也可以在命令行中使用django-admin命令来查看Django的版本。打开命令行终端,并执行以下命令:

django-admin --version

 

 

项目代码

注意: 相关的秘钥和日志路径需要修改为: /app/app.log和/app/sleepy_bear.pem

 本次使用前面几章节编写的文件上传显示修改的Django项目,也可以使用其他自己的项目,曲意相通适当修改即可。

 

打包镜像

 docker build -t django-upload-service:v4 .

运行镜像

   
#运行测试
docker run -p 8000:8000 -v /data/app.log:/app/app.log django-upload-service:v4 --name file-upload-service
 

访问测试

 

 

配置域名及证书

server {
    listen 443 ssl;
    server_name unit-upload.xxxx.com;

    ssl_certificate  conf.d/xxx__xxxxx.com.pem;
    ssl_certificate_key conf.d/xxx__xxxx.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://172.31.0.12:8000;
    }
}



server {
    listen 80;
    server_name unit-upload.xxx.com;
    return 301 https://$host$request_uri;
}


### 访问
https://unit-upload.xxx.com/upload/

解决CSRF 403报错

Forbidden (403) CSRF verification failed. Request aborted. Even using the {% csrf_token %}

#模版配置csrf_token
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="file">
    <button type="submit">上传</button>
  </form>
  <a href="{% url 'file_list' %}">查看文件列表</a>

#配置文件去掉中间件csrf,注释# 'django.middleware.csrf.CsrfViewMiddleware',
#file_upload/file_upload/settings.py
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'file_upload_app.middleware.StatusCodeMiddleware',
]

 

 

 

 

 

 

 

标签:部署,app,upload,django,ssl,Django,上传,middleware
From: https://www.cnblogs.com/weiweirui/p/17640283.html

相关文章

  • wangEditor 自定义上传图片
    //需要项目后台提供上传接口uploadFile下载接口FILE_URL:Object.defineProperties(Vue.prototype,{FILE_URL:{value:function(fileId){if(!fileId){return}return(process.env.VUE_APP_REMOTE_URL+'mi'+......
  • HTML5实现大文件上传
    ​ 文件夹数据库处理逻辑public class DbFolder{    JSONObjectroot;       public DbFolder()    {        this.root= new JSONObject();        this.root.put("f_id", "");        this.root.put("f_nameLoc", "......
  • gitlab+jenkins+harbor+k8s部署微服务环境
    一、gitlab1.gitlb部署version:'3'services:gitlab:image:'gitlab/gitlab-ce:latest'container_name:'gitlab'restart:alwayshostname:'192.168.1.188'#部署机器的ip,非容器ip(因为是本地不是线上所以用ip,线上的话可以用域名)......
  • Django对不确定多条件进行求交集搜索
    使用Django的Q方法创建搜索条件:name=request.GET.get('name')pages=request.GET.get('pages')operator=request.GET.get('operator')date1=request.GET.get('date1')date2=re......
  • 轻量级容器运行时:Containerd的部署与使用
    containerd作为轻量级容器运行时,被认为是最热门的Docker替代方案,目前已在阿里云、腾讯云等多家云商得到了支持,相信未来会有非常不错的发展前景。在前面的文章已对产品的功能架构进行了介绍,本文我们将更进一步,来学习containerd的部署与使用。01—部署containerd1.下载二进制文件 $......
  • Ubuntu 开机自启动Django程序
    在Ubuntu系统中设置开机启动一个命令,如pythonmanage.pyrunserver0.0.0.0:8000来启动Django服务器,可以通过以下步骤实现:创建一个SystemdService文件:打开终端并使用文本编辑器(例如nano或vim)创建一个SystemdService文件,比如django_app.service:bashCopycodesudona......
  • CentOS7下部署Django项目详细操作步骤
    部署是基于:centos7+nginx+uwsgi+python3+django之上做的软件版本详细介绍,纯净操作系统:Centos7.0 Python版本:python3.6Django版本:django2.0.6本文包括以下几个部分内容:㈠、服务器环境部署详细步骤㈡、本地项目搬迁到服务器㈢、Django后台样式丢失解决办法㈣、Django开启S......
  • Python学习之十七_django的入门
    前言Python学习了一周,慢慢总结摸索.自己还是有多不会的地方.感慨这些年浪费的时间.所有的时间都是选择大于努力.努力最多感动自己.生活是需要的是正确的选择.平凡的实在人太难在一个固化的社会生存.共勉.安装因为安装的是社区版.所以与专业版不太一样.这次学习主......
  • 【技术积累】Docker部署笔记
    服务器环境搭建nacos镜像使用宝塔Docker管理器直接拉起nacos环境并运行注意:在同一台服务器中,nacos只对内网才能注册,图中172.17.0.2是内网地址,在多台服务器中需要跨ip注册服务需要百度自行学习,本次部署使用同一台服务器部署。启动命令//加内存限制启动dockerrun\--nam......
  • Scala相关的安装部署
    需要注意的是,Scala需要在jdk已经安装配置好的情况下进行配置1、Scala下载地址:https://www.scala-lang.org/download/all.html2、压缩包下载之后,将压缩包上传到虚拟机的/root/software目录下面3、在该目录下将压缩包解压tar-zxvfscala-2.10.7.tgz解压成功!4、修改环境变......