前言:一般在本地运行flask项目通常是直接python3 文件名.py,然后打开:http://127.0.0.1:5000 查看代码结果

这次主要是记录flask在python3 环境结合nginx +gunicorn在服务器上进行项目的部署

(一)运行环境:
虚拟机centos7
python3 环境
nginx
gunicorn
virtualenv
难点:nginx gunicorn的安装配置

(二)nginx、gunicorn简介
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等

gunicorn是一个python Wsgi http server,只支持在Unix系统上运行,来源于Ruby的unicorn项目。Gunicorn使用prefork master-worker模型(在gunicorn中,master被称为arbiter),能够与各种wsgi web框架协作。

(三)软件安装
(1)首先安装gunicorn

直接使用命令:pip install gunicorn

(2) 将gunicorn 加入到app.run()中,

这里我在路径为:/home/flaskproject/flaskweb 下新建一个myweb.py 作为入口函数
代码为:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)
app.run(
1
2
3
4
5
6
7
8
9
10

(3)用命令启动gunicorn

在myweb.py路径下,一定要记住是当前路径下!!
方式一:

gunicorn myweb:app
1

python 虚拟环境的安装:

pip install virtualenv
1
然后一顿骚操作:

mkdir flaskproject

cd flaskproject

virtualenv flaskprojectenv
1
2
3
4
5
然后进行激活:

source flaskprojectenv/bin/activate
1
正如下图一样的骚操作,之前我也是很少用虚拟环境的,现在感觉虚拟环境并没有那么神秘,因为以前是很拒绝,不会用,不过这次是会用了,

退出虚拟环境的命令是:deactivate(这里我只是说一下)

这时候我们本地服务器看一下是否运行起来(已经有hello world):

[root@localhost flaskproject]# curl http://127.0.0.1:8000
hello world[root@localhost flaskproject]#
1
2
ctrl + c 停掉当前环境,我们使用第二种方式试一下

专门为处理高并发则要开多个进程和修改监听端口方式:

gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app
1
如下代码:

(flaskprojectenv) [admin@localhost flaskweb]$ gunicorn -w 4 -b 127.0.0.1:8000 myweb:app
[2018-05-28 10:57:11 -0400] [1813] [INFO] Starting gunicorn 19.8.1
[2018-05-28 10:57:11 -0400] [1813] [INFO] Listening at: http://127.0.0.1:8000 (1813)
[2018-05-28 10:57:11 -0400] [1813] [INFO] Using worker: sync
[2018-05-28 10:57:11 -0400] [1816] [INFO] Booting worker with pid: 1816
[2018-05-28 10:57:11 -0400] [1817] [INFO] Booting worker with pid: 1817
[2018-05-28 10:57:11 -0400] [1819] [INFO] Booting worker with pid: 1819
[2018-05-28 10:57:11 -0400] [1821] [INFO] Booting worker with pid: 1821
1
2
3
4
5
6
7
8
本地服务器已经运行了,但是我们远程并不能进行访问(win10访问虚拟机)

说明端口号没有打开,这时候我们需要把防火墙,端口号什么的都进行设置一下,可以看一下这篇博客:linux下nginx首次安装远程无法访问

主要是两个命令:

[root@localhost nginx-1.12.1] systemctl stop firewalld
[root@localhost nginx-1.12.1] systemctl stop iptalbes
1
2
接下来:我们进行nginx的配置安装与gunicorn的相结合并进行部署。
---------------------
作者:xudailong_blog
来源:CSDN
原文:https://blog.csdn.net/xudailong_blog/article/details/80490137
版权声明:本文为博主原创文章,转载请附上博文链接!

Python3 Flask+nginx+Gunicorn部署(上)的更多相关文章

  1. Flask+nginx+Gunicorn部署

    当我们开发完Flask项目后是不能直接通过命令启动服务来使用的(扛不住的) Gunicorn 是一个给 UNIX 用的 WSGI HTTP 服务器.这是一个从 Ruby 的 Unicorn 项目移植的 ...

  2. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  3. ubuntu 安装flask+nginx+gunicorn 待定

    第一步 先检查服务器环境   pip python3 mysql redis 能下就下,该升级就升级 第二步 如果你的flask程序在github上 请使用git clone 地址 下载下来(如果是私 ...

  4. Python日记——nginx+Gunicorn部署你的Flask项目

    转自:http://blog.csdn.net/qq_32198277/article/details/52432890 大家在学习Python的时候常常都是输入 python 文件名.py   这样 ...

  5. nginx+Gunicorn部署你的Flask项目

    https://www.cnblogs.com/minsons/articles/8191219.html 大家在学习python的时候常常都是输入 python 文件名.py 这样启动小脚本 但实际 ...

  6. nginx gunicorn 部署flask,带参数链接不可用的现象(笔记)

    微信小程序后台,开启 gunicorn之后屏幕会输出打印结果,一旦关闭shell 带参数链接不可用,只有开启shell才能使用, 一针见血 : 注释掉所有print语句,关闭shell 带参数的链接  ...

  7. nginx+gunicorn部署Django项目

    实际采用的nginx.conf文件内容: server { charset utf-8; listen 80; server_name ip; access_log /webapps/project/ ...

  8. Python3 flask nginx uwsgi 环境搭建

    配置项目的时候一般使用虚拟环境,是各个项目的环境独立起来,更多方便管理.至于如何使用搜索即可,并不难 1.安装python3 yum -y install zlib-devel bzip2-devel ...

  9. Ubuntu16.04 flask + nginx + uWSGI 部署

    前言 又有段时间没写博客了,最近一直在写外包项目,都没啥空余时间.这几天花了不少时间做项目部署,也看了不少教程,这里就记录下整个过程,也方便以后要做类似部署的时候不用再查来查去了. flask + u ...

随机推荐

  1. Spring-AOP环绕监听出错

    Exception in thread "main" org.springframework.aop.AopInvocationException: Null return val ...

  2. [原][OSG]OSG例子程序简介

    1.example_osganimate一)演示了路径动画的使用(AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera.CameraView.M ...

  3. JS模态框 简单案例

    演示: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8 ...

  4. VS Code 安装sass插件

    准备工作 在VS Code上新建一个项目,例:SASS  ,文件夹内包括css 和 sass 和 html  文件夹   在sass文件下新新建sass.scss 1.在拓展商店里搜索“easy sa ...

  5. 创建多线程的第二种方法实现Callable接口

    1.实现Callable接口,重写call方法,有返回值 2.通过实现Callable接口创建的线程只能在线程池中使用. 3.返回值就是run方法返回的对象 4.通过future.get()可以获取到 ...

  6. 2010-10-08在浏览器中兼容+jQuery3

    一.实现背景图片铺满(兼容各种浏览器) <script type="text/javascript"> $(document).ready(function() { $ ...

  7. 单机器搭建 zk 集群

    在一台机器上配置 2 节点的 zk 集群,zk1 和 zk2 的 serverid 分别为 1 和 2,本机 ip 是 192.168.40.1 zk1 相关配置: dataDir=E:/test/z ...

  8. C++将数组的元素顺序随机打乱

    参考: https://blog.csdn.net/cordova/article/details/52884399 https://zhidao.baidu.com/question/1604258 ...

  9. jQ如何选中被选中的单选按钮的值

    alert($("label input[name=logintpye]:checked").val());

  10. php intval 两位小数乘以100后结果少1

    价格处理的时候往往是两位小数需要换算成分,如:16.33元换算为1633分,直接乘以100也就行了的,但是又使用了一个转换为整数类型的函数intval() 这下子结果就不对了,如图:  结果:  可以 ...