热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阿里云ECS部署Flask(Nginx,gunicorn,supervisor,fabric,ubuntu16.04)

先上网站http:139.224.235.140,(域名还没弄好)一、编写fabric脚本fabric只支持python2,只需要在开发机子上安装python2,服务器不需要编写

先上网站 http://139.224.235.140/,(域名还没弄好)

一、编写fabric脚本

fabric只支持python2,只需要在开发机子上安装python2,服务器不需要
编写fabric脚本,把flask程序打包并上传到阿里云ECS的ubuntu服务器
针对狗书编写的脚本如下:

# -*- coding: utf-8 -*-
import os, re
from datetime import datetime
from fabric.api import *

env.user='root'
env.password='****'
env.hosts=['112.233.244.255']

_TAR_FILE='huu-flask.tar.gz'

def build():
includes=['app','config.py','manage.py','requirements.txt']
excludes=['__pycache__','*.pyc','*.pyo']
local('rm -f dist/%s'%_TAR_FILE)
with lcd(os.path.abspath('.')):
cmd=['tar','--dereference','-czvf','./dist/%s'%_TAR_FILE]
cmd.extend(includes)
cmd.extend(['--exclude=\'%s\''% ex for ex in excludes])
local(' '.join(cmd))

_REMOTE_TMP_TAR='/tmp/%s'%_TAR_FILE
_REMOTE_BASE_DIR='/srv/flasky'
def deploy():
newdir='flasky-%s'%datetime.now().strftime('%y-%m-%d_%H.%M.%S')
run('rm -f %s'%_REMOTE_TMP_TAR)
put('dist/%s'%_TAR_FILE,_REMOTE_TMP_TAR)
with cd(_REMOTE_BASE_DIR):
run('mkdir %s'%newdir)
with cd('%s/%s'%(_REMOTE_BASE_DIR,newdir)):
run('tar -xzvf %s'%_REMOTE_TMP_TAR)
with cd(_REMOTE_BASE_DIR):
run('rm -rf flasky')
run('ln -s %s flasky'%newdir)

二、用supervisor启动flask程序

首先生成配置:

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf

编写配置:

[program:flasky]
command=/srv/venv3/bin/gunicorn manage:app --access-logfile /srv/flasky/flasky/logs/flasky.log
directory=/srv/flasky/flasky
user=root
#用gunicorn启动flask下面这个配置好像不管用,可以在gunicorn启动命令中加入log日志文件
stdout_logfile=/srv/flasky/flasky/logs/flasky.log
environment=A="1",B="2" #可以设置环境变量,虚拟环境添加PATH=""

启动:

supervisord -c /etc/supervisor/supervisord.conf
supervisorctl start flasky

查看状态:
supervisor本身的日志文件在
/tmp/supervisord.log

supervisorctl status

三、配置Nginx

在/etc/nginx/sites-available下有default可以备份后修改

server {
listen 80; # 监听80端口

root /srv/flask/www;

access_log /srv/flask/log/access_log; #默认在/var/log/nginx
error_log /srv/flask/log/error_log;#默认在/var/log/nginx

# server_name awesome.liaoxuefeng.com; # 配置域名

# 处理静态文件/favicon.ico:
location /favicon.ico {
root /srv/flask/www;
}

# 处理静态资源:
location ~ ^\/static\/.*$ {
root /srv/flask/www;
}

# 动态请求转发到9000端口:
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

最后,
/etc/init.d/nginx reload
就可以查看网站了


推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • JavaScript 实现图片文件转Base64编码的方法
    本文详细介绍了如何使用JavaScript将用户通过文件输入控件选择的图片文件转换为Base64编码字符串,适用于Web前端开发中图片上传前的预处理。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • Linux环境下MySQL的安装与配置
    本文详细介绍了在Linux系统上安装和配置MySQL的步骤,包括安装前的准备工作、下载和解压安装包、初始化数据库、配置文件编辑、启动服务以及设置开机自启动等。 ... [详细]
  • Django与Python及其他Web框架的对比
    本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上安装和配置 MySQL、Tomcat 和 JDK 的步骤。通过本文,您将了解如何顺利安装这些组件,并确保它们能够正常协同工作。 ... [详细]
  • Ubuntu 14.04 系统安装后网卡名称修改方法
    本文介绍了在安装 Ubuntu 14.04 Server 版本后,如何将默认的网卡名称从非 eth 格式修改为传统的 eth 格式,并提供了详细的步骤和示例。 ... [详细]
author-avatar
whglwz
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有