1.线上部署一般会使用https的方式进行部署,本身django框架是不支持的,所以需要。。。

1)安装扩展

pip install django-extensions django-werkzeug-debugger-runserver pyOpenSSL

2)添加配置项settings.py文件中

INSTALLED_APPS = [
'werkzeug_debugger_runserver',
'django_extensions', 'corsheaders',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mozilla_django_oidc',
]

这样就可以使用启动命令来启动服务了

python manage.py runserver_plus 0.0.0.0:8000 --cert-file=/etc/certs/xxx.com.crt --key-file=/etc/certs/xxx.com.key

即可启动一个https://0.0.0.0:8000的django服务了

但是这种这能监听一个接口,提供服务, django3.0+提供了异步特性, 同时支持uvicorn的部署方式

2.supervisor+uvicorn+nginx部署

1)安装uvicorn

uvicorn采用了uvloop 用Cython改写了python里面asyncio的时间循环, 将asyncio的效率提高了4倍以上

pip3 install uvicorn

运行项目方式:

uvicorn [项目主目录].asgi.application    即可

2)安装supervisor, 这个的安装我之前的文章中也有详细的说明, 这里就略过,详见https://www.cnblogs.com/xingxia/p/supervisor_all.html

添加项目配置项:

[fcgi-program:xxx]
socket=tcp://localhost:8000
directory=/opt/xxx/
command=/opt/xxx/env/bin/uvicorn --fd 0 xxx.asgi:application --ssl-certfile=/etc/certs/xxx.com_bundle.crt --ssl-keyfile=/etc/certs/xxx.com.key
numprocs=4
autostart=true
process_name=service-%(process_num)d
stdout_logfile=/var/log/supervisord/xxx.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=100MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
stderr_logfile=/var/log/supervisord/xxx_error.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=100MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)

说明:

socket为对外暴露的接口 可以是unix 也可以是一个网络端口 端口的形式可以见官方文档

command为执行命令

directory为项目路径

numprocs是处理器个数

process_name是处理进程的名称

添加完成之后, 更新supervisor

supervisorctl update   # 更新配置

supervisorctl start uvicorn:*

supervisorctl stop uvicorn:*

supervisorctl restart uvicorn:*

*的作用是所有进程:
start <name> Start a process
start <gname>:* Start all processes in a group
start <name> <name> Start multiple processes or groups
start all Start all processes

3)nginx配置

配置文件中添加反向代理

1)http

server {
listen 80;
server_name localhost
charset UTF-8;
access_log /home/log/xxx_access.log;
error_log /home/log/xxx_error.log; client_max_body_size 75M; location / {
proxy_pass http://127.0.0.1:8000;
}
}

2)https

