您当前的位置: 首页 >  Python

python编程:mac环境gunicorn+nginx部署flask项目

彭世瑜 发布时间:2018-05-18 23:51:30 ,浏览量:4

第一步,安装配置gunicorn

文档:http://docs.gunicorn.org/en/stable/run.html

1、安装

pip install gunicorn

2、在flask项目中添加两行代码

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
	#------------------- 需要添加的两行代码
    from werkzeug.contrib.fixers import ProxyFix
    app.wsgi_app = ProxyFix(app.wsgi_app)
    #------------------- 
    app.run()

3、启动:

gunicorn 入口文件名:app

默认是监听http://127.0.0.1:8000/

也可以修改配置

gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app

说明: 修改进程:-w 4 修改端口:-b 127.0.0.1:8000

4、添加快捷方式 如果每次启动都那么麻烦,岂不是都没兴趣了,可以使用bash脚本进行快捷启动 新建文件~/.flask.sh

#!/bin/bash

echo "flask starting..."

source ~/.bash_profile   # 导入PATH变量
 
workon py3  # 切换python虚拟环境
cd /Users/qmp/workspace/mouday.github.io/index_flask  # 切换到文件目录
gunicorn -w 4 -b 127.0.0.1:8000 index:app   # 启动flask服务器

在文件~/.bash_profile中添加falsk别名,运行启动脚本

# flask服务启动的别名
alias flask="bash ~/.flask.sh"

好了,现在可以直接这样启动了

$ flask

终端打印,启动成功!

flask starting...
[2018-07-19 15:55:04 +0800] [5350] [INFO] Starting gunicorn 19.8.1
[2018-07-19 15:55:04 +0800] [5350] [INFO] Listening at: http://127.0.0.1:8080 (5350)
[2018-07-19 15:55:04 +0800] [5350] [INFO] Using worker: sync
[2018-07-19 15:55:04 +0800] [5353] [INFO] Booting worker with pid: 5353
[2018-07-19 15:55:04 +0800] [5354] [INFO] Booting worker with pid: 5354
[2018-07-19 15:55:04 +0800] [5355] [INFO] Booting worker with pid: 5355
[2018-07-19 15:55:04 +0800] [5356] [INFO] Booting worker with pid: 5356
第二步,安装配置nginx

Mac 下使用 Homebrew 安装 Nginx

brew install nginx

使用brew的命令来运行nginx

brew services start nginx  # 启动
brew services stop nginx   # 停止

测试地址:http://127.0.0.1:8080

查看nginx配置文件路径:

$ nginx -t

/usr/local/etc/nginx/nginx.conf
server {
    listen 80;
    server_name example.org; # 这是HOST机器的外部域名,用地址也行

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

  }

作用是将80端口转发到8000端口

检查命令

nginx -t

成功会有 successful 提示 重启nginx

访问地址:http://127.0.0.1/

如果访问不到,可以先关闭,在使用如下命令启动

sudo nginx -c /usr/local/etc/nginx/nginx.conf
报错及解决

1、Permission报错

nginx: [emerg] open() "/usr/local/var/run/nginx.pid" failed 
(13: Permission denied)

有权限问题:直接使用

sudo chown -R $(whoami)  /usr/local/var/run

2、directory报错

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed
 (2: No such file or directory)

使用如下命令指定配置文件

nginx -c /usr/local/nginx/conf/nginx.conf

3、Address报错

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)

端口被占用,尝试使用如下命令来关闭nginx服务

sudo nginx -s stop
brew services stop nginx  # 第一个不行再用这个

4、Permission denied

nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)

Linux只有root用户可以使用1024一下的端口,80端口改为1024以上

brew命令

安装: sudo brew install [软件名]

搜索: sudo brew search [软件名]

查看: sudo brew info [软件名]

卸装: sudo uninstall [软件名]

nginx -V 查看版本,以及配置文件地址 nginx -v 查看版本 nginx -c filename 指定配置文件 nginx -h 帮助

nginx命令

重新加载配置|重启|停止|退出 nginx nginx -s reload|reopen|stop|quit

sudo nginx 打开 nginx nginx -t 测试配置是否有语法错误

也可以新建目录 vhosts单独配置

nginx.conf 添加引入语句

http{
    
    # 最下面添加
    include vhosts/*.conf;
}

参考文章

  1. Python日记——nginx+Gunicorn部署你的Flask项目
  2. Mac 下使用 Homebrew 安装 Nginx
  3. Mac利用brew安装nginx环境
  4. mac brew install nginx遇到的坑
  5. 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
关注
打赏
1688896170
查看更多评论

彭世瑜

暂无认证

  • 4浏览

    0关注

    2727博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.3091s