基于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多),但用起来感 ...
随机推荐
- C语言验证哥德巴赫猜想
#include<stdio.h>int f(int x);int main(void){ int n,i; scanf("%d",&n); for( ...
- D - Ugly Problem HDU - 5920
D - Ugly Problem HDU - 5920 Everyone hates ugly problems. You are given a positive integer. You must ...
- 30段极简Python代码:这些小技巧你都Get了么
学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...
- java基础第十六篇之多线程
1:线程的概念 进程(任务):一个正在运行的程序 进程的调度:CPU来决定什么时候该运行哪个进程 (时间片轮流法) 线程在一个应用程序中,同时,有多个不同的执行路径,是进程中的实际运作单位. 好处是提 ...
- 马蜂窝 iOS App 启动治理:回归用户体验
增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启 ...
- 用AI思维给成本降温,腾讯WeTest兼容性测试直击底价!
WeTest 导读 当AI成为各行业提高产业效率的动能,很多人开始疑惑,这架智能化的“无人机”何时在移动应用测试中真正落地?在今年的国际数码互动娱乐博览会(ChinaJoy)上,腾讯WeTest给出了 ...
- .net core 使用ViewComponent
.net core 中的局部视图组件是ViewComponent,可以用于建制重复使用公共功能组件 一.新建一个类DemoViewComponent(必须以ViewComponent结尾)且继承Vie ...
- PeriscopeHeartAnimation
// // ViewController.m // PeriscopeHeartAnimation // // Created by ldj on 4/28/15. // Copyright (c) ...
- 一款开源且超好用的网站克隆机 HTTrack
0x00 前言 我们在学习前端的时候,总是会想着去学习其他人网站是如何制作的,或者我们遇到一些比较有用的知识点的时候,我们可能会选择通过 Ctrl + C / Ctrl + V 去扒下内容,然而我并非 ...
- hadoop 自定义OutputFormat
1.继承FileOutputFormat,复写getRecordWriter方法 /** * @Description:自定义outputFormat,输出数据到不同的文件 */ public cla ...