首页 > 其他 > 详细

Django后端部署详细

时间:2020-12-21 21:12:41      阅读:39      评论:0      收藏:0      [点我收藏+]

后端部署文档

所用技术:

  1. nginx
  2. uwsgi
  3. supervisor
  4. daphne
  5. celery
  6. python3.6

技术讲解

python3.6
安装依赖: sudo apt install openssl* zlib*
从官网下载源码:sudo wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
解压:sudo tar -xzvf Python-3.6.8.tgz
进入源码目录:cd Python-3.6.8
安装到/usr/local/python目录,不用事先创建python目录:
sudo ./configure --prefix=/usr/local/python # --prefix指定目录
编译:sudo make
安装:sudo make install
创建python与pip软连接
sudo ln -s /usr/local/python/bin/python3.6 /usr/bin/python
sudo ln -s /usr/local/python/bin/pip3.6 /usr/bin/pip

注意:若是python未添加到环境变量的话需要将其用到的模块创建软连接

celery
安装:pip install celert
创建软连接:sudo ln -s /usr/local/python/bin/celery /usr/bin/celery
nginx
安装: sudo apt-get install nginx
运行: sudo /etc/init.d/nginx restart (根据nginx具体位置)
验证:打开浏览器-->IP:80-->Welcome to Nginx! (出现则表示成功)
uwsgi:
安装: sudo pip3 install uwsgi
验证:uwsgi --http :8000 --chdir project(项目名)/ --module uwsgiproject.wsgi
	###### `注意:uwsgiproject.wsgi是你自己的配置的uwsgi文件,一定要具体到此文件的位置`
daphne :
安装:sudo pip3 install daphne
运行:daphne -p 8001 -b 127.0.0.1 project.asgi:application
注意:daphne 主要为ws请求和channels配合,形成聊天功能,如果项目中没有channels可以不配置

supervisor:

[supervisor是一个Linux/Unix系统上的进程监控工具,supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启]

安装: pip3 install supervisor
配置软连接: ln -s /usr/local/python3/bin/supervisord /usr/bin/supervisord
启动:supervisord -c /etc/supervisord.conf

1.配置nginx(配置文件):

1.1添加配置文件

  • cd /etc/nginx/sites-enabled  或者 cd /etc/nginx/conf.d 
    	#注意:如果需要在其他地方添加配置文件请在 /etc/nginx/nginx.conf 文件中添加具体内容请百度
    sudo vim project.conf  #project 明明随意,一般命名为项目名
    

    1.2具体内容

  • #具体内容
    server{
     	 # 监听本项目端口,浏览器输入的端口
     	listen 8000;
     	server_name owd.com;
     	charset utf-8;
     	client_max_body_size 75M;
     	# 收集项目静态文件路径
     	location /static{
         	alias project/static;  # 静态文件目录
         }
    	# 和uwsgi通信端口和项目通信文件uwsgi_params
         location /api{  
             
         	include uwsgi_params;
         	uwsgi_pass 127.0.0.1:8001;  #此端口为和uwsgi通信的端口
         }
        #把所有ws开头的请求转发给daphne 如果没有daphne可去除此location
        location /ws {
            proxy_pass http://127.0.0.1:8002 #此为和daphne通讯的端口
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
        }
    
     }
    

    1.3重启nginx服务

  • 
    
    #重启nginx服务
    sudo /etc/init.d/nginx restart 
    #或
    service nginx restart
    

2.配置uwsgi(配置文件)

2.1拷贝uwsgi_params文件到项目目录

  • #拷贝uwsgi_params文件到项目目录
    cp /etc/nginx/uwsgi_params /home/project/
    

    2.2创建uwsgi配置文件

  • mkdir uwsgi  #最好在项目根目录下
    cd uwsgi
    vim uwsgi.ini   #uwsgi命名随意
    

2.3具体内容

  • #具体内容
    [uwsgi]
    # 和nginx通信的端口
    socket=127.0.0.1:8001
    # 项目路径
    chdir=/home/codfish
    # wsgi.py路径
    wsgi-file=codfish/wsgi.py
    # 进程数
    processes=4
    # 线程数
    thread=2
    # 本项目占用uwsgi端口
    stats=127.0.0.1:8081
    

3.配置daphne(配置文件asgi.py)

3.1内容如下

  • # 项目/settings和wsgi.py的同目录下创建asgi.py
    
    #内容如下
    """
    ASGI entrypoint. Configures Django and then runs the application
    defined in the ASGI_APPLICATION setting.
    """
    
    import os
    import django
    from channels.routing import get_default_application
    
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")  #project为项目名
    django.setup()
    application = get_default_application()
    
    

    3.2启动daphne服务测试

  • #启动daphne服务测试(在项目根目录下)
    daphne -p 8991 project.asgi:application
    #or
    daphne -b 127.0.0.1 -p 8991 project.asgi:application
    

