Flask+uWSGI+Nginx项目部署

?写完项目总不能一直在本地跑,我也是第一次部署项目,这里把部署过程记录一下,暂且把坑略去,遇到的错误之后在整理发出来。

准备工作

  1. 云服务器一台(这里以阿里云服务器为例,系统装的Centos7)
  2. 代码仓库(我用的gitee)

开始部署

初始化系统环境

uWSGI不能使用root用户,所以添加个新的用户:

  • adduser xxx
  • passwd username
  • gpasswd -a username wheel (添加到sudo用户组)

切换到自己创的用户下:

  • sudo -iu username

初始化环境:(ubuntu系统的用对应的apt命令就行)

  • sudo yum install epel-release
  • sudo yum install gcc nginx

安装python

这里使用的是anaconda,因为比装python要方便。

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.07-Linux-x86_64.sh

安装你下载下来的文件,路径就照它默认的来

  • sh Anaconda3-2019.07-Linux-x86_64.sh

给要部署的项目创建python虚拟环境

  • source anaconda3/bin/activate (激活anaconda)
  • pip install virtualenv (下载慢的话自行添加别的源)
  • mkdir flask_project
  • cd flask_project
  • 这里用git把你的项目拉下来,git使用不在这片笔记记录的范围之内
  • virtualenv venv (创建虚拟环境目录)
  • source venv/bin/activate (激活虚拟环境)
  • pip install ... (安装你的项目用到的库,用requirements.txt较为方便)

配置uWSGI服务器

  • pip install uwsgi
  • vim mywsgi.ini (自定义服务器的配置文件)

    ‘‘‘ #一个简单的ini文件,更多的参数名可以自己查询

    [uwsgi]

    module = ... # 启动程序所在的文件

    master = true processes = ... # 分配的进程数

    threads = ... # 线程数

    http = 0.0.0.0:5000 # 改成自己的ip和想要运行的端口

    virtualenv = ... # 刚才创建的venv的路径

    die-on-term = true

   ‘‘‘

  • uwsgi mywsgi.ini(如果想要在后台运行可以用命令 uwsgi -d --ini mywsgi.ini来代替) 至此,uwsgi服务器已经启动了,在浏览器输入对应ip和端口就能访问了。

使用nginx反向代理

来到安装nginx的文件夹下,查看nginx.conf内容(如果没有这个配置文件,那可能是在sites-enabled文件夹中的default文件,不同版本文件放的位置还是略有不同) 在http{}部分中你会看见这么一句:include ...,意思是在这个路径下的文件都会被当作配置文件加载。so,我们来到这个include对应的文件夹下

  • vim myconf.conf (创建自己的配置)

  ‘‘‘ #还是给个简单的配置

   server {

     listen ...; # 你要监听的端口

     server_name ...; # 你的域名或者ip

     location / {

       include /etc/nginx/uwsgi_params; # 这个路径改成你自己nginx下uwsgi_params文件的路径

       uwsgi_pass 0.0.0.0:....; # 与刚才配置 mywsgi.ini 时指定端口一致

     }

   } ‘‘‘

  • nginx -s reload (重新加载nginx配置)

到这里,就可以用nginx配置中指定的地址+监听的端口来访问你的uwsgi服务器了。

顺带一提,如果使用了nginx,那么在uwsgi的配置文件中,http这个名字要改成socket。另外,如果uwsgi不是后台在运行,那你断开与服务器的连接时uwsgi就会自动关闭,如果是以后台方式运行,那要关掉只能杀掉对应进程。

原文地址:https://www.cnblogs.com/Ishtarin/p/12408990.html

时间: 2024-11-10 00:33:29

Flask+uWSGI+Nginx项目部署的相关文章

Flask+uwsgi+Nginx+Ubuntu部署教程

学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的过程就会重复一次.不知道多少人的膝盖中箭了呢?我也这样干过,这么做确实很蠢,所以我决定写一篇 Flask+uwsgi+Nginx+Ubuntu 的部署教程,解答一些我自己在这个过程中的疑问,从原理到方案,以一个小白的角度,总结一下部署.运维这件事,应该对初学 Flask 需要部署的同学有些帮助. 环

Flask+uwsgi+Nginx+Ubuntu部署

学了一段时间flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是Flask+uwsgi+Nginx+Ubuntu, Python选择的是2.7.2这个是Ubuntu系统自带的学起来感觉还是简单的 不用去软连,目前自己的flask是python3写的 ,慢慢去过渡,先吧这个给搞通了,那么在优化也是很顺手的.其实对于很多的原理自己也是一知半解,先吧这个给搭起来,慢慢去了解里面的逻辑什么的. Nginx Nginx 是高效的

【Flask】flask+uwsgi+nginx环境部署

在centos上,部署flask框架的环境,我选择了uwsgi和nginx 具体步骤为: 配置nginx+uwsgi 安装nginx  nginx/1.12.2安装Flask  0.10.1安装uwsgi  2.0.16(64bit)安装uwsgi-plugin-python 2.0.16 创建一个flask项目 1 #!/usr/bin/python 2 # coding=utf-8 3 4 from flask import Flask 5 import sys 6 reload(sys)

flask+uwsgi+nginx+docker-compose部署

简单介绍 Flask这里就不多阐述了,已经是很流行的一个轻量级python框架了,对于小.中型项目特别适合.这里用docker的compose编排部署.uwsgi 简单的说明下,uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议. Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范. 这是官方

Flask + WSGI + Nginx 云部署

这几天学着用flask写一些rest api,然后部署到云上.这个过程虽然网上有很多的教程,但还是遇到不少的问题! 采用flask的原因是因为它比较容易上手吧.用flask有专门restful api的框架,用起来简单粗暴有木有!另外, 查了一下flask的应用框架,发现用WSGI + Nginx有下面的几个优势: 高性能 部署比较方便,采用Nginx可以部署多个Flask的应用 在此非常感谢Ray在他的blog中提到了在阿里云上部署Flask应用.他的这篇bolg给了我很大启示(我的项目中的

阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略

centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,tcp自定义就行,mysql(3306),nginx(8000以上都行).(都切换到root用户操作) 2.安装python3 3.安装nginx 4.安装mysql(这一步如果暂时用不上数据库也可以不操作) 5.确定2,3两步安装成功了,接下来就用pip3 安装django 和uwsgi, 在进行下一步

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)

1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件,压缩为zip包 3.准备软件 1.xshell(用于远程操作服务器) 2.FileZilla(用于从客户端将项目包上传到服务器) 3.Navicat 12 (用于同步数据库) 4.环境 云服务器/云主机:京东云 (云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,

nginx项目部署

1.概念    1.Django项目(Web应用)    2.web服务        1.nginx        2.Apache            LNMP -> Linux Nginx MySQL Python/PHP/Perl            LAMP -> Linux Apache MySQL Python/PHP/Perl        3.uwsgi            是WEB服务器和WEB框架之间一种简单而通用的接口2.单项目部署(nginx+uwsgi+Dja

uWSGI + Nginx + Django 部署

1. uWSGI 服务器 Django 默认使用 WSGI(Python Web Server Gateway ) 作为 Web 服务器,一般仅用来作为测试使用,实际生产环境而是使用 uWSGI 和 Nginx 作为服务器. uWSGI 代码完全用C编写,效率高.性能稳定,但是处理 静态文件能力较弱,因此实际生产环境中,一般采用 uWSGI + Nginx 两者搭配使用: uWSGI:处理动态请求(css.js.图片文件等) Nginx:处理静态文件请求(提交表单.mysql.动态渲染 html