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错误

相关文章
|
5月前
|
弹性计算 运维 监控
快速部署 Nginx 社区版
Nginx是一个高性能的HTTP和反向代理服务器。Nginx在计算巢上提供了社区版服务,您无需自行配置云主机,即可在计算巢上快速部署Nginx服务、实现运维监控,从而方便地基于Nginx搭建您自己的应用。本文介绍使用如何通过计算巢快速部署Nginx社区版。
快速部署 Nginx 社区版
|
4月前
|
前端开发 JavaScript 应用服务中间件
使用nginx部署网站
使用nginx部署网站
|
4月前
|
JavaScript 应用服务中间件 nginx
nginx部署vue项目
本文介绍了将Vue项目部署到Nginx的步骤,包括构建Vue项目、上传dist文件夹到服务器、安装Nginx、配置Nginx代理静态文件以及重启Nginx,确保了Vue应用可以通过域名或IP地址访问。
249 1
|
4月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
1387 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
4月前
|
Kubernetes 应用服务中间件 nginx
k8s基础使用--使用k8s部署nginx服务
本文介绍了Kubernetes中核心概念Deployment、Pod与Service的基本原理及应用。Pod作为最小调度单元,用于管理容器及其共享资源;Deployment则负责控制Pod副本数量,确保其符合预期状态;Service通过标签选择器实现Pod服务的负载均衡与暴露。此外,还提供了具体操作步骤,如通过`kubectl`命令创建Deployment和Service,以及如何验证其功能。实验环境包括一台master节点和两台worker节点,均已部署k8s-1.27。
324 1
|
5月前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
4月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
295 0
|
SQL 关系型数据库 MySQL
Flask全套知识点从入门到精通,学完可直接做项目(四)
Flask全套知识点从入门到精通,学完可直接做项目(四)
189 0
Flask全套知识点从入门到精通,学完可直接做项目(四)
|
存储 SQL JSON
Flask全套知识点从入门到精通,学完可直接做项目(三)
Flask全套知识点从入门到精通,学完可直接做项目
414 0
Flask全套知识点从入门到精通,学完可直接做项目(三)
|
Web App开发 存储 前端开发
Flask全套知识点从入门到精通,学完可直接做项目(二)
Flask全套知识点从入门到精通,学完可直接做项目
252 0
Flask全套知识点从入门到精通,学完可直接做项目(二)

热门文章

最新文章