zoukankan      html  css  js  c++  java
  • supervisor,uwsgi部署Flask

    这个东西耗费了我一天半的时间,中间搞得快要吐血。。。。

    本文环境flask+mysql+python3+uwsgi+nginx+腾讯云乌班图14.04x64
    用的软件Xshell+WinSCP
    时光匆匆

    配置mysql

    首先最好添加腾讯云默认用户ubuntu到sudo列表
    我一开始没有用这个,所以下面的有些步掫就有些显得多余

    adduser <username> sudo
    

    安装mysql并登陆

    sudo apt-get install mysql-server #安装
    mysql -u youruser -pyourpassword(无空格) #登陆
    

    建立相关的数据库和表

    create database yourdb; #建数据库
    
    CREATE TABLE `yourtb` (
      `user_id` BIGINT NOT NULL AUTO_INCREMENT,
      `user_name` VARCHAR(45) NULL,
      `user_password` VARCHAR(300) NULL,
      PRIMARY KEY (`user_id`));
    #建立用户表单
    
    CREATE TABLE `yourtb` (
      `words_id` int(11) NOT NULL AUTO_INCREMENT,
      `words_title` varchar(45) DEFAULT NULL,
      `words_description` varchar(5000) DEFAULT NULL,
      `words_user_id` varchar(45) DEFAULT NULL,
      `words_date` datetime DEFAULT NULL,
      PRIMARY KEY (`words_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT character set = utf8;
    #建立留言表单
    

    配置pip和虚拟环境

    代码是python3写的,配置虚拟环境也要python3,很好的是有python对应pip->pip3
    安装pip3并安装virtualenv

    sudo apt-get install python3-pip
    pip3 install virtualenv
    

    下面是建立网站代码的目录,你可以选择/var/www/flask/这个路径
    也可以按照我的这个/home/www/flask

    mkdir www 
    mkdir flask
    virtualenv venv #建立虚拟环境
    source venv/bin/activate #进入虚拟环境
    

    首先可以利用txt直接导入所需要的库

    pip freeze>requirements.txt #导出所需库
    pip install -r requirements.txt #导入所需库(一定要在venv下进行)
    #实际上我要上传的只需要这两个库
    pip install flask
    pip install flask-mysql
    

    上传你的应用

    flask

    配置uwsgi

    命令如下

    (venv) root@VM-16-119-ubuntu:/home/www/flask# pip install uwsgi
    

    配置uwsgi:config.ini我比较喜欢用WinSCP创建文件
    如果没有添加ubuntu到sudo,就需要将相关目录改下权限,才能顺畅的用WinSCP

    sudo chown -R ubuntu:ubuntu /home/www/flask/
    #修改到ubuntu
     
    #config.ini
    [uwsgi]
    
    # uwsgi 启动时所使用的地址与端口
    socket = 127.0.0.1:8080 
    
    # 指向网站目录
    chdir = /home/www/flask 
    
    # python 启动程序文件
    wsgi-file = app.py 
    
    # python 程序内用以启动的 application 变量名
    callable = app 
    
    # 处理器数
    processes = 4
    
    # 线程数
    threads = 2
    
    #状态检测地址
    stats = 127.0.0.1:9191
    

    可以利用下面的命令运行一下uwsgi
    成功如图

    uwsgi config.ini
    

    uwsgi

    安装supervisor

    Supervisor

    supervisor可以同时启动多个应用,当某个应用挂掉的时候,他可以自动重启该应用,保证可用性
    它的默认配置文件不需要修改,添加一个用于启动你的项目的uwsgi的supervisor配置 flask_supervisor.conf

    sudo apt-get install supervisor
    
    /etc/supervisor/conf.d/ #在这里新建flask_supervisor.conf
    
    #flask_supervisor.conf
    
    [program:flask]
    # 启动命令入口
    command=/home/www/flask/venv/bin/uwsgi /home/www/flask/config.ini
    
    # 命令程序所在目录
    directory=/home/www/flask
    #运行命令的用户名
    user=root
            
    autostart=true
    autorestart=true
    #日志地址
    stdout_logfile=/home/www/flask/logs/uwsgi_supervisor.log
    

    需要创建日志文件uwsgi_supervisor.log
    supervisor的启动和停止

    sudo service supervisor start
    sudo service supervisor stop
    

    安装nginx

    安装nginx并且配置default文件

    sudo apt-get install nginx
    
    /etc/nginx/sites-available #default路径
    
    #default内容
    
    server {
          listen  80;
          server_name XXX.XXX.XXX; 
        
           location /static {
        	root /home/www/flask/;
           }
          location / {
            include      uwsgi_params;
            uwsgi_pass   127.0.0.1:8080;  
            uwsgi_param UWSGI_PYHOME /home/www/flask/venv; # 指向虚拟环境目录
            uwsgi_param UWSGI_CHDIR  /home/www/flask; # 指向网站根目录
            uwsgi_param UWSGI_SCRIPT app:app; # 指定启动程序
          }
        }
    

    每次改完配置需要重启nginx

     sudo service nginx restart
    

    后记

    部署成功之后,一直登陆显示密码错误,这问题头疼了好几天,最后还是老组长耐心帮我修改好了,跪谢!!!
    原因竟然是建字段设置不准确

    error-1
    error-2

    参考链接:
    阿里云部署 Flask + WSGI + Nginx 详解
    在 Ubuntu 上使用 Nginx 部署 Flask 应用
    python3中文手册

  • 相关阅读:
    What is a .Net Assembly?
    Reading Assembly attributes in VB.NET
    Debugging With Visual Studio 2005
    The Rules for GetHashCode
    The article discusses a couple of new features introduced for assemblies and versioning in Visual Studio 2005.
    Getting a copy of a DLL in the GAC
    Modeling SingleNeuron Dynamics and Computations: A Balance of Detail and Abstraction
    从数学到密码学(八)
    从数学到密码学(十)
    从数学到密码学(三)
  • 原文地址:https://www.cnblogs.com/bay1/p/10982430.html
Copyright © 2011-2022 走看看