这个东西耗费了我一天半的时间,中间搞得快要吐血。。。。
本文环境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
上传你的应用
配置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
安装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
后记
部署成功之后,一直登陆显示密码错误,这问题头疼了好几天,最后还是老组长耐心帮我修改好了,跪谢!!!
原因竟然是建字段设置不准确
参考链接:
阿里云部署 Flask + WSGI + Nginx 详解
在 Ubuntu 上使用 Nginx 部署 Flask 应用
python3中文手册