Flask+uWSGI+Nginx实现简单文件上传web应用
2017-11-20 18:03
861 查看
相关内容可阅读本人博客Nginx+Django构架OMS在线运维管理平台
本文不讲理论,只讲过程!!!
主机环境:
如果你的系统中没有pip那么执行以下操作(没有Python可以查看本人博客 一键安装python3.5->virtualenv->django开发环境)
pip安装包百度盘地址:https://pan.baidu.com/s/1eSLBgDO
安装过程如果有以下错误:
可知setuptools没有安装,安装setuptools就好了
若报文件找不到的错误,多半因为python-devel没有正确安装,执行以下命令
为了安全屏蔽具体的版本号
# vim src/core/nginx.h
如果执行了上一步,最后编译安装的版本应该是这样的:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201711/20/da5c6d362245ec308e86c856dc0eba02)
关闭编译时的调试模式,这样编译得到的源码包的大小会减少很多
vim auto/cc/gcc
对于比较纯净的系统可能更需要安装一些依赖,以下步骤是基于rhel7.2的操作:
然后执行配置和编译安装以及安装完成的服务启动验证:
以下为简单的测试页面:
无验证登录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201711/20/dddce8b8b06f540abfa7c1921ab5925c)
文件上传功能:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201711/20/c1713dfa1c4ab0c94b9c286cf1619c31)
文件在线预览功能:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201711/20/8308ef4a19d7ccbba5a6e9a61c047c5b)
本文部分细节未列出,留给后来者采坑学习,有问题可以留言交流!
本文不讲理论,只讲过程!!!
主机环境:
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
以下为简单的测试页面:
无验证登录:
文件上传功能:
文件在线预览功能:
本文部分细节未列出,留给后来者采坑学习,有问题可以留言交流!
相关文章推荐
- 基于Flask实现文件的上传功能的多实例Web服务
- java Web && 文件上传--简单实现
- ajax 文件上传应用简单实现
- node使用express搭建简单web框架并实现文件上传
- JAVA应用XFire框架来实现WebServie的大文件传输功能之二(上传)
- [py]使用flaskup结合nginx实现文件上传
- ajax 文件上传应用简单实现
- Java web 中实现简单的文件上传与下载——学习笔记
- 一个简单的QQ隐藏图生成算法 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传
- 超简单快速实现附件上传(各种格式文件)和下载显示(调用浏览器下载后选择可以打开的应用查看)
- UWSGI + Nginx 部署 Flask web 应用
- Web形式实现上传文件
- AJAX实现基于WEB的文件上传的进度控制
- AJAX实现基于WEB的文件上传的进度控制
- AJAX实现基于WEB的文件上传的进度控制
- AJAX和JSP实现的基于WEB的文件上传的进度控制代码第1/2页
- AJAX实现基于WEB的文件上传的进度控制
- [原创]用jar命令将Web应用打包成war文件的简单方法
- AJAX实现基于WEB的文件上传的进度控制
- VS2005 Web项目安装部署:利用预编译的Dll 隐藏.cs文件 的简单实现