Deploy django-nginx-uwsgi

针对一些单位简单企业站使用docker 完成django uwsgi 部署

docker-nginx django-ruunserver

Django settings.py

ALLOWED_HOSTS = ['*']
...
STATIC_URL = '/static/'
STATIC_ROOT = '/statics'STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")
]LOGGING = {'version': 1,'disable_existing_loggers': False,'formatters': {'verbose': {'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}','style': '{',},},'handlers': {'file': {'level': 'INFO','formatter': 'verbose','class': 'logging.handlers.TimedRotatingFileHandler','filename': '/Users/kurong/Desktop/deploydemo/debug.log','when': 'midnight','interval': 1},},'loggers': {'django': {'handlers': ['file'],'level': 'INFO','propagate': True,},},
}
python manage.py runserver 0.0.0.0:8000

nginx

upstream website {server 192.168.50.229:8000;
}server {listen   80;server_name 192.168.50.229;charset     utf-8;location / {proxy_pass http://website;}access_log /var/log/nginx/access.log main;error_log /var/log/nginx/error.log warn;
}
docker run -itd --name nginx -p 80:80 -v /Users/kurong/Desktop/site.conf:/etc/nginx/conf.d/default.conf nginx
docker-nginx django-uwsgi

测试uwsgi

# test.py
def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return [b"Hello World"]
uwsgi --http :8000 --wsgi-file test.py

浏览器访问127.0.0.1:8000显示Hello World成功

测试uwsgi+django

uwsgi --http :8000 --module deploydemo.wsgi

浏览器访问127.0.0.1:8000显示Django index页面成功

测试nginx+uwsgi+django

upstream website {server 192.168.50.229:8000;
}server {listen   80;server_name 192.168.50.229;charset  utf-8;client_max_body_size 75M;# location /media  {#    alias /path/to/your/mysite/media;# }location /static {alias /path/to/your/mysite/static;}location / {uwsgi_pass  website;include     /etc/nginx/uwsgi_params;}
}
docker run -itd --name nginx -p 80:80 -v /Users/kurong/Desktop/site.conf:/etc/nginx/conf.d/default.conf nginx
uwsgi --socket :8000 --module deploydemo.wsgi

浏览器访问192.168.50.229显示Django index页面成功

使用uwsgi.ini启动服务

[uwsgi]
chdir = /Users/kurong/Desktop/project/deploydemo
module = deploydemo.wsgi
socket = 0.0.0.0:8000
master = True
processes = 4
harakiri = 60
max-requests = 5000
vacuum = True
; pidfile = /data/uwsgi.pid
; daemonize = /www_data/uwsgi.log
uwsgi --ini uwsgi.ini

浏览器访问192.168.50.229显示Django index页面成功

(py3) ➜  deploydemo ls -alR
total 24
drwxr-xr-x  9 kurong  staff  288  4  8 12:14 .
drwxr-xr-x  8 kurong  staff  256  4  8 09:26 ..
-rw-r--r--  1 kurong  staff    0  4  8 09:27 db.sqlite3
drwxr-xr-x  8 kurong  staff  256  4  8 09:27 deploydemo
srw-rw-rw-  1 kurong  staff    0  4  8 12:14 deploydemo.sock
-rwxr-xr-x  1 kurong  staff  666  4  8 09:26 manage.py
drwxr-xr-x  2 kurong  staff   64  4  8 10:53 static
-rw-r--r--  1 kurong  staff  124  4  8 11:48 test.py
-rw-r--r--  1 kurong  staff  242  4  8 12:53 uwsgi.ini./deploydemo:
total 32
drwxr-xr-x  8 kurong  staff   256  4  8 09:27 .
drwxr-xr-x  9 kurong  staff   288  4  8 12:14 ..
-rw-r--r--  1 kurong  staff     0  4  8 09:26 __init__.py
drwxr-xr-x  8 kurong  staff   256  4  8 11:54 __pycache__
-rw-r--r--  1 kurong  staff   397  4  8 09:26 asgi.py
-rw-r--r--  1 kurong  staff  3956  4  8 10:55 settings.py
-rw-r--r--  1 kurong  staff   752  4  8 09:26 urls.py
-rw-r--r--  1 kurong  staff   397  4  8 09:26 wsgi.py
...
docker nginx+uwsgi+django 服务器部署
# uwsgi.ini
[uwsgi]
chdir = /ggjsfw
module = backend.wsgi
socket = 0.0.0.0:8000
master = True
processes = 4
harakiri = 60
max-requests = 5000
vacuum = True
pidfile = /data/uwsgi.pid
# Dockerfile
FROM freeyeti/dev-in-docker:pyinstaller-4.5-poetry AS djangoRUN mkdir /statics && mkdir /dataRUN mkdir -p /deploydemoWORKDIR /deploydemoCOPY . .ENV DJANGO_SETTINGS_MODULE "deploydemo.settings_build"RUN poetry export --output requirements.txt \&& yes | pip3 install --no-cache-dir -i https://mirrors.cloud.tencent.com/pypi/simple -r requirements.txt \&& python3 manage.py collectstatic --noinputENV DJANGO_SETTINGS_MODULE "deploydemo.settings"ENV DJANGO_LOG_FILE "/data/logs/debug.log"RUN chmod +x ./docker/start.shCMD ["sh", "./docker/start.sh"]EXPOSE 8000FROM nginx:mainline-alpine AS nginxCOPY --from=django /statics /staticsCOPY ./docker/site.conf /etc/nginx/conf.d/default.confWORKDIR /CMD ["nginx", "-g", "daemon off;"]EXPOSE 80
# site.conf
upstream website {server 10.0.24.2:8000;  # 10.0.24.2:内网IP
}server {listen   80;server_name localhost;charset  utf-8;client_max_body_size 75M;location /media  {alias /media;}location /static {alias /statics;}location / {uwsgi_pass  website;include     /etc/nginx/uwsgi_params;}
}
# start.sh
#!/bin/bash
mkdir -p /data/logsif [ -f "$DJANGO_LOG_FILE" ]; thenecho "$DJANGO_LOG_FILE exists."
else touch $DJANGO_LOG_FILEecho "$DJANGO_LOG_FILE does not exist. created"
fipython3 manage.py migrate && uwsgi --ini uwsgi.ini
# serverup.sh
CODETYPE=fullstack
DOMAINNAME=westdc.cn
EMAIL=service@westdc.cn
HOSTNAME=ggjsfw
IMAGESERVER=cr.westdc.cn
PROJECTNAME=ggjsfw
CI_COMMIT_SHORT_SHA=12766acp docker/* ./docker build --target django -t deploydemo-django .docker build --target nginx -t deploydemo-nginx .docker run -itd --name $PROJECTNAME-django -p 8000:8000 \
-v /mnt/disk2/projects/ggjsfw/media:/ggjsfw/media \
-v /mnt/disk2/projects/ggjsfw/statics:/statics \
-v /mnt/disk2/projects/ggjsfw/data:/data \
$IMAGESERVER/$PROJECTNAME/django:$CI_COMMIT_SHORT_SHAdocker run -itd -p 8010:80 --name $PROJECTNAME-nginx \
-v /mnt/disk2/projects/ggjsfw/media:/media \
$IMAGESERVER/$PROJECTNAME/nginx:$CI_COMMIT_SHORT_SHA
➜  ggjsfw git:(ciupdate) ✗ tree -L 1
.
├── README.md
├── apps
├── backend
├── db.sqlite3
├── deploy
├── dev
├── docker
├── manage.py
├── media
├── poetry.lock
├── pyproject.toml
├── serverup.sh
├── static
├── templates
├── tmp
├── uwsgi.ini
└── yarn.lock➜  ggjsfw git:(ciupdate) ✗ cd docker
➜  docker git:(ciupdate) ✗ tree -L 1
.
├── Dockerfile
├── docker-compose.dev.yml
├── docker-entrypoint.sh
├── freed.sh
├── site.conf
├── site.conf.backup
├── start.sh
├── startdjango.sh
└── startnginx.sh

Docer实现Django Uwsgi部署相关推荐

  1. 【转】Nginx+uWSGI 部署 Django 应用

    原文来自: http://www.oschina.net/question/54100_30386 http://obmem.info/?p=703 常见的django webapp 部署方式采用FC ...

  2. Django之部署NGINX+uWSGI

    参考地址:http://www.cnblogs.com/CongZhang/p/6548529.html http://www.cnblogs.com/alex3714/p/6538374.html ...

  3. nginx、uwsgi部署django项目理论+实战

    基本环境: Ubuntu 16.04.4 LTS python 3.5 virtualenv django project deployable #理论分析   部署django项目有很多方法,方法推 ...

  4. 使用Nginx+uWSGI部署Django项目

    1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgiln ...

  5. nginx+uwsgi部署Django

    本篇文章主要介绍了解决nginx+uwsgi部署Django的所有问题(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近,自己暑假写的小项目也算完毕了,想着投放 ...

  6. 如何让nginx执行python代码_生产环境部署Python语言代码(django+uwsgi+nginx)

    本文主要向大家介绍了生产环境部署Python语言代码(django+uwsgi+nginx),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 基础环境不做介绍,在django开发w ...

  7. django+uwsgi+nginx部署

    最近线上部署运维工单系统,使用django+uwsgi+nginx部署,发现这篇文章,很详细,觉得不错,转载一下: 写了那么长时间的django,一直没跟nginx结合一下,访问的时候老是得加端口号, ...

  8. [转]Docker部署Django由浅入深系列(下): 八步部署Django+Uwsgi+Nginx+MySQL+Redis

    在上篇教程中,我们手动构建了两个容器,一个容器放Django + Uwsgi,另一个容器放Nginx,成功部署了一个简单的Django项目.然而在实际的生产环境中,我们往往需要定义数量庞大的 dock ...

  9. nginx+uwsgi+django环境部署部署

    首科常昊技术部 Django框架部署文档: 硬件环境:阿里云ecs服务器8核心.16GB.10Mbps 环境结构:nginx+uwsgi+django 所需软件:python-3.6.1.pip3.6 ...

  10. Django + Uwsgi + Nginx 实现生产环境部署1

    项目开发完毕后,需要将代码放到服务器上,这样用户才能访问.接下来我们一步一步来进行一波部署操作. 1. 简单粗暴 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前 ...

最新文章

  1. Oracle中的within,Oracle函数 --聚合函数中的语法within group
  2. MySQL Study之--Percona Server版本
  3. Hibernate 发展之路
  4. 【杭电多校2020】Total Eclipse【贪心】【并查集】
  5. Problem b(BZOJ-2301/HAOI-2011)
  6. 从零开始构建自己的爬虫代理IP数据库并定期检验IP有效性...
  7. linux下调整交换分区的大小
  8. 在dos下的文件及文件夹操作命令
  9. 已经被删除的PDF怎么用EasyRecovery恢复
  10. 3.4实训任务 Hadoop环境搭建与安装
  11. linux5 iso镜像下载,Redhat Linux5.4/5.5/5.8/6.0/6.3 ISO镜像文件下载
  12. HTML中美化页面,10 使用CSS美化页面
  13. RS485/RS422接线图
  14. 谷歌搜索引擎机器学习原理理解
  15. 快速下载网页全部图片的方法
  16. 移动办公系统 服务器地址,移动办公怎么设置服务器地址
  17. pandas中每个元素减去所在行的平均值
  18. Ubuntu安装NVDIA显卡驱动,CUDA及cuDNN
  19. 基于堡垒主机概念的运维审计系统
  20. Beamer 使用笔记

热门文章

  1. Telemetry系统架构
  2. 3500x架构_r5 3500x处理器深度实用评测3500x游戏性能测评
  3. 泛泛而谈的菜鸟学习记录(三)—— unity后处理
  4. 新一代SSD接口来了 | M.2接口发福版?
  5. 2019春季学期个人总结
  6. 行云Talk|开发工具一体化,在线IDE会不会成为一种趋势呢?
  7. linux卷空间不足问题 gparted工具重新分配根分区空间
  8. 热电冷磁之牛顿的三棱镜谭:围棋之C++
  9. java clh_AQS基础——多图详解CLH锁的原理与实现
  10. 实战篇:VMware Workstation 虚拟机安装 Linux 系统