1、 安装 python3 和 pip3

参考:http://www.cnblogs.com/mqxs/p/8692870.html

2、安装 lnmpa 集成开发环境

参考:http://www.cnblogs.com/mqxs/p/8706353.html

3、gunicorn安装

参考资料: gunicorn

pip install gunicorn

4、flask 安装

参考资料: flask

pip install flask
pip install virtualenv

5、virtualenv 使用

参考资料: virtualenv

$ mkdir myproject
$ cd myproject
$ virtualenv venv
$ . venv/bin/activate

6、从仓库下载 flask 工程文件

1.git 操作, 当然也可以直接用filezila 将工程传递上去

  注意这里需要同时安装 工程相关的依赖插件 flask-login 之类的

2.需要特别注意的是, 使用 pip install xxx 和 sudo pip install xxx 的效果是不一样的, 由于我们最终使用sudo运行, 因此, 这里所有依赖的插件都应该使用 sudo pip 进行安装, 否则运行错误


7、运行工程项目

helloworld.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!' if __name__ == '__main__':
app.run()
gunicorn -w  -b 127.0.0.1: helloworld:app

1.这里使用gunicorn 启动工程

2.这里说明一下: 
- D 表示后台运行 (PS.我试了加了-D就启动失败了,原因未知)
- w 表示有3 个 工作线程(感觉有些类似 nginx 的 master-worker 模型) 
- b 指定ip 和端口 
- 这里采用本机访问, 主要是为了使用nginx 进行代理, 方便管理 
- application 表存放 写着全局变量 app 的那个工程文件
- 在我们的这个工程中, 即包含 init.py 的那个文件 
- app 为全局变量 (app = Flask(__name__)) 
- ps: 在下面图示文件夹中运行 gunicorn 指令

到达这一步,你可以在本机的浏览器上访问127.0.0.1:8000,浏览器上就会出现Hello World!

注意:如果是想通过外网访问的话就要把ip改为内网的ip,外网直接用外网ip登陆即可。

还有一点要注意的,如果外网无法连接(当时一直以为部署失败了),需要去阿里云那边修改安全组配置,修改配置规则,将自己的端口加入,才可以外网访问。

如下图:

3.参考资料: Docs » Running Gunicorn 

8、 配置nginx 服务器脚本

1.安装完的nginx 在 /usr/local/nginx 目录下, 我们可以找到conf文件夹下的 nginx.conf 文件, 将其修改

2.添加nginx 需要监听的端口信息

server {
listen ;
server_name instagram.zhyh2010.com;
location /{
proxy_pass http://127.0.0.1:8000;
}
}

实际上, 我们将外部通过 8001 端口发送过来的请求, 代理给了 127.0.0.1:8000 也就是我们的 flask 项目

记得完成 nginx 需要重新起动 nginx 服务喔!

sudo service nginx restart

9、防火墙设置

1. 参考资料:

解决 RHEL 7/ CentOS 7/Fedora 出现Unit iptables.service failed to load

centOS防火墙中端口的开启和关闭

linux 中防火墙配置 iptables 命令参数的含义介绍

2.防火墙设置信息

1.可以看到 我们的8000, 8001 端口都是开放的, 但是 8000 端口上没有程序监听 (我们的程序只监听本机的 8000 端口)

而 8001 端口是通过 nginx 监听的。

2.端口监听信息

参考原文:https://blog.csdn.net/zhyh1435589631/article/details/51946439

