之前一直用的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应用的更多相关文章

  1. Python基础 - Ubuntu+Nginx+uwsgi+supervisor部署Flask应用

    网上找了许多讲关于Flask应用部署的文章几乎都是一个helloworld的Demo,按照helloworld来部署都没问题,但实际项目部署时还是遇到了不少问题.在这里简单写下自己成功部署的过程,防止 ...

  2. Ubuntu下使用Nginx+uWSGI+Flask(初体验)

    Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...

  3. centos7下采用Nginx+uwsgi来部署django

    之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django. 1.安装uwsgi以及 ...

  4. ubuntu下配置nginx+uwsgi+django

    服务器配置是Ubuntu14.04 64位OS ubuntu14.04默认是安装好了python2.7版本不用自己安装了. 先更新下源 sudo apt-get update 第一步先安装pip su ...

  5. 在阿里云 Ubuntu上通过nginx+uwsgi服务器部署Django出现的502错误

    https://blog.csdn.net/luojie140/article/details/76919471 https://blog.csdn.net/sinat_21302587/articl ...

  6. ubuntu NGINX uwsgi https 部署Django 遇到的问题

    搞了3天终于把Django成功部署到Ubuntu,记录一下: 引用来自泡泡茶壶: Ubuntu下的Nginx + Uwsgi + Django项目部署详细流程 前提说明: Django作为小程序的后端 ...

  7. Nginx+uWSGI+Django部署web服务器

    目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...

  8. Nginx+uwsgi+supervisor+Ubuntu+flask

    Nginx+uwsgi+supervisor+Ubuntu+flask Nginx+uwsgi+supervisor在Ubuntu上部署flask应用 网上找了许多讲关于Flask应用部署的文章几乎都 ...

  9. Nginx+Gunicorn+Supervisor部署Flask应用

    Flask 内置了简单的 Web 环境,让我们在开发的时候只需要专注于应用实现,而真正要在生产环境运行时这个简单的 Web 环境就不够用了,还需要一系列操作才能让 Web 应用高效的运行起来.现在记录 ...

随机推荐

  1. java中如何修改事务的隔离级别

    事务的特性: 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. (多条语句要么都成功,要么都失败.) 一致性(Consistency)事务前后 ...

  2. 学习Flutter应用开发有用的代码/库/专有技术列表

    当我开始使用Flutter开发该应用程序时,我开始担心:“最好的书写方式是什么?”以及“放置它的效果如何?”在这种情况下,您将需要学习和参考GitHub发布的代码和应用程​​序. 因此,我收集了似乎对 ...

  3. Mac brew安装的php修改了php.ini之后如何重启php?

    环境:nginx+mysql+php7.2:Mac利用homebrew安装的php7.2 问题:修改了PHP的配置文件,php.ini:服务器是nginx,如何重启PHP? 开启: brew serv ...

  4. 5.1 Nginx的基本配置

    备注:worker_processes 1(数量建议跟系统CPU的核数相同,例如:2个CPU,每个CPU4核,建议为8),worker_connections 建议小于worker_rlimit_no ...

  5. 【快学springboot】4.接口参数校验

    前言 在开发接口的时候,参数校验是必不可少的.参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定.如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常. 上一篇文 ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表单:内联表单

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. ROS学习笔记10-写一个简单的订阅者和发布者(C++版本)

    本文档来源于:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29 写发布者节点如前所述,节点是连接到RO ...

  8. 库克承认iPhone销售不佳是因定价太高,但降价能救苹果吗?

    iPhone定价愈来愈高,已经是不争的事实.但iPhone价格的飙升,其实并不是"正常"的.早在乔布斯时代,iPhone的价格维持在5000元左右.虽然看起来价格略高,但也在很多人 ...

  9. 如何通过DICOM的tag来判断3D图像的方向

    在DICOM标准里,有三个TAG与成像的方向相关. 参考来源:Kitware关于DICOM方向的说明 http://public.kitware.com/IGSTKWIKI/index.php/DIC ...

  10. 9.2.1 hadoop mapreduce任务输出的默认排序

    任务的默认排序 MapTask和ReduceTask都会默认对数据按照key进行排序,不管逻辑上是否需要.默认是按照字典顺序排序,且实现该排序的方法是快速排序.但是map和reduce任务只能保证单个 ...