• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了nginx fastcgi,nginx fastcgi param,nginx fastcgi pass,nginx fastcgi cache,nginx fastcgi index等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

最近在学习Flask,本文介绍一下如何部署Flask开发的应用,同时也学习一下Nginx的使用,这只是在Mac上的一个实验。
应用

这里使用的应用就是官方的文档中给出的Flaskr。
安装Nginx

使用HomeBrew安装Nginx:

$ brew install nginx

</div>

HomeBrew会自动安装Nginx及其依赖的程序。在我的电脑上安装的是Nginx 1.6.2,配置文件的路径是/usr/local/etc/nginx/nginx.conf。

启动Nginx的命令:

$ nginx

</div>

Nginx的默认端口是8080,用浏览器打开localhost:8080,显示如下所示的页面说明Nginx已经工作了。

201552143836668.jpg (600×358)

配置Nginx

修改Nginx的配置文件:

server {
  listen 80;
  server_name localhost;
  charset utf-8;

  location / { try_files $uri @flaskr; }
  location @flaskr {
    include fastcgi_params;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_param SCRIPT_NAME "";
    fastcgi_pass unix:/tmp/flaskr-fcgi.sock;
  }
}

</div>

重新启动Nginx:

$ nginx -s quit
$ sudo nginx

</div>

因为使用了80端口,启动Nginx时需要加上sudo。

启动完成后,访问localhost:

201552143905542.jpg (600×322)

访问时出现了错误,这是因为我们的应用还没有启动。
FastCGI Server

Nginx是一个静态WEB服务器,不能直接运行我们的Python应用,当Nginx接受到请求时,会通过FastCGI转发给我们的应用,应用是运行在FastCGI Server上的,这个server接收Nginx的请求并调用我们的程序,将结果返回给Nginx,Nginx再将结果返回给用户。

我们要使用的FastCGI Server是flup,安装方法:

$ pip install flup

</div>

在应用目录下创建一个fcgi文件,例如flaskr.fcgi:

#!/usr/bin/python
from flup.server.fcgi import WSGIServer
from flaskr import app

if __name__ == '__main__':
  WSGIServer(app, bindAddress='/tmp/flaskr-fcgi.sock').run()

</div>

同时给fcgi文件可执行的权限:

$ chmod +x flaskr.fcgi

</div>

手动启动server:

$ screen
$ ./flaskr.fcgi

</div>

使用screen使server在后台运行,或者:

$ nohup ./flaskr.fcgi &

</div>

再次访问localhost就可以看到我们的应用了。
遇到的问题

第一次运行FastCGI server后,任然无法访问,查看Nginx的日志后发现Nginx服务器没有权限访问socket文件,修改nginx.conf添加user配置:

启动的时候Nginx报错:

nginx: [emerg] getgrnam("wzy") failed in /usr/local/etc/nginx/nginx.conf:2

</div>

Google一下后发现要加上用户组才行,改成这样:

再次启动Nginx后一切正常了。

Nginx配置项user的使用方法:

Syntax: user user [group];
Default: user nobody nobody;

</div>

如果忽略group,Nginx会使用和user名称一样的用户组,例如我设置user wzy,那么Nginx启动的时候会去查找用户组wzy,我的电脑上没有这个用户组,所以Nginx会报错。

</div>

您可能想查找下面的文章:

  • 在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
  • 在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

相关文章

  • python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
  • python 实现插入排序算法
  • python简单实现基数排序算法
  • 利用打码兔和超人打码自封装的打码类分享
  • 以一个投票程序的实例来讲解Python的Django框架使用
  • Python实现的数据结构与算法之快速排序详解
  • Python的Django框架中settings文件的部署建议
  • python 数据加密代码
  • python 简单的多线程链接实现代码
  • python计算最大优先级队列实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python处理csv数据的方法
    • Python实现把xml或xsl转换为html格式
    • python代码检查工具pylint 让你的python更规范
    • Python中如何获取类属性的列表
    • python daemon守护进程实现
    • python分割列表(list)的方法示例
    • Django URL传递参数的方法总结
    • Python和GO语言实现的消息摘要算法示例
    • python制作最美应用的爬虫
    • 使用PYTHON接收多播数据的代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有