[该文章只涉及个人部署的简单流程,读者可通过其它途径了解详细部署流程]

依个人部署项目可预先安装好需要的环境,这里已提前安装好LNMP环境

1.安装Python环境

  安装virtualenv环境
  配置环境变量
  配置虚拟环境保存的路径,执行sh文件生成 mkvirtualenv 等命令

source virtualenvwrapper.sh

2.配置Git
  yum install git
  将远程仓库拉去到本地

3.安装项目依赖包
  pip install -i https://pypi.douban.com/simple/ -r requirements.txt

4.修改项目配置文件
  config 数据库连接配置、默认路径等
  数据库迁移,生成数据库迁移脚本,实现模型 <===> 数据库表 之间的映射

  尝试启动服务

5.安装和使用uwsgi 对应的应用服务:gunicorn
  是一个应用服务器,非静态文件的网络请求必须通过该应用完成,当然也可以充当静态文件服务器(不推荐使用,而推荐使用Nginx)
  uwsgi是用Python编写,因此可通过 pip install uwsgi 安装,且必须安装在系统级别的Python的环境中

  *****通过 uwsgi 部署项目时 请求流程
  Client <===> Nginx <===> uwsgi <===> Django/Flask等服务

  尝试启动:
    uwsgi --http :8080 --module bbs.wsgi --virtualenv=/applications/python/env/bbs-env

  编写配置文件

[uwsgi]
# 服务器上是通过uwsgi来启动项目,也就是说启动了uwsgi,也就启动了项目
socket=127.0.0.1:8001
# 项目目录
chdir=/applications/python/bbs # Python 虚拟环境的路径
home=/applications/python/env/bbs-env # flask程序的启动文件,通常在本地是通过运行 python manage.py runserver 来启动项目的
wsgi-file=/applications/python/bbs/server.py
# 程序内启用的application变量名
callable=app http = :9001 # 启动uwsgi的用户名和用户组
uid=root
gid=root # 设置socket权限
chmod-socket=666 # 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true

6.安装和使用Nginx
  作用:
    动静分离 (静态资源:js/cs/图片等文件)
    反向代理
    负载均衡
  安装以及配置好环境变量,并这是Nginx开机自启动

  配置Nginx配置文件并且启动

7.supervisor配置
  管理uwsgi,可在uwsgi发生意外时自动重启应用服务
  安装,且必须安装在系统级别的Python的环境中 pip3 install git+https://github.com/Supervisor/supervisor
  创建配置文件 bbssupervisor.conf

[program:bbs]
command = uwsgi --ini /applications/conf/uwsgi/flask.bbs.ini directory = /applications/python/bbs startsecs = 0
stopwaitsecs = 0
autostart = true
autorestart = true stdout_logfile = /applications/python/bbs/bbssupervisor.log
stderr_logfile = /applications/python/bbs/bbssupervisor.err [supervisord]
loglevel = info [inet_http_server]
port = :9001
username = admin
password = admin123 # 配置通过 supervisorctl 管理的配置项
[supervisorctl]
serverurl = http://127.0.0.1:9001
username = admin
password = admin123 # 必须指定的 查看官方文档
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

  通过 supervisord 启动 uwsgi
    supervisord -c bbssupervisor.conf

  通过以上启动了supervisor之后,可使用supervisorctl 管理 supervisor
    supervisorctl -c bbssupervisor.conf
  管理台常用命令:
    status
    start pargram_name
    restart pargram_name
    reload
    quit

001 简单压力测试:    ab Apache旗下的压力测试工具
  yum install httpd-tools -y [root@AL~]# ab -n 100000 -c 100 url
一次一百个请求
ab -n 1000 -c 100 http://47.101.180.183/ 002 安装 supervisor 出错: [root@AL bbs]# pip3 install supervisor
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting supervisor
Downloading http://mirrors.aliyun.com/pypi/packages/ba/65/92575a8757ed576beaee59251f64a3287bde82bdc03964b89df9e1d29e1b/supervisor-3.3.5.tar.gz (421kB)
100% |████████████████████████████████| 430kB 19.7MB/s
Complete output from command python setup.py egg_info:
Supervisor requires Python 2.4 or later but does not work on any version of Python 3. You are using version 3.6.5 (default, Mar 16 2019, 12:35:52)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]. Please install using a supported version. ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-o5f3s_ep/supervisor/ 解决:
  pip3 install git+https://github.com/Supervisor/supervisor

