基于docker部署flask+gunicorn+nginx
nginx安装在/etc/下,项目映射在docker中的/var/www/下
1、创建docker容器将端口映射出来,将docker外的项目映射到docker中
#docker run -it -p 8007:8000 -v /opt/project/datatagservice:/var/www/ --name datatagservicetest harbor.fir.ai/library/dataanalysis bash
#8007端口映射到8000,docker容器名:dataservicetest,镜像名:harbor.fir.ai/library/dataanalysis
#按ctrl+P+q或手动输入exit回车退出容器
#退出容器后想在进入容器可以使用:docker exec -it dataservicetest(容器名) bash
2、在flask根目录下创建一个gun_config.py文件,文件内容如下:
* coding: utf8 *
#import gevent.monkey
#import multiprocessing #gevent.monkey.patch_all() # 监听本机的5000端口
bind = '0.0.0.0:9000' #指定gunicorn的端口号 #preload_app = True # 开启进程
workers=4
#workers = multiprocessing.cpu_count() * 2 + 1 # 每个进程的开启线程
#threads = multiprocessing.cpu_count() * 2 backlog = 2048 timeout = 60*60*10 # 工作模式为gevent
# worker_class = "gevent" debug=True # 如果不使用supervisord之类的进程管理工具可以是进程成为守护进程,否则会出问题
daemon = True # 进程名称
proc_name = 'gunicorn.pid' # 进程pid记录文件
pidfile = 'app_pid.log' loglevel = 'logs/debug'
logfile = 'logs/gun_debug.log'
accesslog = 'logs/gun_access.log'
access_log_format = '%(h)s %(t)s %(U)s %(q)s'
errorlog = 'logs/gun_error.log'
2.1、在flask根目录下再创建一个restart_gunicorn.sh文件,文件内容如下:
#gunicorn -w 4 -b 0.0.0.0:8080 app:app
#gunicorn -c gun_config.py app:app
#!/bin/bash ps aux|grep gun_config.py|awk '{print $2}'|xargs kill -9 sleep 1.5 ulimit -n 65535 gunicorn -c gun_config.py app:app #切到flask项目根目录下,使用该行命令启动flask项目,也可以使用sh restart_gunicorn.sh进行启动flask项目 ps aux|grep gun_config.py|head -3
3、在创建的docker中下载nginx,对nginx中/etc/nginx/sites-enabled中的配置文件做修改:复制default文件,然后重命名为:dataretrieve_nginx.conf(重命名为.conf即可),清空该配置文件的内容,重写配置内容如下:
server {
listen 8000;
server_name 192.168.1.xxx; #服务器的ip地址或者域名
access_log /var/www/datatagservice/logs/nginx_access.log;
error_log /var/www/datatagservice/logs/nginx_error.log; location / {
proxy_pass http://127.0.0.1:9000; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4、以上三步准备完成即可通过下面的命令进行启动nginx,gunicorn,即可完成对flask项目的启动,并在后台进行稳定运行
#启动nginx:nginx
#启动gunicorn需要将目录切到项目根路径下执行:gunicorn -c gun_config.py app:app或sh restart_gunicorn.sh
#如果以上出现问题,可以通过下列命名杀死进程:
#杀死nginx进程:pkill nginx
#杀死gunicorn进程:pkill gunicorn
如果上述两个命令杀死进程失败可以通过pid杀死进程
#查看nginx进程pid:ps -ef|grep nginx
#查看gunicorn进程pid:ps -ef |grep gunicorn
#通过查看的pid杀死进程:kill -9 (上述两行命令查看的pid)
以上四步即可完成对flask的部署!如按照以上部署失败,欢迎评论留言,戳博主~
基于docker部署flask+gunicorn+nginx的更多相关文章
- 用docker部署flask+gunicorn+nginx
说来惭愧,写了好几个flask django项目都是在原型阶段直接python app.py 运行的,涉及到部署用nginx和gunicorn 都是让别人帮我部署的,据说好像说很麻烦的样子,我就没自己 ...
- CentOS7部署Flask+Gunicorn+Nginx+Supervisor
1. Git客户端 Win10安装git for windows 1.1 设置Git全局参数 打开Git Bash $ git config --global user.name "Alic ...
- Centeos7部署Flask+Gunicorn+nginx
一.环境安装 pip3 install flask pip3 install gunicorn pip3 install nginx 二.模块介绍 1.Flask是一个使用 Python 编写的轻量级 ...
- 基于flask+gunicorn+nginx来部署web App
基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...
- 初次部署django+gunicorn+nginx
初次部署django+gunicorn+nginx 博客详细地址 https://www.cnblogs.com/nanrou/p/7026802.html 写在前面,这只是我所遇到的情况,如果有 ...
- 基于Docker部署nodejs应用
基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署
本项目实现的是类似于ins的图片分享网站.继续(一),当nginx的配置已修改好后,要在远程服务器上部署网站,只需要几个步骤: 1 前期准备 2 将运行网站的代码从github上下载过来 3 下载依赖 ...
- 阿里云部署 Flask + WSGI + Nginx 详解
抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...
随机推荐
- Python学习记录:括号配对检测问题
Python学习记录:括号配对检测问题 一.问题描述 在练习Python程序题的时候,我遇到了括号配对检测问题. 问题描述:提示用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确, ...
- 一篇文章弄懂flex布局
壹 ❀ 引 谈到flex布局,我不知道有多少人跟我一样,在本能的想到justify-content:center与align-items:center两条属性之后,除此之外的其它属性居然显得格外陌生 ...
- python实现圣诞树
先来个迷你的 *_* height = 5 stars = 1 for i in range(height): print((' ' * (height - i)) + ('*' * stars)) ...
- Android studio移动项目到另外一个文件夹,结果不能安装的解决方法
删除.gradle , .idea , build 三个文件夹即可
- windows server 2008 r2 安装 vs2017 无法进入安装界面问题解决方法
在 windows server 2008 r2 版本操作系统上安装 vs2017 经常出现下载进度条结束后没有任何反应问题,一般是因为安装程序兼容性造成的,解决方案如下: 将 C:\Program ...
- MySQL学习——查看数据库信息
MySQL学习——查看数据库信息 摘要:本文主要学习了查看数据库信息的方法. 查询指定表的索引 语法 show index from 表名; 示例 mysql> show index from ...
- DevExpress的TreeList实现自定义右键菜单打开文件选择对话框
场景 DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...
- 你不知道的JS第一卷
这两天,开始看你不知道的JavaScript,第一卷.
- cnblogs停止更新,同步到个人博客!
cnblogs停止更新,同步到个人博客 https://dengpeng.me/! 个人博客地址: https://dengpeng.me
- RV32FDQ/RV64RDQ指令集(2)
下面我们逐个看下每个指令的细节: fadd.s fadd.s rd, rs1, rs2 //f [rd] = f [rs1] + f [rs2]单精度浮点加(Floating-point Ad ...