• 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 目录下.

      也可以百度或者谷歌寻求帮助。

  • 相关阅读:
    ie 标题写入问题
    预览图片
    form表单submit事件
    SpringGraph 20101030 11:08[转]
    flexunable to transcode image
    navicate导入和导出数据库(转)
    Flex转自新浪微博
    zk中的Datebox中得到Timestamp
    反向代理
    flash builder sdk 4[转自IYeye]
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6353300.html
Copyright © 2020-2023  润新知