ubuntu+nginx+uwsgi部署django web项目

一 、前言

​ 将本地开发的django项目部署至linux上的uwsgi服务器,并配置nginx,完成基于ubuntu+nginx+uwsgi的上线运行。下面整理相关步骤。

二 、python3环境安装

  1. 编译源码安装

  2. 装一些编译源码需要的依赖文件

  3. 输入:

    yum -y install gcc make cmake zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel

  4. python包扔进去

  5. 解压缩:

    tar -zxvf Python-3.6.5.tgz

  6. 创建个目录,用于一会儿安装py3:

    mkdir python3

  7. 指定编译位置到刚才创建的目录

    ./configure --prefix=/usr/local/python3/

  8. make编译:

    mkae

  9. 安装:

    make install

  10. 做一个链接,便于访问

    ln -s/usr/local/python3/bin/python3.6/usr/local/bin/python3

  11. 此时,可以在任何位置访问

  12. 增加pip的链接

    ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

三 、django安装

  1. 修改环境配置

    vi /etc/profile

  2. 加一句话

    PATH=$PATH:$JAVA_HOME/bin:/usr/local/python3/bin/

  3. 执行生效

    . /etc/profile

  4. 安装基础环境配置

    yum groupinstall "Development tools"

  5. 安装可能用到的包

    yum -y install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

  6. 指定清华源的下载包,安装 virtualenv,提高速度

    ```pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv``

  7. 升级pip3

    pip3 install --upgrade pip

  8. 指定版本

    pip3 install django==1.11

  9. pip3安装

    pip3 install -i https://pypi.douban.com/simple/ django==版本号

四、virtualenv虚拟环境

  1. 安装

    pip3 install virtualenv

  2. 可以找到包的位置

    find /usr/local/python/ -name site-packages

  3. 创建虚拟环境

    virtualenv --python=python3 project01

  4. 进入bin目录,执行如下,可以进入虚拟环境

    . activate

  5. 虚拟环境里安装django

    pip install django==1.11.26 -i https://pypi.tuna.tsinghua.edu.cn/simple

  6. 退出虚拟环境

    deactivate

五 、引入项目依赖模块

  1. 导出依赖模块

    pip3 freeze > requirements.txt

  2. 进入虚拟环境

    . activate

  3. 把上面提取的文件模块,导入虚拟环境

    pip3 install -i https://pypi.douban.com/simple -r /home/requirements.txt

六 、uWSGI安装

  1. 之前是这样运行,这样运行实际上调用了py内置的socket模块单进程单线程,效率比较低,uwsgi启动django项目,可以支持多线程,且稳定效率高

  2. 在虚拟环境里来用

  3. 安装uwsgi,可以指定个源

    pip3 install uwsgi

  4. 查看版本

    uwsgi --version

  5. 编辑uwsgi.ini配置文件,写入如下内容

    [uwsgi]
    # 监听的端口
    http = :8000
    
    # 指定和nginx进行套接字通信的方式:端口或文件
    # socket = 127.0.0.1:8000
    # socket = /home/tracer/tracer.sock
    
    # 项目所在目录,和manage.py同级
    chdir = /home/tracer
    
    
    # 主应用中的wsgi文件
    wsgi-file = tracer/wsgi.py
    
    # 代理静态资源:路径映射
    static-map = /static=/home/tracer/web/static
    
    # 启动一个master进程,来管理其余的子进程
    master=True
    processes = 4
    threads = 2
    
    # 保存主进程的pid,用来控制uwsgi服务
    pidfile=/home/tracer/uwsgi.pid
    stats=/home/tracer/uwsgi.status
    
    # pidfile=%(chdir)/root/tracer/uwsgi.pid
    
    #  设置后台运行,保存日志
    daemonize=/tmp/uwsgi.log
    #  deamonize=1  ; 用来配置background运行
    
    # 设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏
    max-requests=5000
    
    # 服务停止时自动移除unix Socket和pid文件
    vacuum=true
    
    # 设置自中断时间
    harakiri=3600
    uwsgi_read_timeout=3600
    uwsgi_send_timeout=3600
    uwsgi_connect_timeout=3600
    
  6. 启动uwsgi:

    uwsgi --ini ./uwsgi.ini

  7. 退出虚拟环境

    deactivate

七 、supervisor安装

  1. 是一个py开发进程管理工具

  2. 作用:你可以用它去启动uwsgi,当uwsgi挂掉了,supervisor帮助自动重启,另外还可以很方便地管理uwsgi进程

  3. 安装

    yum -y install python-setuptools

  4. 生成可执行文件

    easy_install supervisor

  5. 生成配置到 /etc下

    echo_supervisord_conf > /etc/supervisord.conf

  6. 修改生成的配置文件,文件最后加入如下内容

    vi /etc/supervisord.conf

    注意,第一行修改成自己的项目名,第二行command根据自己路径修改

    [program:mysite]
    
    command= /home/app01/bin/uwsgi --ini /home/app01/bin/uwsgi.ini  ;
    
    autostart=true       ;
    
    startsecs=10         ;
    
    autorestart=true     ;
    
    stopasgroup=true     ;
    
    killasgroup=true     ;
    
  7. 启动supervisor,会自动把uwsgi启动

    supervisord -c /etc/supervisord.conf

  8. 此时可以查看到运行起来的进程

    ps aux | grep supervisor ps aux | grep uwsgi

  9. 还可以进入supervisor的终端控制台

    supervisorctl -c /etc/supervisord.conf

  10. 控制台里,可以启动或停止你的项目

    stop/start 项目名

  11. 刷新nginx配置

    ```nginx -s reload``

posted @ 2020-04-29 12:46  最后的卑微程序员  阅读(136)  评论(1)    收藏  举报