4.配置supervisord(配置文件)

  • #配置文件所在目录 /etc/ supervisord.conf
    #配置daphne, 同时还配置了uwsgi,可以根据需求进行具体配置 
    
    #具体内容如下
    
    [supervisord]
    nodaemon=true
    [supervisorctl]
    
    #daphne配置,如果没有可以删除
    [program:daphne]
    directory=project  #项目目录 (绝对路径)
    command=daphne -b 127.0.0.1 -p 8001 --proxy-headers project.asgi:application #启动命令 project为项目名
        #8001端口请和nginx与daphne通讯的端口相同
    autostart=true
    autorestart=true
    stdout_logfile=/www/wwwroot/haomai/haomai/websocket.log  #日志 请自定义日志位置
    redirect_stderr=true
    
    #uwsgi配置 如果没有可以删除
    [program:uwsgi]
    directory=project  #uwsgi配置文件目录 (绝对路径)
    command=uwsgi --ini uwsgi.ini #启动命令  uwsgi.ini 为你的uwsgi的配置文件
    autostart=true
    autorestart=true
    stdout_logfile=/www/wwwroot/haomai/haomai/uwsgi.log  #日志 请自定义日志位置
    redirect_stderr=true
    
    [program:celery.worker]
    ;指定运行目录
    directory=/home/lzz/Desktop/CodFish
    ;运行目录下执行命令
    command=celery -A CodFish worker -B
    
    ;启动设置
    numprocs=1          ;进程数
    autostart=true      ;当supervisor启动时,程序将会自动启动
    autorestart=true    ;自动重启
    
    ;停止信号,默认TERM
    ;中断:INT (类似于Ctrl+C)(kill -INT pid),退出后会将写文件或日志(推荐)
    ;终止:TERM (kill -TERM pid)
    ;挂起:HUP (kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同
    ;从容停止:QUIT (kill -QUIT pid)
    stopsignal=INT
    ;输出日志
    stdout_logfile=/home/lzz/Desktop/log/celery_worker.log
    stdout_logfile_maxbytes=10MB  ;默认最大50M
    stdout_logfile_backups=10     ;日志文件备份数,默认为10
    
    ;错误日志
    redirect_stderr=false         ;为true表示禁止监听错误
    stderr_logfile=/home/lzz/Desktop/log/celery_worker_err.log
    stderr_logfile_maxbytes=10MB
    stderr_logfile_backups=10                     
    
    

    4.1启动supervisor

  • #启动supervisor
    supervisord -c /etc/supervisord.conf
    

    4.2将supervisord加入了开机自启动设置

  • #创建supervisord.service
    #我们在任意位置随便创建个这个文件,运行以下命令
    touch supervisord.service
    vim supervisord.service
    
  • #写入以下内容
    #supervisord.service
    
    [Unit] 
    Description=Supervisor daemon
    
    [Service] 
    Type=forking 
    ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf 
    ExecStop=/usr/bin/supervisorctl shutdown 
    ExecReload=/usr/bin/supervisorctl reload 
    KillMode=process 
    Restart=on-failure 
    RestartSec=42s
    
    [Install] 
    WantedBy=multi-user.target
    
  • #将文件拷贝到/usr/lib/systemd/system/
    cp supervisord.service /usr/lib/systemd/system/
    
  • #启动服务
    systemctl enable supervisord
    
  • #验证一下是否为开机启动
    systemctl is-enabled supervisord
    #enabled为开机自启
    

5.fdfs以及docker安装

5.1docker安装

?

  • ubuntu安装:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    centOS安装:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    

    5.2fastdfs安装

  • pip install fdfs_client-py-master.zip   # fdfs_client-py-master 安装包在文件夹内
    pip install mutagen
    pip isntall requests
    sudo docker load -i 文件路径/fastdfs_docker.tar    # fastdfs_docker安装包在文件夹内
    

5.3 docker 镜像安装

  sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
  
  sudo docker run -dti --name storage --network=host -e TRACKER_SERVER=146.56.199.104:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage   #IP地址需要更改
    
  sudo docker  container  ls  #查看已启动的镜像镜像
sudo docker  container  stop storage  #停止镜像
  sudo docker  container  rm storage  #删除镜像
  sudo docker  container  start storage #启动镜像
  sudo docker  container  restart tracker   #重启镜像
  
  sudo docker exec -it tracker /bin/bash  #进入镜像

sudo pkill -f daphne -9

sudo pkill -f uwsgi -9

sudo pkill -f celery -9

supervisord -c /etc/supervisord.conf

sudo docker container start storage

sudo docker container start tracker

celery -A CodFish worker -B
celery -A CodFish beat -l info

Django后端部署详细

原文:https://www.cnblogs.com/py2001/p/14169473.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!