server {
listen 443 ssl;
server_name xxx.com; access_log /var/log/nginx/xxx.com_access.log main;
error_log /var/log/nginx/xxx.com_error.log warn; ssl_certificate /etc/certs/xxx.com_bundle.crt;
ssl_certificate_key /etc/certs/xxx.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 / {
root /opt/XXX/dist;
index index.html;
#proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ ^/(admin|user|oidc|backend|astatic) {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://127.0.0.1:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

  

Django之项目部署的更多相关文章

  1. django 本地项目部署uwsgi 以及云服务器部署 uwsgi+Nginx+Docker+MySQL主从

    一 .django 本地项目部署uwsgi 1 本地部署项目 uwsgi安装测试 通过uwsgi 进行简单部署 安装uwsgi命令:pip install uwsgi -i http://pypi.d ...

  2. Django Web项目部署参考

    环境准备:1.Python 2.7.*]2.pip3.sudo pip install django4.sudo aptitude show python-setuptools5.sudo aptit ...

  3. Django (十三) 项目部署 3

    阿里云项目部署 部署Django项目   1, 配置nginx 1.1 进入:cd /var/www, 将外面压缩好的AXF项目拖入xshell中,并解压 1.2 配置nginx.conf: 将htt ...

  4. Django (十一) 项目部署 2

    阿里云项目部署 ( 如果xshell连接不上阿里云: 解决方法: 1, 在淘宝IP地址库查看当前IP: http://ip.taobao.com/ 2, 点击进入:安全(云盾) -> 安骑士(服 ...

  5. django之项目部署知识点

    一:项目部署的框架 nginx和uWSGI在生产服务器上进行的部署 二:什么是nginx? nginx是一个web服务器. 什么是web服务器? web服务器则主要是让客户可以通过浏览器进行访问,处理 ...

  6. 【Django】Django web项目部署(Nginx+uwsgi)

    一.安装uwsgi 通过pip安装uwsgi. pip install uwsgi 测试uwsgi,创建test.py文件: def application(env, start_response): ...

  7. Django (十) 项目部署 1

    阿里云部署项目 1, 购买阿里云ECS云服务器(可免费试用1个月) 2, 阿里云实例更换为Ubuntu 3, 安全组配置 4, xshell远程连接 5, 创建虚拟环境: 5.1 linux基本命令 ...

  8. django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)

    上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要 ...

  9. Linux学习笔记之Django项目部署(CentOS)----进阶篇

    一.引入 当我们开发好了一个Django项目之后是需要部署到服务器上的,这样才能正式使用这个项目.之前用了一个运行.sh文件的方法让项目得以在后台运行,其实随着学习的深入,这种方法其实是有点low的, ...

  10. Linux Django项目部署

    步骤 .数据库的处理 1.1 上传bbs.sql 1.2 在mysql中创建bbs库,并导入数据库SQL脚本 mysql> create database bbs charset utf8mb4 ...

随机推荐

  1. [Udemy] AWS Certified Data Analytics Specialty - 3.Processing

    Lambda Lambda 经常起胶水的作用,就是粘合不同的service. 如下图例子 另外Requirement #1 也是一个例子,还有Requirement #3 除了Kinesis Data ...

  2. AWS Data Analytics Fundamentals 官方课程笔记 - Intro, Volumn, Velocity

    Intro process 就是 The process component is where services manipulate data into needed forms. 比如补齐 nul ...

  3. JavaScript – 单线程 与 执行机制 (event loop)

    前言 因为在写 RxJS 系列,有一篇要介绍 Scheduler.它需要对 JS 执行机制有点了解,于是就有了这里篇. 参考 知乎 – 详解JavaScript中的Event Loop(事件循环)机制 ...

  4. CSS & JS Effect – Simulation Position Sticky (用 JavaScript 实现 position sticky)

    前言 在 CSS – Position 我有提到过, 原生的 sticky 有一些 limitation. 不是每次都闪的掉. 这篇主要是通过 JS 来模拟它, 突破那些限制. Google Ads ...

  5. CSS – Sass & SCSS

    前言 CSS 代码多了就不好管理了, 这是它语法先天的不足. Sass 就是加强它语法的, Sass 为 CSS 引入了一些 JS 语言的特性, 比如 variable, function, para ...

  6. mongo集群同步数据异常,手动同步节点副本数据

    转载请注明出处: 数据同步方案 当副本集节点的复制进程落后太多,以至于主节点覆盖了该节点尚未复制的 oplog 条目时,副本集节点就会变为"陈旧".节点跟不上,就会变得" ...

  7. chatGPT能做职业规划?看完之后发现3年软测白做了!

    "每天都是重复.单调的工作,收入不理想,想跳槽无力,学习又没有动力和方向,不知道未来的发展在哪里,甚至想转行·····" 做测试久了,很多人都有诸如此类的疑惑,不想一直停留在测试需 ...

  8. Spring —— bean生命周期

    bean生命周期 生命周期:从创建到消亡的完整过程 bean生命周期:bean从创建到销毁的整体过程 bean生命周期控制:在bean创建后到销毁前做一些事情   方式一:配置控制生命周期 <b ...

  9. 基于图扑 HT for Web 实现的昼夜切换场景应用

    图扑软件 HT 的案例中有许多白天黑夜效果.这种效果在各类不同的项目中得到了广泛的应用和认可. 白天黑夜效果是视觉设计和交互设计中常见的一种手法.通过细致巧妙地调整色彩.亮度.对比度等视觉参数,即可成 ...

  10. 暑假集训CSP提高模拟7

    这个 T1 的 \(n^{3}\) 的 SPJ 效率还是太慢了,膜拜 SPJ 大神学长,还会画画 A.Permutations & Primes 这题感觉挺水的但是感觉有不是那么水,主要还是因 ...