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

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

第一步,安装配置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;
}

参考文章


Python日记——nginx+Gunicorn部署你的Flask项目

Mac 下使用 Homebrew 安装 Nginx

Mac利用brew安装nginx环境

mac brew install nginx遇到的坑

解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误

相关文章
|
1月前
|
前端开发 JavaScript 应用服务中间件
使用nginx部署网站
使用nginx部署网站
|
1月前
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
98 1
|
1月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
241 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s基础使用--使用k8s部署nginx服务
本文介绍了Kubernetes中核心概念Deployment、Pod与Service的基本原理及应用。Pod作为最小调度单元,用于管理容器及其共享资源;Deployment则负责控制Pod副本数量,确保其符合预期状态;Service通过标签选择器实现Pod服务的负载均衡与暴露。此外,还提供了具体操作步骤,如通过`kubectl`命令创建Deployment和Service,以及如何验证其功能。实验环境包括一台master节点和两台worker节点,均已部署k8s-1.27。
151 1
|
1月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
105 0
|
2月前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
|
13天前
|
开发工具 iOS开发 开发者
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
本篇将专注于如何在 Mac 上安装鸿蒙开发工具 DevEco Studio,确保开发环境能够顺利搭建。完成安装后,可以正式开始鸿蒙应用的开发工作。
47 1
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
|
1月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
63 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
1月前
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
170 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
|
1月前
|
iOS开发 MacOS Python
【10月更文挑战第1天】「Mac上学Python 1」入门篇1 - 安装Typora与Markdown编辑技巧
本篇将详细介绍如何在Mac系统上安装Typora这款简洁高效的Markdown编辑器,并学习Markdown常用语法。通过本篇,用户能够准备好记录学习笔记的工具,并掌握基本的文档编辑与排版技巧,为后续学习提供便利。
148 1
【10月更文挑战第1天】「Mac上学Python 1」入门篇1 - 安装Typora与Markdown编辑技巧