您的位置:首页 > 运维架构 > Nginx

Flask+uWSGI+Nginx实现简单文件上传web应用

2017-11-20 18:03 861 查看
相关内容可阅读本人博客Nginx+Django构架OMS在线运维管理平台

本文不讲理论,只讲过程!!!

主机环境:

rhel 7.2 x86_64bit 192.168.1.112 python系统自带


1、安装flask

pip install Flask


如果你的系统中没有pip那么执行以下操作(没有Python可以查看本人博客 一键安装python3.5->virtualenv->django开发环境

pip安装包百度盘地址:https://pan.baidu.com/s/1eSLBgDO

# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install


2、安装uWSGI

pip install uwsgi


安装过程如果有以下错误:

ImportError: No module named setuptools


可知setuptools没有安装,安装setuptools就好了

#  wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz 
解压setuptools包

# tar -xvf setuptools-0.6c11.tar.gz

# cd setuptools-0.6c11

编译setuptools

# python setup.py build

开始执行setuptools安装

# python setup.py install


若报文件找不到的错误,多半因为python-devel没有正确安装,执行以下命令

yum install python-devel -y


3 、 安装Nginx

# tar -zxvf nginx-1.12.2.tar.gz
# cd nginx-1.12.2


为了安全屏蔽具体的版本号

# vim src/core/nginx.h

#define NGINX_VER          "Lockey23"// NGINX_VERSION


如果执行了上一步,最后编译安装的版本应该是这样的:



关闭编译时的调试模式,这样编译得到的源码包的大小会减少很多

vim auto/cc/gcc

# debug
CFLAGS="$CFLAGS -g"


对于比较纯净的系统可能更需要安装一些依赖,以下步骤是基于rhel7.2的操作:

# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # sed -i  's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
# yum clean all
# yum install gcc-c++ pcre-devel openssl-devel -y


然后执行配置和编译安装以及安装完成的服务启动验证:

# ./configure --prefix=/usr/local/nginx --with-file-aio --with-threads --with-http_ssl_module --with-http_stub_status_module
# make && make install
# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
# nginx -t
# nginx
# curl localhost


4、编写你的应用:

贴下我的应用结构,GitHub地址

[root@original flaskapp]# tree
.
├── app.py
├── app.pyc
├── static
│?? ├── js.js
│?? └── main.css
├── templates
│?? ├── index.html
│?? └── page_not_found.html
└── uwsgi.ini

2 directories, 7 files


5、uwsgi.ini文件解析:

[uwsgi]
socket = 127.0.0.1:8080#绑定的端口号
pythonpath = /root/flaskapp#项目路径
module = app#要运行的程序、模块
callable = app#模块内的Flask实例
processes = 2#uwsgi程序开启的进程数
threads = 2#uwsgi程序开启的线程数


6、NGINX配置文件重点内容解析:

location / {
include      uwsgi_params;
uwsgi_pass   127.0.0.1:8080;  # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
uwsgi_param UWSGI_CHDIR  /root/flaskapp/; # 指向应用目录
uwsgi_param UWSGI_SCRIPT app:app; # 指定启动程序
}


7、启动uWSGI服务以及Nginx服务进行访问测试:

[root@original flaskapp]# ls
app.py  app.pyc  nginx.conf  static  templates  uwsgi.ini
[root@original flaskapp]# uwsgi uwsgi.ini

[root@original ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@original ~]# nginx -s reload


以下为简单的测试页面:

无验证登录:



文件上传功能:



文件在线预览功能:



本文部分细节未列出,留给后来者采坑学习,有问题可以留言交流!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: