Python flask网站部署总结
先开一贴,有空来总结下前段时间的网站部署情况。此次部署采用Gunicorn + Nginx + supervisor的组合在VPS环境中部署flask网站应用。
Ubuntu环境准备##
准备python环境
$ sudo apt-get update
$ sudo apt-get install python-dev python-pip python-virtualenv
然后安装nginx
$ sudo apt-get install nginx
本网站在/home/jack/目录下建立一个me的文件夹(我是直接git clone,此处说明下,克隆到哪,直接切换到相应的目录Clone即可)
Gunicorn##
Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。
安装Gunicorn
Gunicorn需要安装在相应的virtualenv环境下,安装前需要激活venv(在me文件夹下,执行 source venv/bin/actiavte)。
(venv) $ pip install gunicorn
运行Gunicorn
cd到你的项目根目录下,此处为/me文件夹下:
(venv) $ gunicorn -w 4 -b 0.0.0.0:8000 wsgi:application
这使得服务器可以被公网IP访问
注意:此处wsgi是一个flask实例引导的py文件,appliancation即创建的flask实例。此处和 Flask 项目中常用的 manage.py 引导脚本是没有半点毛关系,需要做的是引入manage.py的flask实例。
拿本网站举个例子吧, 很简单的说:
#wsgi.py
from index import application
if __name__ == '__main__':
application.run()
Nginx 的配置##
关于Nginx后续再补充,直接编辑Nginx的默认配置文件。(/etc/nginx/site-avalidable/default)
建议先备份default文件
sudo cp /etc/nginx/site-avalidable/default /etc/nginx/sites-available/default.bak
server {
listen 80;
server_name example.org; # 这是HOST机器的外部域名,用地址也行(我直接填的IP地址)
location / {
proxy_pass http://127.0.0.1:8000; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
完成配置Ngnix后需要重启ngnix服务!
sudo service nginx restart
Gunicorn作为服务运行##
这里有两种方法实现
- 配置成linux服务随机启动
- 使用supervisor管理gunicorn
目前使用supervisor配置成功,后面有时间继续更新
这已经是我第一次补充了......................
首先安装supervisor
pip install supervisor
配置supervisor
在/etc/supervisor/
下有两个文件:文件夹,conf.d
;文件supervisord.conf
supersord.conf文件保持不动,尤其include内的内容,这引导接下来的配置的内容。
在conf.d
内创建项目的配置文件:me.conf
重新载入配置文件,并启动me
$ sudo supervisorctl reload
$ sudo supervisorctl start me
查看运行状态
$ sudo supervisorctl status
参考####
- http://edward.io/blog/flask-gunicorn-nginx.html
- http://www.cnblogs.com/Ray-liang/p/4837850.html
- http://www.jianshu.com/p/be9dd421fb8d
- http://www.lxway.com/49621091.htm
- https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-14-04
- http://beiyuu.com/vps-config-python-vitrualenv-flask-gunicorn-supervisor-nginx/
- http://defshine.github.io/deploy-flask-app-on-do.html
- http://www.onurguzel.com/how-to-run-flask-applications-with-nginx-using-gunicorn/
- https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-14-04
Python flask网站部署总结的更多相关文章
- 【Azure 应用服务】Python flask 应用部署在Aure App Service中作为一个子项目时,解决遇见的404 Not Found问题
问题描述 在成功的部署Python flask应用到App Service (Windows)后,如果需要把当前项目(如:hiflask)作为一个子项目(子站点),把web.config文件从wwwr ...
- 【Azure 应用服务】Python flask 应用部署在Aure App Service 遇见的 3 个问题
在App Service(Windows)中部署Flask应用时的注意事项: ● 添加Python扩展插件,Python 3.6.4 x64: ●● 配置 FastCGI 处理程序,添加Web.con ...
- python flask应用部署
失败版本:flask+uwsgi ini配置文件 [uwsgi] callable = app ;//程序内启用的application变量名 home = /home/jcuan/code/pyth ...
- 使用wfastcgi在IIS上部署Python Flask应用
本文介绍了如何在Windows上部署Python Flask应用,相关环境如下: 操作系统:windows 7 Python:3.4 WFastCGI: 2.2 应用所用到的包版本如下: Flask= ...
- Python Flask 构建微电影视频网站
前言 学完本教程,你将掌握: 1.学会使用整形.浮点型.路径型.字符串型正则表达式路由转化器 2.学会使用post与get请求.上传文件.cookie获取与相应.404处理 3.学会适应模板自动转义. ...
- IIS部署FLASK网站
在 Windows 平台部署基于 Python 的网站是一件非常折腾的事情,Linux/Unix 平台下有很多选择,本文记录了 Flask 部署到 IIS 的主要步骤,希望对你有所帮助. 涉及工具和平 ...
- 使用Nginx+Uwsgi部署Python Flask项目
第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...
- Python Flask搭建一个视频网站实战视频教程
点击了解更多Python课程>>> Python Flask搭建一个视频网站实战视频教程 第1章 课程介绍 第2章 预备开发环境 第3章 项目分析.建立目录及模型规划 第4章 建立前 ...
- Python FLask 腾讯云服务器部署
CentOs 7.0云服务器部署Python Flask 使用: Python 2.7 Flask nginx gunicorn easy_install python-dev yum install ...
随机推荐
- iClap分享:如何优雅的在 APP 中实现测试?
开发团队常面临的问题有:内测 APP 时测出一堆 bug 写了很多文档,交到下一个人手中时问题总是不够清晰明了;版本发布公测时只能分发原生版本给团队和用户,无法快速反馈测试和体验结果;使用第三方工具, ...
- googleBigTable
Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据.Google的很多项目使用Bigtable存储数据,包括Web索引.Googl ...
- C#小票打印机动态纸张尺寸
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 并发队列ConcurrentLinkedQueue与阻塞队列LinkedBlockingQueue的区别
1. 介绍背景 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列. Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是Block ...
- 验证APNS证书的有效性
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert xxx.pem
- linux下 安装php的gettext模块
安装php的模块有两种方式: 一.重新编译php,加上--with-gettext 二.动态安装 现在说下第二个动态安装 1.下载同版本的php原包,解压后进入ext目录,目录下便是模块 2.进入ge ...
- eclipse web项目的发布路径
java Build path是编译路径设置,主要用来设置源代码的编译路径默认是default output folder Web Deployment Assembly是eclipse中的发布路径设 ...
- nginx简介及优点总结
简介:nginx是web服务器,由C语言开发,基于事件驱动能处理百万级别的tcp连接,高度模块化的设计和自由的许可证使得扩展其功能的模块层出不穷, 跨平台,可使用当前操作系统特有的一些高效API来提高 ...
- 20145303刘俊谦 《Java程序设计》第2周学习总结
20145303刘俊谦 <Java程序设计>第2周学习总结 教材学习内容总结 1.对于标识符的一些名称规范(觉得挺重要而且容易混淆!定义就不写了,列一些例子): 包名: xxxyyyzzz ...
- markdown工作随笔总结
1. 锚点 (使用方法和链接很像) ## 目录 1. [命名](#命名) ....... **[返回顶部](#目录)** ## 命名 ###命名原则 可以从返回顶部回到目录,也可以点击目录的命名跳到命 ...