• 项目部署


    linux安装python3

    下载python3包,解压并进入目录

    安装依赖

    • - yum install openssl-devel # pip依赖
    • - yum install sqlite-devel # sqliet依赖

    编译安装py3

    • - ./configure
    • - make
    • - make install

    项目主要配置

    DEBUG配置改为False

    ALLOWED_HOSTS = [] 允许主机IP端口

    uwsgi配置项目

    安装uwsgi : pip3 install uwsgi

    直接启动 : 

    uwsgi --http :端口号 --chdir 项目目录 --wsgi-file wsig文件
    # uwsgi --http :9003 --chdir /data/s8day145/ --wsgi-file s8day145/wsgi.py
    

    配置文件启动

    [uwsgi]
    http = 0.0.0.0:9005 # IP,端口 如果是本机http改为socket
    chdir = /data/oldboy/ # 项目目录
    wsgi-file = oldboy/wsgi.py # wsgi.py 文件
    processes = 4 # 进程数,根据核心数配置
    static-map = /static=/data/oldboy/allstatic # 静态文件目录
    
    启动
    uwsgi --ini s8day145_uwsgi.ini # 配置文件
    
    Django收集静态文件
    配置
        DEBUG = False
        STATIC_ROOT = "allstatic"
    命令
    python3 manage.py collectstatic # 将所有的静态文件备份在在配置的STATIC_ROOT

    flask配置

    [uwsgi]
    socket = 127.0.0.1:5051
    pythonpath = /home/flask # 项目目录
    module = manage # app执行的py文件名
    wsgi-file = /home/flask/manage.py # app执行的py文件路径
    callable = app # flask实例名
    processes = 4
    threads = 2
    daemonize = /home/wyz/flask/server.log
    

      

    Nginx+uwsgi

    nginx作用:

    • - 处理静态文件
    • - 反向代理
    • - 负载均衡(LVS、haproxy)

    uwsig作用:

    • - 处理动态请求

    Nginx配置

    user root;
    worker_processes 4; # 开启进程数
    
    error_log /var/log/nginx/error.log; # 错误日志
    pid /var/run/nginx.pid; # 不用管
    
    events {
    	worker_connections  1024; # 单个进程允许最大外部链接
    }
    
    
    http {
    	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    					  '$status $body_bytes_sent "$http_referer" '
    					  '"$http_user_agent" "$http_x_forwarded_for"';
    
    	access_log  /var/log/nginx/access.log  main;
    
    	sendfile            on;
    	tcp_nopush          on;
    	tcp_nodelay         on;
    	keepalive_timeout   65;
    
    	include             /etc/nginx/mime.types;
    	default_type        application/octet-stream;
    
    	upstream django { # 相当于一个名叫django的池
    		server 127.0.0.1:8001; # 指定ip端口
    		server 127.0.0.1:8002; 
    	} 
    	server {
    		listen      80; # 监听80端口
    
    		charset     utf-8;
    
    		# max upload size
    		client_max_body_size 75M;
    
    		location /static { # location路由的匹配
    			alias  /data/s8day145/allstatic; 
                            # 当客户端请求 /request_path/image/cat.png 的时候, 
                            # Nginx把请求映射为/local_path/image/cat.png 
    		}
    
    		location / {
    			uwsgi_pass  django; # 指定池或指定IP端口
    			include     uwsgi_params;
    		}
    	}
    }
    

      池中IP端口就是uwsgi启动的IP端口

    uwsgi_pass 是给uwsgi用的, 负载均衡还有一个proxy_pass, 可以对应一个HTTP服务, 或者一个负载均衡池, 前面要写上HTTP:

    保持服务启动

    安装supervisor : yum安装即可

    配置中添加

    /etc/supervisord.conf
    [program:s8day145] # 起个名
    command=/usr/local/bin/uwsgi --ini /data/s8day145/s8day145_uwsgi_8001.ini ;命令
    priority=999                ; 优先级(越小越优先)
    autostart=true              ; supervisord启动时,该程序也启动
    autorestart=true            ; 异常退出时,自动启动
    startsecs=10                ; 启动后持续10s后未发生异常,才表示启动成功
    startretries=3              ; 异常后,自动重启次数
    exitcodes=0,2               ; exit异常抛出的是0、2时才认为是异常
    stopsignal=QUIT             ; 杀进程的信号
    stopwaitsecs=10             ; 向进程发出stopsignal后等待OS向supervisord返回SIGCHILD 的时间。若超时则supervisord将
    使用SIGKILL杀进程
    user=root                 ; 设置启动该程序的用户
    log_stdout=true             ; 如果为True,则记录程序日志
    log_stderr=false            ; 如果为True,则记录程序错误日志
    logfile=/var/log/cat.log    ; 程序日志路径
    logfile_maxbytes=1MB        ; 日志文件最大大小
    logfile_backups=10          ; 日志文件最大数量
    

    启动软件

    systemctl start supervisord.service
    

      

  • 相关阅读:
    原创 计算机系学生大学四年应该这样过
    ff3f34fq34f
    指针 引用
    POJ3352Road Construction
    POJ3308Paratroopers
    北大ACM试题分类 实时更新我所有的解题报告链接
    POJ2516Minimum Cost
    【转】一位ACMer过来人的心得
    POJ2528Mayor's posters
    POJ2186Popular Cows
  • 原文地址:https://www.cnblogs.com/wwg945/p/9079003.html
Copyright © 2020-2023  润新知