• flask项目部署到生产环境的方案


    背景

    使用Python+flask编写的一个小项目,在本地开发完毕后,需要部署到测试服务器上,这时候犯难了,因为之前没部署过这块东西,所以各种百度,总算是部署成功了,也对这个项目进行了jenkins持续部署,这块以后有时间我会单独说一下
     

    涉及的三方库

    1 pip install gunicorn

    supervisor配置文件

    因为我服务器安装了宝塔面板,所以使用了宝塔里面的supervisor插件来管理进程,涉及到需要新增一个supervisor的配置文件,这里贴一下我的配置
    1 [program:xxx-server] # 项目名称
    2 command=/usr/local/python3/bin/gunicorn -c gun.py manage:app # 前面是gunicorn的绝对路径,后面的gun.py是gunicorn的配置文件, manage是你的flask项目启动文件名称
    3 directory=/www/xxx-server # flask项目存放路径
    4 autorestart=true
    5 stdout_logfile=/www/server/log/mock-server.out.log # 日志
    6 redirect_stderr=true
    7 user=root
    8 priority=999

    gun.py文件

    上面提到了gun.py这个配置文件,我下面贴一下我的配置文件
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # @Time    : 2019/11/19 14:24
     4 # @Author  : Weiqiang.long
     5 # @Site    :
     6 # @File    : gun.py
     7 # @Software: PyCharm
     8 # @Description:
     9 # import requests
    10 import os
    11 import platform
    12 import gevent.monkey
    13 import multiprocessing
    14 
    15 
    16 gevent.monkey.patch_all()
    17 debug = True
    18 loglevel = 'deubg'
    19 # 服务地址(adderes:port)
    20 bind = '0.0.0.0:8090'
    21 
    22 
    23 if platform.system() == 'Windows':
    24     # win机器路径
    25     log_path = os.path.join(os.path.dirname(__file__), 'log')
    26 else:
    27     # 服务器路径
    28     log_path = '/log'
    29 
    30 
    31 # print(log_path)
    32 pidfile = log_path + '/gunicorn.pid'
    33 logfile = log_path + '/debug.log'
    34 
    35 
    36 # 启动的进程数(获取服务器的cpu核心数*2+1)
    37 workers = multiprocessing.cpu_count() * 2 +1
    38 worker_class = 'gunicorn.workers.ggevent.GeventWorker'
    39 
    40 
    41 threads = 20
    42 preload_app = True
    43 reload = True
    44 
    45 
    46 x_forwarded_for_header = 'X-FORWARDED-FOR'

    supervisor启动项目

     1 # 启动所有服务
     2 sudo supervisorctl start all
     3 
     4 
     5 # 启动单个服务
     6 sudo supervisorctl start 服务名称
     7 
     8 
     9 # 停止所有服务
    10 sudo supervisorctl stop all
    11 
    12 
    13 # 重启所有服务
    14 sudo supervisorctl restart all

    参考来源:

     
  • 相关阅读:
    数据放在服务端和客户端的利与弊
    python异步I/O并发
    view
    mysql千万或者上亿的数据怎么设计数据库
    Django(一)
    JQuery
    BOM与DOM
    JavaScript
    CSS(二)
    CSS介绍
  • 原文地址:https://www.cnblogs.com/longweiqiang/p/12053443.html
Copyright © 2020-2023  润新知