`
xuanzhui
  • 浏览: 200582 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

在Ubuntu通过Nginx和uwsgi部署Flask

阅读更多

以下基本是在文章 在Ubuntu上使用Nginx部署Flask 应用 上做了部分调整,没有使用virtualenv,python版本3.4。

 

依赖

安装pip3

sudo apt-get install python3-setuptools
sudo easy_install3 pip

 

安装python3-dev,uwsgi依赖,否则直接安装uwsgi可能会遇到python.h找不到的问题

sudo apt-get install python3-dev

 

安装Flask

sudo pip3 install Flask

 

安装uwsgi

sudo pip3 install uwsgi

 

 

项目路径

将Flask项目移动到/var/www/目录下(非必须),假设工程文件夹叫做pydemo,该文件夹下包含的Flask入口文件为demo.py,

设置一下项目文件权限归xuanzhui所有

 

sudo chown -R xuanzhui:xuanzhui /var/www/pydemo/

注意:按照Flask官网的说法,部署的python文件中,所有app.run() 必须放在if __name__ == '__main__'中

 

Please make sure in advance that any app.run() calls you might have in your application file are inside an if __name__ == '__main__': block or moved to a separate file. Just make sure it’s not called because this will always start a local WSGI server which we do not want if we deploy that application to uWSGI.

 

Nginx

安装

 

sudo apt-get install nginx

 

配置文件路径 /etc/nginx/conf.d/

 

启动

sudo /etc/init.d/nginx start

 

停止

sudo /etc/init.d/nginx stop

 

重启

sudo /etc/init.d/nginx restart

 

 

配置Nginx

删除默认的配置文件(不删也无所谓)

 

sudo rm /etc/nginx/sites-enabled/default

直接在工程目录下创建一个配置文件/var/www/pydemo/pydemo_nginx.conf

 

文件内容

 

server {
    listen      80;
    server_name localhost;
    charset     utf-8;
    client_max_body_size 75M;
 
    location / { try_files $uri @yourapplication; }

    location /static {
        root /var/www/pydemo/;
    }

    location @yourapplication {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/pydemo/pydemo_uwsgi.sock;
    }
}

将刚建立的配置文件使用符号链接到Nginx配置文件文件夹中,重启Nginx

 

 

sudo ln -s /var/www/pydemo/pydemo_nginx.conf /etc/nginx/conf.d/
sudo /etc/init.d/nginx restart

 

 

配置uWSGI

在工程目录下创建配置文件 /var/www/pydemo/pydemo_uwsgi.ini

文件内容

 

[uwsgi]
#application's base folder
base = /var/www/pydemo
chdir = /var/www/pydemo
 
#python module to import
module = demo

pythonpath = /usr/bin/python3.4
 
#socket file's location
#%n the file name without extension
socket = /var/www/pydemo/%n.sock
 
#permissions for the socket file
chmod-socket = 666
 
#the variable that holds a flask application inside the module
callable = app
 
#location of log files
logto = /var/log/uwsgi/%n.log

chdir在下面启动uwsgi emperor时是必须的

 

socket要和nginx中设置uwsgi_pass的文件名一致

 

然后创建log存放的文件夹并设置该文件夹的权限归xuanzhui

 

sudo mkdir -p /var/log/uwsgi
sudo chown -R xuanzhui:xuanzhui /var/log/uwsgi

 

 

此时运行uwsgi,通过localhost就可以访问资源

 

uwsgi --ini /var/www/pydemo/pydemo_uwsgi.ini

 

 

为了让uwsgi在后台运行,继续配置emperor,此处使用systemd

uWSGI Emperor

创建一个systemd unit文件 /etc/systemd/system/emperor.uwsgi.service

文件内容

 

[Unit]
Description=uWSGI Emperor
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --master --emperor /etc/uwsgi/vassals --die-on-te
rm --uid xuanzhui --gid xuanzhui --logto /var/log/uwsgi/emperor.log
# Requires systemd version 211 or newer
RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT 
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

 

ExecStart运行uWSGI守护进程并让它到/etc/uwsgi/vassals文件夹查找配置文件。创建这个文件夹,在其中建立一个链到我们刚创建配置文件的符号链接。

 

sudo mkdir /etc/uwsgi && sudo mkdir /etc/uwsgi/vassals
sudo ln -s /var/www/pydemo/pydemo_uwsgi.ini /etc/uwsgi/vassals

 

 

 

sudo systemctl enable emperor.uwsgi.service

 

enable之后将上面的uwsgi进程kill掉,启动emperor服务,所有配置完成

sudo systemctl start emperor.uwsgi.service

 

 

关闭

sudo systemctl stop emperor.uwsgi.service

 

重启

sudo systemctl restart emperor.uwsgi.service

 

 

日志文件

uWSGI Emperor将日志写到/var/log/uwsgi/emperor.log;这个文件夹还包含着每个应用的单独日志:/var/log/uwsgi/pydemo_uwsgi.log。

 

ref http://uwsgi-docs.readthedocs.org/en/latest/Systemd.html

 

 

 

 

分享到:
评论

相关推荐

    实现阿里云部署flask程序nginx+uwsgi及出现的问题.zip

    在本教程中,我们将深入探讨如何在阿里云上部署基于Flask的应用,使用Nginx作为反向代理服务器和uWSGI作为应用服务器。Flask是一个轻量级的Python Web框架,而Nginx和uWSGI则为Flask应用程序提供了高效、稳定的服务...

    部署python flask项目到云服务器(flask+mysql+uwsgi+nginx)

    部署python flask项目到云服务器 这是我第一次写博客,写的不好请多多见谅。 操作环境是ubuntu16.04,使用xshell和xftp工具,记得进入root用户,如果没有需要设置,怎么设置后面更新。 Python 3.5.2(自带的,需要...

    uwsgi-flask:Docker nginx + uwsgi-flask 镜像,包括一个 Hello World 烧瓶应用程序

    带有 Nginx、uWSGI 和 Hello World Flask 应用程序的 Docker 镜像。 该图像基于我的 ubuntu-python 3.4 图像(它又在 phusion/baseimage 之上运行)。 Hello World 应用程序已启用并将在端口 80 上内部启动,并在...

    flask+nginx+uwsgi+supervisor部署到阿里云Ubuntu服务器教程

    超详细的flask部署全过程,压缩包内有部署详细步骤和Linux服务器历史命令记录,写的比较详细。我用的是阿里云的linux服务器,其他的linux服务器也大同小异,过程都差不多的,结合百度一定能够部署成功,祝你好运!

    详解python使用Nginx和uWSGI来运行Python应用

    Python web 应用的部署通常涉及多...通过 Nginx 和 uWSGI 的组合,Python web 应用可以实现高效、稳定且可扩展的部署。这种方式适用于小型项目到大型企业级应用,因为它能够灵活地处理负载、优化性能,并提供高可用性。

    阿里云部署Ubuntu 1.4 Flask + WSGI + Nginx 详解

    至此,你已经在阿里云Ubuntu 1.4服务器上成功部署了Flask应用,通过uWSGI和Nginx提供服务。现在,访问你的服务器域名或IP,就可以看到你的Flask应用在运行了。记得定期更新和监控你的服务器,以确保应用的安全性和...

    centos 7.0 使用Nginx部署flask应用教程

    最近博主在开发一个小项目,本机的开发环境是python3.6,因为需要部署到服务器(python2.7)的关系,所以研究了一下,网上大部分的教程是部署在Ubuntu上的,博主使用的是centos7.0,大部分的部署其实都是类似的,这...

    使用Python编写的个人网站系统,能够实现用户认证与管理、博客、照片分享等功能,基于Flask项目开发,适合本科毕业设计大作业

    项目部署指南 (Ubuntu16.04 + Nginx + uWSGI) 1. 新系统下, 安装必要的软件包 # apt-get upgrade & apt-get update # apt-get install build-essential python-dev python-pip virtualenv # apt-get install ...

    flask应用部署到服务器的方法

    - 此时,uWSGI 和 Flask 应用应该已经连接并等待请求。 8. 最后一步: - 重启 Nginx 服务以应用配置更改:`sudo service nginx restart`。 - 通过浏览器访问服务器的 IP 地址,如果一切配置正确,你应该能看到你...

    ubunt环境下python用flask做的一个网络配置

    在Ubuntu环境中,Python的Flask框架是一个非常流行的轻量级Web服务器网关接口(WSGI)Web应用框架,用于快速构建动态网站、API和服务。这个项目利用Flask的强大功能,创建了一个网络配置程序,这对于自动化网络管理...

    基于python+flask+vue的外包项目网站

    毕业设计 --外包项目网站 -- vue+python+flask+uwsgi+nginx+mysql 启动步骤: 启动后台: cd back virtualenv --no-site-packages extra_env pip install -r requirements.txt python run.py > 以上开启后台dev...

    Python Web程序部署到Ubuntu服务器上的方法

    在本文记录了我在Ubuntu中部署Flask Web站点的过程, 其中包括用户创建、代码获取、Python3环境的安装、虚拟环境设置、uWSGI启动程序设置,并将Nginx作为前端反向代理。希望对各位有所帮助。 建立一个Python Web程序...

    job:找工作

    凯文·泽恩德(Kevin Zehnder)主页访问我的网站: 查看简历: 点击展开网站演示选定的项目缩图标题描述代码 Flask-uSWGI-NGINX-Ubuntu 在Ubuntu 20上使用uWSGI和NGINX服务Flask应用程序 C ++ ATM应用简单的C ++ ATM...

    烧瓶:烧瓶

    阿肖克G Flask Web App 安装与安装 设置ssh-keygen sudo ssh-keygen cat ~ /.ssh/id_rsa.pub # test ... 去做 虚拟服务器自动配置 ...如何在Ubuntu 18.04上使用uWSGI和Nginx服务Flask应用程序 Flask应用

    PySite:使用Python编写的个人网站系统,能够实现用户认证与管理、博客、照片分享等功能,基于Flasky项目开发

    项目部署指南 (Ubuntu16.04 + Nginx + uWSGI)1. 新系统下, 安装必要的软件包 # apt-get upgrade & apt-get update # apt-get install build-essential python-dev python-pip virtualenv # apt-get install nginx ...

    Python毕业生信息审核系统源码.zip

    部署方面,可以使用Gunicorn或uWSGI作为WSGI服务器,Nginx作为反向代理和静态文件服务器,配合Gunicorn部署在如Ubuntu这样的Linux系统上。 10. **安全防护**:考虑系统安全,可以利用Python的CSRF(跨站请求伪造)...

    superset安装过程

    10. **部署到生产环境**:在生产环境中,可能需要使用gunicorn或uWSGI等应用服务器,以及Nginx作为反向代理来提供高可用性和性能优化。 以上步骤是通用的安装流程,但在具体操作中,如Fedora系统下,可能还需要考虑...

Global site tag (gtag.js) - Google Analytics