使用virtualenv, uwsgi, nginx来布署flask

本文讲述了如何使用virtualenv, uwsgi, nginx来布署flask的步骤。

升级软件包

执行以下命令,保证你的机器安装了最新的软件包。

sudo apt-get update

sudo apt-get upgrade

安装python和virtualenv

sudo apt-get install build-essential python-dev python-pip

sudo pip install virtualenv

创建存放网站的目录

例如,在/home/gzlihao/webservice目录下创建mysite目录

mkdir mysite

配置virtualenv和安装flask, uwsgi

virtualenv .env

source .env/bin/activate

pip install flask

pip install uwsgi

在mysite目录下创建hello.py

hello.py的内容如下:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(host=‘0.0.0.0‘, port=8080)

需要注意的是,app.run需要放置在if __name__ == "__main__"下,且host需要设置为0.0.0.0,这样uwsgi才不会执行它。

配置uwsgi

增加配置文件uwsgi.ini,内容如下:

[uwsgi]
chdir=/home/gzlihao/webservice/mysite
home=/home/gzlihao/webservice/mysite/.env
module=hello
callable=app
master=true
processes=2
socket=%(chdir)/mysite.sock
chmod-socket=666
logfile-chmod=644
daemonize=%(chdir)/uwsgi.log
uid=gzlihao
gid=gzlihao
procname-prefix-spaced=mysite

启动uwsgi

uwsgi –ini uwsgi.ini

可以看到mysite目录下新增了以下文件

mysite.sock以及uwsgi.log

安装nginx

deactivate

sudo apt-get install nginx

配置nginx

在/etc/nginx/sites-availabel目录下创建mysite.conf文件,内容如下:

server {
    listen 80;
    server_name www.mysite.com;
    charset utf-8;

    client_max_body_size 5M;

    location / {
         include uwsgi_params;
         uwsgi_pass unix:/home/gzlihao/webservice/mysite/mysite.sock;
     }

     location /static {
         alias /home/gzlihao/webservice/mysite/static;
     }
}

为了使用这个配置文件生效,创建mysite.conf的链接文件:

cd /etc/nginx/sites-enabled

ln -s ../sites-available/mysite.conf mysite.conf

nginx重启

重启前先对nginx配置进行语法检查

nginx -t

然后对nginx进行平滑重启

kill -HUP 27198

其中27198 为nginx主进程号,可以使用ps -efl | grep nginx | grep master获取

访问网站

编辑C:\Windows\System32\drivers\etc\hosts文件,增加一项

[布署mysite的ip地址] www.mysite.com

例如

192.168.229.166 www.mysite.com

打开浏览器,输入www.mysite.com,回车,即可以看到输出结果。

参考资料

  1. Running flask with virtualenv, uwsgi, and nginx
  2. Serving Flask With Nginx
  3. flask uWSGI

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-25 16:03:59

使用virtualenv, uwsgi, nginx来布署flask的相关文章

CentOS下实现Flask + Virtualenv + uWSGI + Nginx部署

一.项目简介 在本文中,将一步一步搭建一个简单的Flask + Virtualenv + uWSGI + Nginx 架构的Web服务,可以作为新手的学习也可作为记录备忘. 如果你安装好了环境并有一定基础可以直接从第五节开始部署. 项目中只是演示了浏览器访问地址,获得文本返回的过程,本人尽量把配置解释的清晰.基于搭建好的架构,后续可以将业务层(Python)进行扩展,本文不做研究 ,比如: 1.扩展业务代码:实现json.静态资源等等的请求响应. 2.基于业务的数据库查询和部署. 3.服务器端的

ubuntu nginx本地局域网布署sever_name设置

如果没有设置好sever_name 在本地输入虚拟机的ip.只会看到nginx的helloworld(打招呼界面,不可能写helloworld)界面 重点在于nginx的布署文件要加上这么一条 来自廖雪峰网站的示例

Flask+uwsgi+Nginx+Ubuntu部署教程

学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的过程就会重复一次.不知道多少人的膝盖中箭了呢?我也这样干过,这么做确实很蠢,所以我决定写一篇 Flask+uwsgi+Nginx+Ubuntu 的部署教程,解答一些我自己在这个过程中的疑问,从原理到方案,以一个小白的角度,总结一下部署.运维这件事,应该对初学 Flask 需要部署的同学有些帮助. 环

树莓派部署Flask+uWSGI+Nginx过程

转载来自http://blackgu.blogbus.com/logs/171363164.html略作修改 1)安装Flask,uwsgi,nginx Flask:sudo apt-get install python-flask uwsgi:sudo apt-get install uwsgi uwsgi-plugin-python nginx:sudo apt-get install nginx 2)创建Flask工程 这里就用最简单的HelloWorld,创建一个工程目录:myapp,里

Flask+uwsgi+Nginx+Ubuntu部署

学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Python选择的是2.7.2这个是Ubuntu系统自带的学起来感觉还是简单的 不用去软连,目前自己的flask是python3写的 ,慢慢去过渡,先吧这个给搞通了,那么在优化也是很顺手的.其实对于很多的原理自己也是一知半解,先吧这个给搭起来,慢慢去了解里面的逻辑什么的. Nginx Nginx 是高效的

Flask+uwsgi+Nginx环境搭建

开源软件准备需要的软件列表:setuptools-33.1.1.zipPython-2.7.13.tgzpip-9.0.1.tar.gznginx-1.10.3.tar.gz软件统一上传到/usr/local/src/下,python是使用自己编译的. Python安装 先安装以下的软件(如果有的话,就可以不安装了,例如使用rpm -qa zlib-devel先查看下)yum install zlib-devel -yyum install openssl-devel -y tar -zxvf解

Flask uwsgi nginx:504 Gateway Time out

uwsgi+nginx部署的web站点运行时可能产生504 Gateway Time out这样的错误,究其原因是因为相关参数设置的不当. nginx和uwsgi整合时有三个参数可以用于设置超时时间,在nginx配置文件http->server->location中设置. uwsgi_connect_timeout:默认60秒,与uwsgi-server连接的超时时间,该值不能超过75秒.若在超时时间内未能成功连接则断开连接尝试.uwsgi_read_timeout:默认60秒,nginx等待

Django + Uwsgi + Nginx 实现生产环境部署

一.如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 二.uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask

阿里云 Debian Linux 布署记录

摘要: 主要安装了web环境,java+tomcat+mysql+nginx(暂没没用) 数据盘挂载在/data下,项目,索引都放/data目录下 java,tomcat,mysql程序都在/root/www建立的有快捷方式   1.软件包的安装 apt-get install 下载的软件都放/var/cache/apt/archives目录下,可用apt-get autoclean或apt-get clean删除已下载的包 2.安装mysql 5.6.deb dpkg –i  mysql-5.