Linux环境上部署Flask的更多相关文章

  1. (2)Canal管理后台在linux环境上部署

    1.背景 canal-admin设计为canal组件提供了配置管理.节点运维等功能的WebUI操作界面,方便用户快速操作. 2.前期准备 先到官网下载个canal.admin组件:也可以输入命令下载: ...

  2. Django Linux环境下部署CentOS7+Python3+Django+uWSGI+Nginx(含Nginx返回400问题处理、防火墙管理)

    本文将介绍如何在Linux系统上部署Django web项目,本次部署基于下面的架构: CentOS7+ Python3.5 + Django1.11 + uWSGI + Nginx 亲测可行!!按照 ...

  3. linux机器上部署多台Tomcat

    在Linux机器上部署多台Tomcat, 我部署的是Tomcat8,只需要一步,即避免端口号冲突. 在解压后的tomcat目录下,修改conf下server.xml. 修改shutdown端口: &l ...

  4. (1)ElasticSearch搭配Kibana在linux环境的部署

    1.简介 这个章节主要介绍ElasticSearch+Kibana两个组件在linux环境的部署步骤,以及在部署过程中遇到问题解决,暂就不涉及集群部署知识点,后面章节再详细讲解这块.下面让我们来简单了 ...

  5. springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类

    一.问题描述 最近开发了一个springboot程序,需要依赖第三方jar包,这个jar包无法直接通过pom远程仓库下载,需要从自己本地引入,于是配置pom文件如下:将本地jar包引入工程,syste ...

  6. 如何一步步在生产环境上部署django和vue

    本文由云+社区发表 本文主要讲述了如何一步步在生产环境上部署django和vue,操作系统默认为centos 说明:后文中出现的以下字符串均表示具体的路径或者名称,含义如下: DJANGO_DIR-- ...

  7. 如何在Linux服务器上部署禅道

    最近换了新的项目团队,由于新团队比较年轻化,没有实行正规的项目管理,于是我自告奋勇要为团队管理出一份力,帮助团队建立敏捷化的项目管理,经过多方考究和对比后,选择了目前较受欢迎的开源项目管理软件:禅道. ...

  8. Rabbitmq~linux环境的部署

    之前写过在windows环境上部署rabbitmq,这回介绍在centos上对这个消息中间件进行部署的过程 一 下载和解压 wget  http://www.rabbitmq.com/releases ...

  9. 如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用

    你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/151981 ...

随机推荐

  1. python下的并发编程

    阅读目录 一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 ...

  2. 05-Python入门学习-字符串与列表的内置方法

    字符串 一:基本使用 1 用途: 记录描述性的状态,比如人的名字.地址.性别 2 定义方式: 在"",'',"""""" ...

  3. Cnr

    Description 写一个求阶乘的函数,实现Cmn排列,就是指从给定n个数的元素中取出指定r个数的元素,进行排序,我们用A(n,r)表示,组合,则是指从给定n个数的元素中仅仅取出指定r个数的元素, ...

  4. 找出数组[1...n]中第k小元素

    //问题描述: 试编写一个算法,使之能够在数组L[1...n]中找出第k小的元素(即从小到大排序后处于第k个位置的元素) #include <stdio.h> // 结合快排思想,查找第5 ...

  5. css实现连续数字和英文的自动换行的方法

    1.(IE浏览器)连续的英文字符和阿拉伯数字,使用word-wrap : break-word ;或者word-break:break-all;实现强制断行 #wrap{word-break:brea ...

  6. __http原理__HTTP 协议简介

    HTTP 协议通信流程 超文本 除了文本以外,还有其他数据类型的内容 HTTP 协议 指计算机网络通信中 两台计算机之间所必须遵守的规定或规则 Hypertext Transport Protocol ...

  7. 图片上传 new FormData() ,new FileReader()

    多图片和单图片取决于 multiple属性,下面来介绍下 new FileReader() reader.readAsDataUrl(file[0]) 可以看到文件是Base64的, let fd = ...

  8. 邮件服务器安装--Postfix + Dovecot + Squirrelmail--CentOS 6.4

    英文原文链接 : http://www.unixmen.com/install-postfix-mail-server-with-dovecot-and-squirrelmail-on-centos- ...

  9. [Day24]IO(转换流、缓冲流)

    1. 转换流 1.1 OutputStreamWriter类-字符流通向字节流的桥梁,可使用指定的字符编码表,将要写入流中的字符编码成字节. 1.2 InputStreamReader类-字节流通向字 ...

  10. Python的基本语法1

    一.python的基本数据类型 (1)6种基本数据类型 1.数字类型 int 整数,2,0,-4等 float 浮点数,如1.2,-0.3等 bool 布尔类型,True,False complex ...