使用 Django 或 Flask 这种框架开发 web app 的时候一般都会用内建服务器开发和调试程序,等程序完成后再移交到生产环境部署。问题是这些内建服务器通常都不支持 HTTPS,我们想在开发的时候就能够使用和测试 HTTPS,不想还没测试就部署到生产环境,所以我们需要内建服务器能支持 HTTPS.
这个问题可以通过一个外部程序 stunnel 来解决,stunnel 的作用是通过 OpenSSL 库对 TCP 会话进行加密,建立起一个安全通道,保护没有加密功能或未加密的程序。其主要功能有两个:
- 接收未加密的数据流,进行 SSL 加密,然后把加密后的数据流通过网络发送出去;
- 对已加密的数据流进行解密,并将解密后的数据流其通过网络发送给另一个程序。
了解了 stunnel 的功能后我们很容易就能想到利用 stunnel 建立一个 SSL 加密通道绑定到 Django/Flask 内建服务器上,stunnel 启动 443 端口接受用户的 HTTPS 请求,解密后发送给内建服务器的 8000 端口处理,内建服务器处理完后发送数据给 stunnel 然后加密后返回给浏览器用户。
好吧,上面说了一堆貌似很复杂,其实使用 stunnel 很简单。
在 Django/Flask 开发服务器所在的机器上安装 stunnel:
# yum install stunnel(在 CentOS 上) 或者 $ sudo apt-get install stunnel4(在 Ubuntu 上)
如果没有购买 SSL 证书的话自己生成一个,对了,这个文件的权限必须是 600 哦:
# openssl req -new -x509 -days 365 -nodes -out vpsee.pem -keyout vpsee.pem # chmod 600 vpsee.pem
新建一个配置文件叫做 https,然后用 stunnel 执行这个配置文件,启动 443 端口连接到 Django/Flask 内建服务器的 8000 端口:
# vi https pid = cert = vpsee.pem debug = 7 foreground = yes [https] accept = 443 connect = 8000 # stunnel https
启动 Django 内建服务器绑定到上面配置文件提到的 8000 端口:
# HTTPS=1 python manage.py runserver 0.0.0.0:8000
启动 Flask 内建服务器不需要特别的,改变端口到 8000,按照正常的方式启动就可以了:
# vi run.py #!flask/bin/python from app import app app.run(host='0.0.0.0', port=8000, debug = True) # ./run.py * Running on http://0.0.0.0:8000/ * Restarting with reloader
相关推荐
技术关键词: Node.js、Django、Flask 内容关键词: RESTful API、数据库管理、身份验证 用途: 开发可靠、高效的服务器端应用程序,支持前端交互 资源描述: "Node.js官方文档"是学习和使用Node.js的首要参考资源,包含...
本设计是使用Django框架进行网站的搭建,Django是python的一个开源框架,刚开始是给一家新闻广告公司开发网站使用,是微服务的开发框架,Django的核心组件是1.用于创建模型的对象关系映射;2.为最终用户设计较好的...
深入学习Python,用Django做Web后端开发现在Python的用途愈来愈广,服务器、Web、游戏、爬虫、数据分析以及人工智能学习之路还很长技术之路不能回头陷进去就出不来就跟恋爱一般,学习中、项目中印象笔记、有道云笔记...
使用Web界面训练和部署机器学习模型 - 采用Docker,PyTorch和Flask实现
事实上,即便没有Web框架,我们仍然可以通过socket或[CGI]来开发Web服务器端应用,但是这样做的成本和代价在商业项目中通常是不能接受的。通过Web框架,我们可以化繁为简,降低创建、更新、扩展应用程序的工作量。...
给您一个/.manage.py runcluster命令来启动每个项目的开发服务器 提供一种服务发现API,使您的服务可以相互查找 要求 Django的 安装 与构成您的micoservices应用程序的django项目一起创建一个新的虚拟环境和django...
2 此项目选用Flask框架,更加的灵活,比Django更高大上。 3 通过flask-session将session数据保存到redis数据库大大提高网站的执行效率,也解决了多主机数据共享问题。 4 基于蓝图划分管理不同的模块,层次更清晰,...
Zappa具有许多功能,可以轻松进行Django(和Flask BTW)开发,我在生产中使用了它,一切都很好,那么无服务器框架(简称SF)如何适应画面呢? 好奇心,我想尝试一下。 Django-SQL野兽 Django非常强大,但是它在很...
人工智能-项目实践-html-用Flask构建一个微电影视频网站 ...3.Tornado:Tornado是一个强大的、支持协程、高效并发且可扩展的web服务器,Tornado的强大在可以利用它的异步协程机制开发高并发的服务器系统。
在Python全栈开发实践中,后端开发主要使用Python语言,以及一些后端框架如Django、Flask等。 3. 数据库:数据库是指存储网站数据的地方,包括用户信息、文章内容、评论等。在Python全栈开发实践中,数据库主要使用...
酒店管理数据库管理项目:使用各种前端技术库(HTML,CSS,... 使用Python Flask Framework开发Web服务器。 python,后端是CGI。 Django框架也用于最新版本。 使用Python脚本执行DBA任务以测试查询并绘制性能图
python 作为一种脚本语言, 已经逐渐大量用于 web 后台开发中, 而基于 python 的 web 应用程序框架也越来越多, Bottle, Django, Flask 等等. 在一个 HTTP 请求到达服务器时, 服务器接收并调用 web 应用程序解析请求, ...
2 此项目选用Flask框架,更加的灵活,比Django更高大上。 3 通过flask-session将session数据保存到redis数据库大大提高网站的执行效率,也解决了多主机数据共享问题。 4 基于蓝图划分管理不同的模块,层次更清晰,...
使用Python可以轻松实现这个系统,可以使用Python的Web框架Django或Flask来开发网站,使用Python的数据库模块MySQL或PostgreSQL来存储商品和订单信息。 3. 聊天室 python小型系统制作案例全文共4页,当前为第1页。 ...
掌握一个常用的Web框架,如Django或Flask(Python)、Express.js(Node.js)、Spring Boot(Java)、Ruby on Rails(Ruby)等。这些框架提供了许多现成的功能和工具,可以加速开发过程。 3. 学习数据库管理 了解...
1.Python:学习Python的基础语法,然后深入了解Django或Flask等Web框架。 2.Java:学习Java的基础知识和面向对象编程,然后探索Spring Boot等框架。 3.Node.js:学习JavaScript的服务器端应用,并熟悉Express等框架...
Python全栈开发-Python面授教程视频--内含学习路线 120.97GB高质量视频 课件+源码(亲测可用无错误完美运行 基础班=Linux基础 + python基础 + 面向对象 + 飞机大战 就业班= 01 网络编程 02 多任务 03 web服务器v3.1 ...