用Docker部署Django+uWSGI+Nginx

用Docker部署Django+uWSGI+Nginx

  • 大致步骤如下:
  • 创建Centos容器
  • 安装Python及pip
  • 安装MySQL
  • 使Django连接到MySQL
  • 运行uWSGI服务器
  • 运行Nginx服务器

    ?
    ?

    创建Centos容器

    安装docker软件

    yum install docker
    									
  • 创建一个centos容器
    docker run -d --name
    									deploy1 --network host centos tail -f /dev/null
    														
  • -d:让它在后台运行。
  • –name deploy1:设置名字。
  • –network host:让它加入宿主机的网络,从而可以连上外网。
  • centos:要运行的镜像。docker会自动从官方镜像中拉取latest版本。
  • tail -f /dev/null:让容器一直执行某条命令,以免没有任务而自动退出。

    进入centos容器。

    docker exec -it deploy1 bash
    									

    ?
    ?

  • ?将Django项目的源代码从宿主机拷贝到centos容器中
    docker cp /root/django deploy1:
    											/var/www/web_project
    													

    安装Python及pip

    yum install epel-release
    												# 添加epel软件库
    								

    ?

    yum install python34 # 安装指定版本的python
    								

    然后用pip安装Django项目需要的Python第三方库。

    如果项目目录下有一个requirements.txt,则可以用pip3.4 install -r requirements.txt

    ?
    ?

    安装MySQL

    Yum install mariadb
    									

    执行 Mysql_secure_installtion进行初始化,设置密码为123456

    ?
    ?

    使Django连接到MySQL

    DATABASES = {
    

    ?

    ??? ‘default‘: {
    

    ?

    ??????? ‘ENGINE‘: ‘django.db.backends.mysql‘,?? # 数据库引擎,不用改
    							

    ?

    ??????? ‘NAME‘: ‘blog‘,????????? # database名,需要在mysql中已存在
    								

    ?

    ??????? ‘USER‘: ‘root‘,
    

    ?

    ??????? ‘PASSWORD‘: ‘******‘,
    

    ?

    ??????? ‘HOST‘: ‘127.0.0.1‘,
    

    ?

    ??????? ‘PORT‘: ‘3306‘,
    

    ?

    ??? }
    

    ?

    }
    

    ?

    运行uWSGI服务器

  • 安装依赖库:yum install build-essential python-devel
  • 安装uWSGI:pip install uwsgi
  • 进入Django项目目录,执行mkdir uwsgi,创建一个uwsgi文件夹。再执行vi uwsgi/uwsgi.ini,在其下创建一个uwsgi.ini,作为配置文件。其内容如下:
    [uwsgi]
    							

    ?

    chdir?????????? = /var/www/web_project
    

    ?

    socket= 127.0.0.1:3301
    												

    ?

    http = 0.0.0.0:8001
    												

    ?

    module????????? = web_project.wsgi
    

    ?

    #home??????????? = /var/www/vitual/
    							

    ?

    master????????? = true
    								

    ?

    processes?????? = 5
    								

    ?

    vacuum????????? = true
    								

    ?

    daemonize=/var/log/uwsgi.log
    							

    使用配置文件启动uWSGI服务器(默认在后台运行):uwsgi --ini uwsgi/uwsgi.ini

    ?
    ?

    运行Nginx服务器

    安装Nginx:yum install nginx

    修改Nginx的配置文件 /etc/nginx/site-enable/mysite_nginx.conf

    upstream django {
    

    ?

    ??? server
    									127.0.0.1:3301; # for a web port socket (we‘ll use this first)
    												

    ?

    }
    

    ?

    ?

    ?

    server {
    

    ?

    ??? # the port your site will be served on
    								

    ?

    ??? listen????? 8081;
    

    ?

    ??? # the domain name it will serve for
    								

    ?

    ??? server_name _; # substitute your machine‘s IP address or FQDN
    										

    ?

    ??? charset???? utf-8;
    

    ?

    ?

    ?

    ??? # max upload size
    								

    ?

    ??? client_max_body_size
    									75M;?? # adjust to taste
    												

    ?

    ?

    ?

    ??? # Django media
    								

    ?

    ???? location /media{
    

    ?

    ??????? alias /var/www/web_project/media/;? # your oDjango project‘s media files - amend as required
    										

    ?

    }
    

    ?

    ???? location /static {
    

    ?

    ??????? alias? /var/www/web_project/allstatic/; # your Django project‘s static files - amend as required
    										

    ?

    }
    
    ???? location /admin {
    

    ?

    ??????? uwsgi_pass? django;
    

    ?

    ??????? include???? uwsgi_params; # the uwsgi_params file you installed
    										

    ?

    ?

    ?

    ?

    ?

    }
    
    ??? location /api {
    

    ?

    ??????? uwsgi_pass? django;
    

    ?

    ??????? include???? uwsgi_params; # the uwsgi_params file you installed
    										

    ?

    ??? }
    

    ?

    ?

    ?location /ckeditor/upload/ {
    

    ?

    ?????????? proxy_method POST;
    

    ?

    ?????????? proxy_pass?? http://127.0.0.1:8001$request_uri;
    

    ?

    ??? }
    

    ?

    ??? location / {
    

    ?

    ??????? root? /var/www/html/dist;
    

    ?

    ??????? index? index.html;
    

    ?

    ??????? #try_files $uri $uri/ /index.html;
    								

    ?

    ??????? }
    
    }
    

    ?

    先启动uWSGI服务器,再用nginx启动nginx服务器(默认作为守护进程运行)

    ?
    ?

    ?
    ?

  • 数据的持久化
    docker run -d -p 80:8081 -p 10000:8001? --restart=always --privileged=true -v /usr/docker_dat/mysql/data:/var/lib/mysql --name newblog5 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root? webblog_4
    																	

    ?
    ?

    映射本地的目录到
    容器内部的 /var/lib/msyql

  • 第一次数据库会报没有权限,需要修改mysql的数据库权限
    chown -R mysql /var/lib/mysql
    										

