Django之项目部署
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之项目部署的更多相关文章
- django 本地项目部署uwsgi 以及云服务器部署 uwsgi+Nginx+Docker+MySQL主从
一 .django 本地项目部署uwsgi 1 本地部署项目 uwsgi安装测试 通过uwsgi 进行简单部署 安装uwsgi命令:pip install uwsgi -i http://pypi.d ...
- Django Web项目部署参考
环境准备:1.Python 2.7.*]2.pip3.sudo pip install django4.sudo aptitude show python-setuptools5.sudo aptit ...
- Django (十三) 项目部署 3
阿里云项目部署 部署Django项目 1, 配置nginx 1.1 进入:cd /var/www, 将外面压缩好的AXF项目拖入xshell中,并解压 1.2 配置nginx.conf: 将htt ...
- Django (十一) 项目部署 2
阿里云项目部署 ( 如果xshell连接不上阿里云: 解决方法: 1, 在淘宝IP地址库查看当前IP: http://ip.taobao.com/ 2, 点击进入:安全(云盾) -> 安骑士(服 ...
- django之项目部署知识点
一:项目部署的框架 nginx和uWSGI在生产服务器上进行的部署 二:什么是nginx? nginx是一个web服务器. 什么是web服务器? web服务器则主要是让客户可以通过浏览器进行访问,处理 ...
- 【Django】Django web项目部署(Nginx+uwsgi)
一.安装uwsgi 通过pip安装uwsgi. pip install uwsgi 测试uwsgi,创建test.py文件: def application(env, start_response): ...
- Django (十) 项目部署 1
阿里云部署项目 1, 购买阿里云ECS云服务器(可免费试用1个月) 2, 阿里云实例更换为Ubuntu 3, 安全组配置 4, xshell远程连接 5, 创建虚拟环境: 5.1 linux基本命令 ...
- django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)
上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要 ...
- Linux学习笔记之Django项目部署(CentOS)----进阶篇
一.引入 当我们开发好了一个Django项目之后是需要部署到服务器上的,这样才能正式使用这个项目.之前用了一个运行.sh文件的方法让项目得以在后台运行,其实随着学习的深入,这种方法其实是有点low的, ...
- Linux Django项目部署
步骤 .数据库的处理 1.1 上传bbs.sql 1.2 在mysql中创建bbs库,并导入数据库SQL脚本 mysql> create database bbs charset utf8mb4 ...
随机推荐
- [项目] 在openharmony上跑CV
板子资料 瑞星微 rk3568, CPU: RK3568四核64位Cortex-A55 处理器,采用全新ARM v8.2-A架构 Cortex A55 基于64位Armv8.2-A指令集设计,支持64 ...
- 机器学习--决策树算法(CART)
CART分类树算法 特征选择 我们知道,在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择.在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题. ...
- EF Core – Get Started 搭建单侧环境
有时候想搭个环境做测试, 又记不住那些 command, 官方教程又啰嗦. git clone 模板又不太好管理, 索性记入在这里吧. 创建项目 dotnet new webapp -o Simple ...
- 致敬传奇 Kruskal 重构树题硬控我三小时
NOI2018 归程 存边的数组拿来干两件事,忘了清空了,其实最好开两个的 dfs 没开 vis 导致不知道为什么出现的绕圈 倍增的 fa[i][j] 定义的时候前面是 \(2^{i}\) 写着写着记 ...
- python安装pandas+pytz
如下图所示,在安装pandas的过程中,发现他还要安装pytz这个包.我不想等他自己下载,因为很容易出错,所以我就先下载了pytz这个包,然后安装完毕,再去安装pandas这个包. 首先呢先登录这个网 ...
- stm32开发
基于寄存器开发 新建工程 添加C/C++识别路径 : 防止中文乱码 - 改变编码格式 基于库函数开发
- 理解 keep-alive
keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,避免重新渲染 : 对应两个钩子函数 activated 和 deactivated ,当组件被激活时,触发钩子函数 act ...
- 18 Transformer 的动态流程
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- 0403-Tensor内部存储结构
0403-Tensor内部存储结构 目录 一.Tensor内部存储结构 pytorch完整教程目录:https://www.cnblogs.com/nickchen121/p/14662511.htm ...
- [第一章 web入门]SQL注入-1
启动靶机 很明显注入点为id值,单引号闭合影响语句,说明为单引号闭合 构造注入语句 ?id=1 ' and 1 =1 --+ 发现没报错,说明没有其他过滤 ,开始sql注入 ?id=1 ' order ...