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: utf­8 ­*­
#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的更多相关文章

  1. 用docker部署flask+gunicorn+nginx

    说来惭愧,写了好几个flask django项目都是在原型阶段直接python app.py 运行的,涉及到部署用nginx和gunicorn 都是让别人帮我部署的,据说好像说很麻烦的样子,我就没自己 ...

  2. CentOS7部署Flask+Gunicorn+Nginx+Supervisor

    1. Git客户端 Win10安装git for windows 1.1 设置Git全局参数 打开Git Bash $ git config --global user.name "Alic ...

  3. Centeos7部署Flask+Gunicorn+nginx

    一.环境安装 pip3 install flask pip3 install gunicorn pip3 install nginx 二.模块介绍 1.Flask是一个使用 Python 编写的轻量级 ...

  4. 基于flask+gunicorn+nginx来部署web App

    基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...

  5. 初次部署django+gunicorn+nginx

    初次部署django+gunicorn+nginx  博客详细地址  https://www.cnblogs.com/nanrou/p/7026802.html 写在前面,这只是我所遇到的情况,如果有 ...

  6. 基于Docker部署nodejs应用

    基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...

  7. 基于Docker部署ETCD集群

    基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...

  8. 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署

    本项目实现的是类似于ins的图片分享网站.继续(一),当nginx的配置已修改好后,要在远程服务器上部署网站,只需要几个步骤: 1 前期准备 2 将运行网站的代码从github上下载过来 3 下载依赖 ...

  9. 阿里云部署 Flask + WSGI + Nginx 详解

    抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...

随机推荐

  1. linux,xshell命令

     一. linux  1.Linux发行版 <1> 常见的发行版本如下: Ubuntu Redhat Fedora openSUSE Linux Mint Debian Manjaro M ...

  2. 1+x 证书 Web 前端开发 HTML5 专项练习

    官方QQ群 1+x 证书 Web 前端开发 HTML5 专项练习 http://blog.zh66.club/index.php/archives/193/

  3. 通过组件实现相同group下字符串拼接

    实现效果 组件处理流程如下:         1 使用Sorter组件对ColA进行排序       2 使用expression组件进行如下配置 3 使用aggregate组件进行如下配置 ColA ...

  4. LabVIEW工控二进制数据存储

    在文件存储的逻辑上,二进制文件基于值编码,而不是字符编码,其占用空间小,读取/写入速度快,但是译码比较复杂,不利用数据共享.根据具体编码方式的不同,二进制的使用方式也有所不同,如对bmp格式,规定了文 ...

  5. CSS基本选择器是什么?基本选择器是如何工作

    基本选择器介绍 基本选择器又分为六种使用方式:如.通用选择器.标签选择器.类选择器.Id选择器.结合元素选择器.多类选择器. 基本选择器使用说明表. 选择器 语法格式 含义 举例 通用选择器 *{属性 ...

  6. 多线程CGD调度组原理

    我们常用的GCD调度组方式 //GCD常用调度组写法 -(void)demo1{ //创建调度组和队列 dispatch_group_t group = dispatch_group_create() ...

  7. [转]关于maven pom.xml中dependency type 为pom的应用

    原文地址:http://blog.csdn.net/yao123long/article/details/49925659 dependency为什么会有type为pom,默认的值是什么?depend ...

  8. HBase安装学习

    一.下载安装 $ wget http://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.7.0.tar.gz $ tar -zxvf hbase-1 ...

  9. 访问rabbitmq-server失败

    测试项目正常运行突然访问不了,各项目启动失败,查看日志发现是RabbitMQ拒绝连接. 重启后依然失败,看var/log/rabbitmq/startup_err 发现什么错误信息也没有,后查看磁盘空 ...

  10. python 小数据池 深浅拷贝 集合

    1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同 ...