flask部署:Ubuntu下使用nginx+uwsgi+supervisor部署flask应用
之前一直用的Centos或者Red hat,自从使用Ubuntu后,发现Ubuntu使用起来更方便,自此爱上Ubuntu。
一.从github上下载flask应用
1.我已经成功将自己编写好的应用上传至github网站上。
使用命令 git clone https://github.com/xautxuqiang/minion_blog.git 下载
2.启动虚拟环境 source minion_blog/venv/bin/active
(保证安装了virtualenv,安装方法 pip install virtualenv )
(第三方包都安装在虚拟环境下,所以启动应用前确保启动了虚拟环境)
3.使用命令 python manage.py runserver 启动开发服务器,打开浏览器访问 http://127.0.0.1:5000
(该服务器是开发时使用的服务器,要把应用部署到网上还得依靠nginx)
二.安装所需的软件
命令 apt-get install nginx 安装nginx服务器
命令 pip install uwsgi #这里是使用pip安装的uwsgi
命令 apt-get install supervisor
三.配置uwsgi
在minion_blog文件夹下创建 config.ini 文件,配置如下:
[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/xu/minion_blog #你的minion_blog应用的位置
wsgi-file = manage.py #即minion_blog应用下的manage.py文件
callable = app #应用
processes = 4
threads = 2
stats = 127.0.0.1:9191
virtualenv = /home/xu/minion_blog/venv #虚拟环境的位置
buffer-size = 32768
四.配置nginx
编辑 /etc/nginx/sites-available/default , 删除里面的内容。配置内容如下:
server{
listen 80;
server_name localhost; #这里先设置为本机的localhost,如果你有公网IP的话,
#可以设置为公网IP。例如我的阿里云ECS服务器IP为121.42.146.43
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
uwsgi_param UWSGI_PYHOME /home/xu/minion_blog/venv;
uwsgi_param UWSGI_CHDIR /home/xu/minion_blog;
uwsgi_param UWSGI_SCRIPT manage:app;
}
}
五.测试是否配置成功
输入命令 uwsgi /home/xu/minion_blog/config.ini 启动
现在打开浏览器访问 localhost 或 127.0.0.1 ,看是否成功.
六.使用supervisor管理
我们发现必须输入命令 uwsgi config.ini 启动,然后才能在浏览器访问到部署的应用。
这里我们就可以使用 supervisor 帮我们实现自动化.
supervisor安装后的配置文件在 /etc/supervisor/下,在/etc/supervisor/conf.d/下创建文件
apps_supervisor.conf
编辑 apps_supervisor.conf 文件:
[program:minion_blog]
command = uwsgi --ini /home/xu/minion_blog/config.ini #启动命令
directory = /home/xu/minion_blog #应用的目录
user = xu #用户名,我的用户是xu
autostart = true
autorestart = true
stdout_logfile = /home/xu/minion_blog/logs/uwsgi_supervisor.log #这个目录必须自己创建,系统不会自己创建
[supervisord]
配置文件如上
重点:确保在命令行输入 uwgsi 能启动该命令,即保证是在虚拟环境里安装的 uwsgi, 且在虚拟环境下启动该命令
输入命令 supervisord -c /etc/supervisor/conf.d/apps_supervisor.conf
ok,启动成功。可以在浏览器中输入 localhost 查看,或输入命令 ps aux | grep uwsgi 查看.
* 其实在这里经常会遇到一个错误问题,即发生502 错误。
这个错误一般是权限的问题,你应该看下自己的minion_blog目录的权限 或者 自己用户家目录的权限
将自己minion_blog目录及其以下文件都修改为当前用户名
chown -R xuqiang:xuqiang minion_blog
ok重启后重新输入supervisord -c /etc/supervisor/conf.d/apps_supervisor.conf
如果出现错误,可以查看 supervisord.log 里的内容判断错误,该文件位于 minion_blog 目录下.
也可以百度或者谷歌寻求帮助。
flask部署:Ubuntu下使用nginx+uwsgi+supervisor部署flask应用的更多相关文章
- Python基础 - Ubuntu+Nginx+uwsgi+supervisor部署Flask应用
网上找了许多讲关于Flask应用部署的文章几乎都是一个helloworld的Demo,按照helloworld来部署都没问题,但实际项目部署时还是遇到了不少问题.在这里简单写下自己成功部署的过程,防止 ...
- Ubuntu下使用Nginx+uWSGI+Flask(初体验)
Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...
- centos7下采用Nginx+uwsgi来部署django
之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django. 1.安装uwsgi以及 ...
- ubuntu下配置nginx+uwsgi+django
服务器配置是Ubuntu14.04 64位OS ubuntu14.04默认是安装好了python2.7版本不用自己安装了. 先更新下源 sudo apt-get update 第一步先安装pip su ...
- 在阿里云 Ubuntu上通过nginx+uwsgi服务器部署Django出现的502错误
https://blog.csdn.net/luojie140/article/details/76919471 https://blog.csdn.net/sinat_21302587/articl ...
- ubuntu NGINX uwsgi https 部署Django 遇到的问题
搞了3天终于把Django成功部署到Ubuntu,记录一下: 引用来自泡泡茶壶: Ubuntu下的Nginx + Uwsgi + Django项目部署详细流程 前提说明: Django作为小程序的后端 ...
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- Nginx+uwsgi+supervisor+Ubuntu+flask
Nginx+uwsgi+supervisor+Ubuntu+flask Nginx+uwsgi+supervisor在Ubuntu上部署flask应用 网上找了许多讲关于Flask应用部署的文章几乎都 ...
- Nginx+Gunicorn+Supervisor部署Flask应用
Flask 内置了简单的 Web 环境,让我们在开发的时候只需要专注于应用实现,而真正要在生产环境运行时这个简单的 Web 环境就不够用了,还需要一系列操作才能让 Web 应用高效的运行起来.现在记录 ...
随机推荐
- Pytorch model saving and loading 模型保存和读取
It is really useful to save and reload the model and its parameters during or after training in deep ...
- 本机连接虚拟机中docker启动的mysql数据库
首先要保证本机能访问虚拟机的网络 并且虚拟机开通了mysql的访问端口 进入容器 docker exec -it 容器id /bin/bash 进入mysql数据库开启远程访问权限 mysql -ur ...
- 常用的UI控件
关于本文:作为一名iOS软件工程师,熟练规范的使用常用的UI控件是必备的基础技能. 指示器(UIActivityIndicatorView)----转动的等待小菊花 提醒对话框(UIAlertView ...
- CSP-201609-4 交通规划
问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成高速铁路. ...
- Ubuntu18.04--双显卡Nvida笔记本安装之各种问题
(1)安装 出现卡logo或者黑屏 关机重启,按住esc键或shift键不放,进入选择模式,按F6进入选择,nomodeset模式 (2)循环的登陆,或者安装好后重启无法再次进入系统 关机重启,在 ...
- JavaScript图片
<ul> <li> <a href="images/666.jpg" title="frist img">frist< ...
- Cent OS下配置虚拟Ip地址
1.首先我们登录操作系统 用户名root 密码 123456 然后我们输入ip查询命名 ip addr 也可以输入 ifconfig查看ip,但此命令会出现3个条目,centos的ip地址是ens3 ...
- Oracle笔记--PL/SQL(Procedure Language & Structured Query Language)
1.PL/SQL是一种高级数据库程序设计语言,专门用于在各种环境下对Oracle数据库进行访问.该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理. 2.PL/SQL是对SQ ...
- PHP 符号大全
注解符号: // 单行注解 /* */ 多行注解 引号的使用 ’ ’ 单引号,没有任何意义,不经任何处理直接拿过来; " "双引号,PHP动态处理然后输出,一般 ...
- 嵊州普及Day4T1
题意:从n个数中选出k个数,使他们任意两数之差都等于m. 思路:任意差值都等于m,不就等价于k个数模m余数相同吗? 然后桶排储蓄一下各数余数即可. 见代码: #include<iostream& ...