• python django 项目部署:centos 7 +Django + uwsgi + nginx 部署


    为了部署自己的一个项目,搞了3天,真的是各种问题,下次再弄个docker 部署吧,这个真的是麻烦。

    我的项目目录结构

    uwsgi:部署 web_app

    nginx:反向代理、静态文件服务器

    准备工作:

    1、确认远程主机的ip地址
    2、确定远程主机安装完成mysql
    3、安装python3
    4、安装虚拟环境
    5、安装项目本是需要的第三份包
    6、上传项目至服务器【使用软件xshell,xftp 进行服务器远程及,文件拷贝】简单。这里不做介绍
    7、配置uwsgi
    8、配置nginx
    9、运行

     1、安装Python3 

    链接:https://www.cnblogs.com/sunjinchao/p/13307026.html

    2、安装虚拟环境

    https://www.cnblogs.com/sunjinchao/p/13320891.html

    3、进入虚拟环境,安装项目所需的包【第一次部署项目比较吃力】 hzt_env  虚拟环境名

    workon hzt_env
    pip3 install django==2.2.12
    pip3 install pymysql
    pip3 install pillow
    .........
    等等,看自己的项目情况安装即可
    安装各种包

    4、安装uwsgi

    pip3 install uwsgi #安装
    #ln -s /usr/local/python356/bin/uwsgi /usr/local/bin/uwsgi  #建立软链接

    5、测试wsgi是否可用

    # uwsgi --http 0.0.0.0:80 --chdir /data/www/HZT/ --wsgi-file HztBack/wsgi.py --master --processes 4 --threads 2
    
    不带静态文件
    使用浏览器访问服务器地址,即可访问  
    chdir :项目的根目录
    wsgi-file: wsgi.py的目录
    
    
    
    # uwsgi --http 0.0.0.0:80 --chdir /data/www/HZT/ --wsgi-file HztBack/wsgi.py --static-map=/static=static --static-map=/static=media --master --processes 4 --threads 2
    
    带静态文件 ~
    正常情况:使用浏览器访问服务器地址,即可访问  

    6、通过配置wsgi的配置文件进行启动

    (1)在项目的根目录新建uwsg.ini  及  新建 uwsgi_conf 文件目录

     (2)uwsgi_conf 文件目录 是为了存放 uwsg的日志等文件

    (3)uwsgi.ini文件内容

    # uwsig使用配置文件启动
    [uwsgi]
    # 项目目录
    chdir=/data/www/HZT
    # 指定项目的application
    module=HztBack.wsgi:application
    # 进程个数
    processes=4
    threads=2
    workers=5
    pidfile=/data/www/HZT/uwsgi_conf/uwsgi.pid
    # 指定IP端口
    http=0.0.0.0:8000
    # 指定静态文件
    for =static media
    #static-map=/static=%(chdir)/%(_)
    endfor =
    
    # 启动uwsgi的用户名和用户组
    uid=root
    gid=root
    # 启用主进程
    master=true
    # 自动移除unix Socket和pid文件当服务停止的时候
    vacuum=true
    # 序列化接受的内容,如果可能的话
    thunder-lock=true
    # 启用线程
    enable-threads=true
    # 设置自中断时间
    harakiri=30
    # 设置缓冲
    post-buffering=4096
    # 设置日志目录
    daemonize=%(chdir)/uwsgi_conf/uwsgi.log
    uwsgi.ini

    7、当前目录下,启动uwsgi是否正常

    uwsgi --ini uwsgi.ini

    备注:可以在uwsgi_conf目录下,查看是否有uwsgi.pid 此文件,如果有代表uwsgi已经运行

     可以在前端打开浏览器进行测试

    8、安装nginx

     https://www.cnblogs.com/sunjinchao/p/13331334.html

    9、编辑nginx.conf 文件

    (1)修改Nginx.conf 文件  再最后一行加上 代码方便导入

    include /usr/local/nginx/conf/*.config;
    
    备注:这样做的好处就是,每个应用你都可以直接导入,不用修改本身的nginx.conf个文件,方便管理。

     (2)新建web应用 config文件 填写以下代码(我自己新建了个,hzt.config)

    server {
    
            listen 80;
            server_name 10.168.1.104;
    
    
            location / {
                    include uwsgi_params;
                    uwsgi_pass 127.0.0.1:8000;
    
            }
              location /static {
            alias /data/www/HZT/static;
        }
    
        # 如果写成/media/,nginx无法找到项目媒体文件路径
        location /media {
            alias /data/www/HZT/media;
        }
    
    
    }

    10,再次修改uwsgi.ini文件。

    # uwsig使用配置文件启动
    [uwsgi]
    # 项目目录
    chdir=/data/www/HZT
    # 指定项目的application
    module=HztBack.wsgi:application
    # 指定sock的文件路径
    #socket=/data/www/HZT/uwsgi_conf/uwsgi.socki
    socket=127.0.0.1:8000
    # 进程个数
    processes=4
    threads=2
    
    workers=5
    pidfile=/data/www/HZT/uwsgi_conf/uwsgi.pid
    # 指定IP端口
    #http=0.0.0.0:9999
    # 指定静态文件
    for =static media
    #static-map=/static=%(chdir)/%(_)
    endfor =
    
    # 启动uwsgi的用户名和用户组
    uid=root
    gid=root
    # 启用主进程
    master=true
    # 自动移除unix Socket和pid文件当服务停止的时候
    vacuum=true
    # 序列化接受的内容,如果可能的话
    thunder-lock=true
    # 启用线程
    enable-threads=true
    # 设置自中断时间
    harakiri=30
    # 设置缓冲
    post-buffering=4096
    # 设置日志目录
    daemonize=%(chdir)/uwsgi_conf/uwsgi.log
    wsgi.ini

    11、启动Nginx.测试

     查看进程

     结果成功!!!!!!

     c

  • 相关阅读:
    ES基础(十三)Dynamic Template和Index Template
    ES基础(十一)显式Mapping设置与常见参数介绍
    ES基础(十)Dynamic Mapping 和常见字段类型
    ES基础(九)Query & Simple Query String Query
    ES基础(八)Request Body 与 Query DSL
    Docker 核心技术与实现原理
    error gathering device information while adding custom device
    Linux下使用内核源码单独编译某一模块
    kata container endpoint
    Virtio_user for Container Networking
  • 原文地址:https://www.cnblogs.com/sunjinchao/p/13330961.html
Copyright © 2020-2023  润新知