• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-07) 23次浏览 已收录 0个评论

这篇文章主要介绍了在Mac OS上部署Nginx和FastCGI以及Flask框架的教程,Flask是Python下一个极简的web开放框架,需要的朋友可以参考下

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

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

使用HomeBrew安装Nginx:

 $ brew install nginx 

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

启动Nginx的命令:

 $ nginx 

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

配置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; } } 

重新启动Nginx:

 $ nginx -s quit $ sudo nginx 

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

启动完成后,访问localhost:

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

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

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

 $ pip install flup 

在应用目录下创建一个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() 

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

 $ chmod +x flaskr.fcgi 

手动启动server:

 $ screen $ ./flaskr.fcgi 

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

 $ nohup ./flaskr.fcgi & 

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

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

代码如下:
user wzy;

启动的时候Nginx报错:

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

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

代码如下:
user wzy wheel;

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

Nginx配置项user的使用方法:

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

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

以上就是在Mac OS上部署Nginx和FastCGI以及Flask框架的教程的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址