【Centos】【Python】【Flask】阿里云上部署一个 flask 项目的更多相关文章

  1. 阿里云上部署了zabbix,突然无法收到报警邮件的解决办法

    在阿里云上部署了zabbix,一直能正常接收到zbx发来的报警邮件(报警邮箱是163的),不知是什么原因,突然无法接收到报警邮件了. 但在服务器上手动执行echo "hello"| ...

  2. 在腾讯云&阿里云上部署JavaWeb项目(Tomcat+MySQL)

    之前做项目都是在本地跑,最近遇到需要在在云服务器(阿里云或者腾讯云都可以,差不多)上部署Java Web项目的问题,一路上遇到了好多坑,在成功部署上去之后写一下部署的步骤与过程,一是帮助自己总结记忆, ...

  3. 如何在阿里云上部署war包到tomcat服务器

    一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉 ...

  4. 阿里云服务器部署Java Web项目全过程

    最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购 ...

  5. Django+nginx+gunicore+supervisor+阿里云主机 部署博客项目

    1 准备阶段 1 新鲜的阿里云主机 2 购买一个喜欢的域名 3 创建python的虚拟环境 2 阿里云主机的选取 咱们就是为了实验,我买了最便宜的阿里云主机 3 阿里云主机创建一个超级用户 3.1 默 ...

  6. linux系统上部署一个web项目

    对于apache开源项目中tomcat的认识,大多停留在Windows下,这次我通过一个简单的实例来介绍一下在linux下如何搭建tomcat环境,并且部署一个web项目. 先从基本安装开始,可别小看 ...

  7. [傻瓜式一步到位] 阿里云服务器Centos上部署一个Flask项目

    网络上关于flask部署Centos的教程有挺多,不过也很杂乱. 在我第一次将flask上传到centos服务器中遇到了不少问题,也费了挺大的劲. 在参考了一些教程,并综合了几个教程之后才将flask ...

  8. 在阿里云上部署 Postfix

    Postfix 可以很方便的在一台机器上部署 smtp 服务,在 centos 上来说的话可以使用: sudo yum install postfix sudo systemctl enable po ...

  9. 阿里云上部署kafka--遇到的坑

    阿里云防火墙关闭,并且配置规则.不然会导致访问不到服务. 问题一: Caused by: java.net.UnknownHostException: iZuf68tztea6l5ccdz7wemZ: ...

随机推荐

  1. DBeaver利用方式简介

    当攻击者能够进入内网,同时发现某台服务器装有弱口令的数据库时,除了在console中查看数据库信息外, 还可以利用第三方工具进行数据库读取,本例中使用DBeaver进行查看. 1. 下载DBeaver ...

  2. (原创)c++11改进我们的模式之改进访问者模式

    本次讲c++11改进我们的模式之改进访问者模式 访问者模式是GOF23个设计模式中比较复杂的模式之一,但是它的功能也很强大,非常适合稳定的继承层次中对象的访问,可以在不修改被访问对象的情况下,动态添加 ...

  3. vim中权限不足时不用退出而强制保存

    命令: :w !sudo tee % 此命令是把当前文件(即%)作为stdin传给sudo tee命令来执行.说起来挺绕口,其实就是:用sudo强制保存.   有时候在自己机器上折腾的时候需要更改一些 ...

  4. javascript基础拾遗(五)

    1.什么是箭头函数 ES6引入的一种新的函数,类似匿名函数,x=>xx 箭头左端为函数参数,右端为函数体 相当于 function (x){ retutn xx } 2.箭头函数的特点 更简洁 ...

  5. vue2.0的生命周期

    生命周期先上图 什么是生命周期 Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程, 我们称这是Vue的生命周期.通俗说就是Vue实 ...

  6. FFmpeg Basics学习笔记(1)ffmpeg基础

    1 FFmpeg的由来 FFmpeg缩写中,FF指的是Fast Forward,mpeg是 Moving Pictures Experts Group的缩写.官网:ffmpeg.org 编译好的可执行 ...

  7. LeetCode: Sum Root to Leaf Numbers 解题报告

    Sum Root to Leaf Numbers Given a binary tree containing digits from 0-9 only, each root-to-leaf path ...

  8. spring IOC 模拟实现

    IOC即inverse of control 控制反转 以前对象之间的引用是通过new来调用实现,有了Spring IOC,我们可以把对象之间的引用交给他来管理,这样就把控制权交给了Spring,所以 ...

  9. ios 让textView被键盘挡住上移

    注册键盘通知 #pragma mark - 键盘通知 - (void)addNoticeForKeyboard { //注册键盘出现的通知 [[NSNotificationCenter default ...

  10. iOS 使用Masonry介绍与使用实践:快速上手Autolayout

    介绍 Masonry 源码:https://github.com/Masonry/Masonry Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 ...