Loading

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中文手册

posted @ 2017-06-05 02:07  bay1  阅读(243)  评论(0编辑  收藏  举报