zoukankan      html  css  js  c++  java
  • nginx + uwsgi + debian + django部署

    准备工作

    1. 我使用的不是本机系统,而是运行docker镜像库中的debian系统,因为后面还想研究一下,docker自动化部署相关内容,如果你想直接部署,可以跳过准备工作。
    2. 下载docker替换镜像源,因为如果用docker自己的镜像源下载速度会很慢。根据操作系统的不同,大家可以自行百度,mac系统docker桌面版可以在prefrence daemon 的registry mirrors:
    3. docker images 查看本地镜像
    4. docker search debian 查找debian网络镜像
    5. docker pull debian从第三步的结果中拉取想要的镜像
    6. docker run --name mytest -p 0.0.0.0:8000:8081/tcp -it debian /bin/bash
      • --name 为容器取名字
      • -p 本机端口:容器端口
      • -it 交互
    7. docker ps 查看容器
      • -a 查看所有容器
    8. docker stop container_id 停止容器
    9. Docker rm -v containerid 删除容器
    10. 将宿主机的项目拷贝到容器中:docker cp 宿主机中要拷贝的文件名及其路径 容器名:要拷贝到容器里面对应的路径

    系统镜像

    1. 在容器中,同样要先更新一下debian的下载源

    2. sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
      
    3. 安装nginx,python,pip

    uWSGI运行

    • 安装 pip3 install uwsgi

    • 整理好自己的目录:到目前为止,你可以不需要顾忌django自己生成之外的文件目录结构,比如uwsgi_param应该放在哪里,uwsgi.ini应该放在哪里。只要你理解绝对路径和相对路径,能够找到配置文件里你的文件就可以。我自己是放在和manage.py同级目录里。

    • 确保你的django项目在 python manage.py runserver时不会报错。

    • 以下两个文件是运行uwsgi必须的文件

    1. uwsgi_param

      uwsgi_param  QUERY_STRING       $query_string;
      uwsgi_param  REQUEST_METHOD     $request_method;
      uwsgi_param  CONTENT_TYPE       $content_type;
      uwsgi_param  CONTENT_LENGTH     $content_length;
      
      uwsgi_param  REQUEST_URI        $request_uri;
      uwsgi_param  PATH_INFO          $document_uri;
      uwsgi_param  DOCUMENT_ROOT      $document_root;
      uwsgi_param  SERVER_PROTOCOL    $server_protocol;
      uwsgi_param  REQUEST_SCHEME     $scheme;
      uwsgi_param  HTTPS              $https if_not_empty;
      
      uwsgi_param  REMOTE_ADDR        $remote_addr;
      uwsgi_param  REMOTE_PORT        $remote_port;
      uwsgi_param  SERVER_PORT        $server_port;
      uwsgi_param  SERVER_NAME        $server_name;
      
    2. uwsgi.ini

      [uwsgi]
      socket = 127.0.0.1:50000
      chdir = /home/httpServer/  # 可以理解为此文件的绝对路径
      wsgi-file = httpServer/wsgi.py  # wsgi与chdir的相对路径
      processes = 4
      daemonize = /home/log/httpServer.log  // 日志
      pidfile = /tmp/uwsgi.pid
      master = True
      
    3. 用uwsgi代替wsgi运行django

      uwsgi --ini uwsgi.ini // 写uwsgi.ini相对路径即可

      出现:[uWSGI] getting INI configuration from uwsgi.ini 说明运行成功

      停止uwsgi服务命令:uwsgi --stop uwsgi.pid

    nginx

    1. apt-get nginx, 下载nginx ,输入nginx即可启动

    2. 关于nginx不能启动 ==》 在bash栏里输入nginx 根据提示修改配置文件

    3. 大家可以查看一下 /etc/nginx/nginx.conf 相关信息,第61,62行有两个include,分别是引入配置和生效文件的,我们等会自己配置的文件就要软连接(相当于快捷方式引入)到62行的位置里。所以

      /etc/nginx/sites-enabled/ 里的所有文件都是你编辑后生效的,尽量不要有重复的,可能会覆盖不起作用

    4. 编写自己项目的nginx转发:

      
      upstream django { // 配置好被转发到哪个端口
          # server unix:///home/abc/uwsgi-tutorial/mysite/mysite.sock; # for a file socket
          server 0.0.0.0:3032; # for a web port socket (we'll use this first)
      }
      
      server {
          # the port your site will be served on
          listen      8002;  // nginx负责监听的端口
          # the domain name it will serve for
          server_name localhost; # substitute your machine's IP address or FQDN
          charset     utf-8;
      
          # max upload size
          client_max_body_size 75M;   # adjust to taste
      
      
      
          # Finally, send all non-media requests to the Django server.
          location / {
              uwsgi_pass django;  // 转发的路由
              include     /root/sxx_system/uwsgi_params; 
          }
      }
      
      
      • /etc/init.d/nginx start (restart stop)
    5. 注意:nginx转发,先要启动uwsgi,在uwsgi_pass中传入uwsgi填入的接口网址

    可以完善的点:

    1. 利用docker实现自动化部署,利用dockerfile和sh脚本,docker_compose.yaml,完成环境的安装。使你的包可以直接安装,不需要自己安装相关依赖环境。
    2. nginx其他的一些功能,以及有media和static文件如何处理;按权重分发路由实现负载均衡等。
    3. docker和nginx都是很大的点,在可以完成基本配置后,可以深入研究一下里面的一些其他实现功能。
  • 相关阅读:
    [二叉查找树] 1115. Counting Nodes in a BST (30)
    [最小生成树] 继续畅通工程
    [最小生成树] 畅通工程
    [最小生成树] 还是畅通工程
    [图算法] 1030. Travel Plan (30)
    [图算法] 1003. Emergency (25)
    [并查集] More is Better
    [并查集] How Many Tables
    [并查集] 畅通工程
    [并查集] 通信系统
  • 原文地址:https://www.cnblogs.com/jimmyhe/p/11720504.html
Copyright © 2011-2022 走看看