Centos部署Flask
项目地址:水果识别demo,请使用Microsoft Edge!
服务器代理
使用的代理一共有两个,nginx和uwsgi,先说明一下,如果不用nginx一样可以访问你的项目,使用nginx的目的是为了安全和负载均衡。配置了nginx做前端代理,uwsgi作后端代理的服务器(这里所说的前后端都是相对的位置,并无实际含义),在处理来自Internet的请求时,要先经过nginx的处理,nginx把请求再交给uwsgi,经过uwsgi才能访问到项目本身。
没有nginx而只有uwsgi的服务器,则是Internet请求直接由uwsgi处理,并反馈到我们的项目中。
nginx可以实现安全过滤,防DDOS等保护安全的操作,并且如果配置了多台服务器,nginx可以保证服务器的负载相对均衡。
而uwsgi则是一个web服务器,实现了WSGI协议(Web Server Gateway Interface),http协议等,它可以接收和处理请求,发出响应等。所以只用uwsgi也是可以的。
CentOS环境配置
安装virtualenv
- 安装virtualenv
1
pip install virtualenv
- 创建虚拟环境(环境名为python3.6)
1
# virtualenv -p /usr/local/python3/bin/python3.6 /python3.6
- 进入虚拟环境(每次编辑需进入此虚拟环境)
1
# source /python3.6/bin/activate
- 成功进入虚拟环境显示
1
(python3.6) [root@···]#
安装所需源
- 在虚拟环境中安装flask和uwsgi
1
2# pip install flask
# pip install uwsgi - 在虚拟环境中安装flask项目所需源
1
2
3
4
5# pip3 install pillow
# pip3 install opencv-python
# pip3 install tensorflow==1.5
# pip3 install numpy
# pip3 install requests
安装Nginx
- 下载
1
2# 下载版本号可根据目前官网最新稳定版自行调整
wget -c https://nginx.org/download/nginx-1.16.1.tar.gz - 安装
1
2# 根目录使用ls命令可以看到下载的nginx压缩包,然后解压
tar -zxvf nginx-1.16.1.tar.gz1
2# 解压后进入目录
cd nginx-1.16.11
2# 使用默认配置
./configure1
2
3# 编译安装
make
make install - 启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14# cd /usr/local/nginx/sbin
./nginx #启动
./nginx -s stop #停止,直接查找nginx进程id再使用kill命令强制杀掉进程
./nginx -s quit #退出停止,等待nginx进程处理完任务再进行停止
./nginx -s reload #重新加载配置文件,修改nginx.conf后使用该命令,新配置即可生效
查看nginx进程
# ps aux|grep nginx
停止nginx
# service nginx stop
关闭nginx的进程
killall -9 nginx
参考:
CentOS7 nginx安装与卸载
centos7安装Nginx、使用nginx记录
kill杀进程
- 用kill来杀死某一个进程
kill,加选项-9,加PID,表示杀死进程编号为PID的这个进程
-1 重启
#kill -9 PID - 用killall杀死一类进程
#killall,加选项-9,加服务名, 表示杀死该服务的所有进程
-1 重启
#killall -9 service - 用pkill踢出某个终端
pkill,加选项-9,加终端号,表示踢出该终端
-1 重启
#pkill -9 pts/0 - 查看进程
1 | #ps -aux | grep gunicorn |
参考:centos下kill、killall、pkill命令区别
Flask配置
配置uwsgi
文件路径:/usr/local/nginx/html/fruit_classification/uwsgiconfig.ini
在部署项目的根目录下创建配置文件uwsgiconfig.ini,添加配置内容如下:
[uwsgi]
# uwsgi 启动时所使用的地址与端口(可以与项目端口不一致)
socket = 127.0.0.1:8001
# 指向网站目录
chdir = /usr/local/nginx/html/fruit_classification/
# python 启动程序文件
wsgi-file = /usr/local/nginx/html/fruit_classification/ app.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 4
# 线程数
threads = 2
# 缓冲区
buffer-size = 32768
# 状态检测地址
stats = 127.0.0.1:9191
# 日志保存
daemonize = /usr/local/nginx/html/fruit_classification/ fruit_classification.log
配置nginx
文件路径:/usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name 47.101.180.197;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
uwsgi_param UWSGI_PYHOME /usr/local/python3/ bin/python3.6; #python位置,要么是虚拟机,要么是运行的环境变量位置
uwsgi_param UWSGI_CHDIR /usr/local/nginx/html/fruit_classification; #项目根目录
uwsgi_param UWSGI_SCRIPT manage:app;
# root html;
# index index.html index.htm;
}
启动Flask
上传项目(WinSCP)
项目上传地址:/usr/local/nginx/html/fruit_classification
启动
1 | # source /python3.6/bin/activate |
参考:
CentOS 下用 Nginx 和 uwsgi 部署 flask 项目
阿里云服务器Centos上部署一个Flask项目
centos服务器部署flask项目
centos7安装Nginx、使用nginx记录
CentOS7 nginx安装与卸载