阿里云部署 Flask + uWSGI + Nginx
一、引言
今天入手了一台阿里云服务器,是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的更多相关文章
- 阿里云部署 Flask + WSGI + Nginx 详解
抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...
- 阿里云部署 Flask + WSGI + Nginx 转载详解
我采用的部署方案是: Web 服务器采用 uwsgi host Flask 用 Supervisor 引用 uwsgi 作常规启动服务 基于 Nginx 作反向代理 首先, 阿里云服务器可以通过 SS ...
- 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...
- python部署-Flask+uwsgi+Nginx
一.Flask部分(app.py) flask即Python代码:部分参考代码如下,相信很多人如果看到这篇文章一定有flask的代码能力. from app import create_app fro ...
- 阿里云部署flask
https://www.cnblogs.com/Ray-liang/p/4173923.html
- Flask+uwsgi+Nginx+Ubuntu部署
学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Pyth ...
- 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- 阿里云部署Docker(5)----管理和公布您的镜像
出到这节,我在百度搜索了一下"阿里云部署Docker",突然发现怎么会有人跟我写的一样呢?哦,原来是其它博客系统的爬虫来抓取,然后也不会写转载自什么什么的.所以,我最终明确为什么那 ...
随机推荐
- C语言 · 最大乘积
算法提高 最大乘积 时间限制:1.0s 内存限制:512.0MB 问题描述 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? 输入格式 第一行一个数表示数据组数 每组 ...
- SpringBoot使用maven构建
1.使用maven作为parent管理 maven用户可以继承spring-boot-starter-parent项目获取合适的默认设置.该父项目提供一下特性: 默认编译级别为Java1.6 源编码格 ...
- php -- 魔术方法 之 删除属性:__unset()
属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载 __unset():当删除一个不存在或者权限不够的属性的时候会自动触发 <?php //属性重载 c ...
- 配置sudo su
买了UCloud的机器默认给的是root权限,从安全考虑,这个得改改,那就添加一个普通用户吧.. 可是那群民工又有话说了,得有root权限才能启动那些服务进程,每次都要输入root密码才能切换到roo ...
- remote指令添加远程数据库
git remote add <name> <url> git remote add origin https://[your_space_id].backlogtool.co ...
- superresolution_v_2.0 Application超分辨率程序文档
SUPERRESOLUTION GRAPHICAL USER INTERFACE DOCUMENTATION Contents 1.- How to use this application. 2.- ...
- 一些 JS页面的 调用方式init()
//初始化.... var initAccManPage=function() { //初始化... var initChangeBtn = function(){ $("#btnChang ...
- [转]ASP.NET MVC 5 - 视图
在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所 ...
- Struts2_day01--Struts2的核心配置文件_常量配置_分模块开发_Action编写方式
Struts2的核心配置文件 1 名称和位置固定的 2 在配置文件中主要三个标签 package.action.result,标签里面的属性 标签package 1 类似于代码包,区别不同的actio ...
- Java Web项目--显示一个静态页面
我们可以在Eclipse中新建一个Dynamic Web Project,然后在项目的WebContent目录下新建一个Html文件page1.html,其内容如下: <!DOCTYPE htm ...