阿里云部署 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语言 · c++_ch02_01(打印元音字母的ASCII码)
算法提高 c++_ch02_01 时间限制:1.0s 内存限制:512.0MB 编写一个程序,利用强制类型转换打印元音字母大小写10种形式的ASCII码. 输出的顺序为:大写的字母A ...
- Java Spring Boot: Unable to determine jdbc url from datasource
如果你和我一样从github或码云上下载了一个几年前别人写的demo代码,想用来做学习用.编译的时候遇到下面这样的错误,然后死命上网查各种方案,百试不灵.试尽了各种方案,就是还连接不上数据库.你可以试 ...
- mysql实现经纬度计算两个坐标之间的距离
DELIMITER $$CREATE DEFINER = CURRENT_USER FUNCTION `getDistance`(`lon1` float,`lat1` float,`lon2` fl ...
- Web项目开发规范文档
http://www.kancloud.cn/chandler/css-code-guide/51267
- chrome显示小于12号字体的方法
我现在做一个支持英文的网站,但是字体要设置小于12号字体,我百度方法是-webkit-text-size-adjust:none; 但是谷歌为什么不支持啊, 有没有解决办法 让谷歌浏览器 支持小于 ...
- HashMap与HashCode有关,用Sort对象排序
遍历Map,使用keySet()可以返回set值,用keySet()得到key值,使用迭代器遍历,然后使用put()得到value值. 上面这个算法的关键语句: Set s=m.keySet(); I ...
- mysql -- 按时间查询 今天、昨天、明天、上月....
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NO ...
- form 回车键(ENTER)
<form class="clb_yyxx_nr" name="appointment_content" action="" onsu ...
- bootstrap基础学习八篇
bootstrap辅助类 a.对于文本颜色 以下不同的类展示了不同的文本颜色.如果文本是个链接鼠标移动到文本上会变暗: 类 描述 .text-muted "text-muted" ...
- LPCTSTR —— 摘自百度百科
LPCTSTR用来表示字符是否使用UNICODE. 如果程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串. 类型理解:L,表示 ...