原文地址:https://www.cnblogs.com/ywtt/p/12151095.html

时间: 2024-11-07 05:20:16

用Docker部署Django+uWSGI+Nginx的相关文章

[linux]centos7.4部署django+Uwsgi+Nginx

前言:我已经写了几个接口用来部署在服务器上的,首先选择django+Uwsgi+Nginx因为配置简单,比较符合python的简单操作功能强大的特点 然后对于django的一些版本在之前的文章写了 参考:https://www.cnblogs.com/Jack-cx/p/9351633.html  根据版本,服务器pip3 install xxx 安装下 我的django项目大概结构: TestWebApi ----TestWebApi ----Apiso(创建的应用) ----manage.p

Centos 7 下部署Django + uWSGI + Nginx

1.废话 之前利用Django写了些测试工具,一直是直接 python manage.py runserver 8081这么来用的.用户量不大,倒也不影响什么.uWSGI+Nginx的性能肯定要好,so 研究了一下 2.环境: Python: 3.5 Django: 1.8 OS: CentOS 7 x86_64 uwsgi: 2.0.17 3.安装Python3.5 不要删除自带的python2.7,否则会出问题,因为centos许多软件需要依赖系统自带python 安装依赖工具 yum in

Ubuntu环境下部署Django+uwsgi+nginx总结

前言 这是我在搭建Django项目时候的过程,拿来总结记录,以备不时之需. 项目采用nginx+uwsgi的搭配方式. 项目依赖包采用requirements.txt文件管理的方式. 本地准备工作 确认项目能够运行起来,没有bug 将当前环境的包导出 pip freeze > requirements.txt 将项目上传到服务器上的/srv目录下.这里以git的形式为例, 打开终端, 依次输入如下命令: $ git init $ git remote add origin xxx.git # 替

Django + Uwsgi + Nginx 的生产环境部署

使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: 1.确保有一个能够用runserver正常启动的django项目 2.项目已上传到linux 3.linux上已部署好python环境,且已安装好项目所需的模块 安装uwsgi uwsgi是python的一个模块,安装u

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

一.如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 二.uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask

Django+uWsgi+nginx部署

一.环境 操作系统:Ubuntu 14.04 64位 python:2.7.6 Django:1.8.2 项目源码:https://github.com/youchuancong/django.git 部署方式:Django+uWsgi+nginx 二.部署 1.Django安装 官网:https://www.djangoproject.com/ 安装 wget https://www.djangoproject.com/m/releases/1.8/Django-1.8.2.tar.gz ta

Django+uWSGI+Nginx 部署网站

Django 1.11设置 保证Django在本地调试没有问题: 当然这是前提^_^ 收集静态文件至指定文件夹 Django静态文件设置具体参考:https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/ 在myproject/settings.py中设置静态文件STATIC_URL和STATIC_ROOT设置: 如: STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE

django+uwsgi+nginx部署(非常详细)

django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: 1 Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-130-generic x86_64) 3.下载uwsgi以及nginx 1 apt-get install uwsgi 2 apt-get install nginx (注:如果下载异常出现权限问题,在命令前添加sudo) 4.创建Django项目 例如:项目名为mysite

docker 部署django方式

1 docker 部署django应用 1.1 基于python基础镜像 # 第一种方式:基于python基础镜像来做 cd /home mkdir myproject cd myproject docker run -di --name=myproject -p 8080:8080 -v /home/myproject:/home python:3.6 #mac/linux window:xshell拖进去 scp django_test.zip [email protected]:/home