一、引言

  今天入手了一台阿里云服务器,是centeros 7.5版本。本文解决的是 Flask 的部署问题。假设你的Flask的应用已经完成,现在只是部署的问题,本文以部署我的二次开发微信订阅号的项目(项目代码参考:https://www.cnblogs.com/li-li/p/10331714.html

  我采用的部署方案是:

    - Web 服务器采用 uwsgi host Flask;

    - 用 supervisor 引用 uwsgi 作常规启动服务;

    - 基于 Nginx 作反向代理;

  首先, 阿里云服务器可以通过 SSH 指令在本机的终端进行远程连接

ssh root@云服务器地址

  输入密码后可连接至云服务器。

二、安装python3、安装并配置虚拟环境

  参考博客:https://www.cnblogs.com/li-li/p/10192625.html

三、在虚拟环境下安装flask以及项目的其他依赖

1、我是用清单文件一次性安装Flask和他的相关依赖的,这样会更快。我的引用清单(requirements.txt)内容如下:

certifi==2018.11.29
chardet==3.0.4
Click==7.0
Flask==1.0.2
Flask-Script==2.0.6
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
requests==2.21.0
SQLAlchemy==1.2.17
urllib3==1.24.1
Werkzeug==0.14.1

2、安装清单文件中依赖的命令如下:

(wechatEnv) [root@wanglili my_flask]# pip3 install -r requirements.txt

  注意:一定要在运行这个安装之前启用了python 虚拟环境,否则会直接安装到全局去的!

3、上传 Flask的项目文件,整个项目文件结构如下:

/root/my_flask
├── app
│ ├── __init__.py
│ ├── templates
│ │ └── index.html
│ └── views
│ └── wx_demo.py
├── logs
├── manager.py
├── settings.py
└── requirements.txt

四、安装并配置uWSGI

  到此,项目的准备工作已经做完了,我们接下来要安装uWSGI,使用配置文件的方式启动项目,步骤如下:

(wechatEnv) [root@wanglili my_flask]# pip3 install -i https://pypi.douban.com/simple uwsgi                # 安装uwsgi
(wechatEnv) [root@wanglili my_flask]# touch uwsgi.ini             # 创建配置文件,写入如下内容
[uwsgi]
# uwsgi 启动时所使用的地址与端口
http-socket = 0.0.0.0:5000 # 指向网站目录
chdir = /root/my_flask # python 启动程序文件
wsgi-file = manager.py # python 程序内用以启动的 application 变量名
callable = my_app # 处理器数
processes = 4 # 线程数
threads = 2 # 状态检测地址
stats = 0.0.0.0:8000

  安装完成后,使用命令启动,验证配置是否正确:

(wechatEnv) [root@wanglili my_flask]# uwsgi uwsgi.ini

五、安装Nginx

1、安装nginx,参考博客

2、nginx的配置

server {
listen 80;
# 配置成自己服务器的url地址
server_name 39.xx.xx.130; ...... location / {
# 配置nginx的反向代理功能,自己服务器的5000端口,因为接下来的项目使用flask,且将其运行在自己的服务器的5000端口
proxy_pass http://39.xx.xx.130:5000;
# root html;
# index index.html index.htm;
} ......
  }

六、安装supervisor并配置

[root@wanglili my_flask]# easy_install supervisor       # 注意此时要退出虚拟环境执行
(wechatEnv) [root@wanglili my_flask]# echo_supervisord_conf > /etc/supervisor.conf      # 使用命令生成supervisor的配置文件
(wechatEnv) [root@wanglili my_flask]# vi /etc/supervisor.conf      # 编辑,在最后写入如下内容
[program:my_flask]
# 启动命令入口
command=/root/Envs/wechatEnv/bin/uwsgi /root/my_flask/uwsgi.ini
# 命令程序所在目录
directory=/root/my_flask
# 运行命令的用户
user=root
autostart=true
autorestart=true
# 日志地址
stdout_logfile=/root/my_flask/logs/uwsgi_supervisor.log
(wechatEnv) [root@wanglili my_flask]# supervisord -c  /etc/supervisor.conf    # 启动supervisord服务端,指定配置文件启动
(wechatEnv) [root@wanglili my_flask]# supervisorctl -c  /etc/supervisor.conf    # 进入supervisor的交互模式,可以启动或者关闭服务
supervisor> start my_flask

阿里云部署 Flask + uWSGI + Nginx的更多相关文章

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

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

  2. 阿里云部署 Flask + WSGI + Nginx 转载详解

    我采用的部署方案是: Web 服务器采用 uwsgi host Flask 用 Supervisor 引用 uwsgi 作常规启动服务 基于 Nginx 作反向代理 首先, 阿里云服务器可以通过 SS ...

  3. 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略

    centos7+nginx+python3+django+uwsgi配置Django 项目部署   1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...

  4. python部署-Flask+uwsgi+Nginx

    一.Flask部分(app.py) flask即Python代码:部分参考代码如下,相信很多人如果看到这篇文章一定有flask的代码能力. from app import create_app fro ...

  5. 阿里云部署flask

    https://www.cnblogs.com/Ray-liang/p/4173923.html

  6. Flask+uwsgi+Nginx+Ubuntu部署

    学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Pyth ...

  7. 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程

    学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...

  8. Flask+uwsgi+Nginx+Ubuntu部署教程

    学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...

  9. 阿里云部署Docker(5)----管理和公布您的镜像

    出到这节,我在百度搜索了一下"阿里云部署Docker",突然发现怎么会有人跟我写的一样呢?哦,原来是其它博客系统的爬虫来抓取,然后也不会写转载自什么什么的.所以,我最终明确为什么那 ...

随机推荐

  1. JQuery.getJSON 没反应

    Jquery是一个优秀的Javascrīpt框架,轻量级的js库,它兼容CSS3.jQuery使用户能更方便地处理HTML documents.events.实现动画效果,并且方便地为网站提供AJAX ...

  2. 转:解决centos netstat和ps感染木马

    解决方法:a.去除恶意文件的执行权限chmod 000 /tmp/gates.lod   /tmp/moni.lod    service sendmail stopchkconfig --level ...

  3. asp.net 下载的几种方式

    protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Response对象提供了一个新的方法TransmitFile来 ...

  4. 树莓派系统Raspbian安装小结

    是有界面的系统. NOOBS, our easy installer for Raspbian  基于debian NOOBS stands for New Out Of Box Software h ...

  5. jquery可拖动表格调整列格子的宽度大小(转)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 错题0920-java

    1.java如何接受request域中的参数? A:request.getRequestURL() B:request. getAttribute() C:request.getParameter() ...

  7. hdu 1174:爆头(计算几何,三维叉积求点到线的距离)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  8. 【NLP】新词发现

    http://www.csdn.net/article/2013-05-08/2815186 http://blog.csdn.net/yuyu2223/article/details/7725705 ...

  9. Unity3D 物体移动方式总结(转)

    1. 简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在 ...

  10. css属性image-redering详解

    What? image-rendering作为现阶段还处于实验性质中的css属性,他的作用是在浏览器对图片进行比例缩放时,设置其缩放使用的算法,从而来得到我们最终想要的图片结果.而且这个属性可以应用于 ...