nginx+uwsgi+flask 服务器配置

注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考。

请求流程:

1、安装uwsgi

uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成,他也可以充当静态文件服务器,但不是他的强项。uwsgi是使用python编写的,因此通过`pip install uwsgi`就可以了。(uwsgi必须安装在系统级别的Python环境中,不要安装到虚拟环境中)。

pip install uwsgi

测试uwsgi是否安装正确:创建一个test.py的测试文件

# test.py
def application(env, start_response):
    start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])
    return [b"Hello World"] # python3
    #return ["Hello World"] # python2

启动uwsgi服务:

uwsgi --http :8000 --wsgi-file test.py

访问页面可以看到 Hello World ,标识uwsgi安装成功。

2、安装nginx

nginx是一个web服务器。用来加载静态文件和接收http请求的。

yum install nginx

默认安装完nginx是不会自动启动的:常用命令:

* 启动nginx:service nginx start
* 关闭nginx:service nginx stop
* 重启nginx:service nginx restart

nginx默认端口为80端口,浏览器访问地址看到如下显示则标识nginx安装成功了。

——修改nginx默认的80端口。

找到default.conf配置文件

直接修改对于端口就行了,修改完毕之后记得重启nginx生效。

3、配置uwsgi

在项目根目录创建***_uwsgi.ini 文件,基础配置信息如下

[uwsgi]
chdir=/srv/cms           # 项目根目录
module=manage         # 项目启动脚本名字
wsgi-file=/srv/cms/manage.py      # flask启动脚本的具体文件
callable=app        # 程序内的application变量名
home=/root/.virtualenvs/cms-env-py3      # 虚拟环境的具体路径
socket=127.0.0.1:5001        # socket 协议,用于和nginx通讯
deamonize=/srv/cms/logs/cms-uwsgi.log        # 日志文件

master=true       # 主进程
processes=2       # 最大工作进程
threads=1        # 线程数量

关于socket和http的差别。从概念上来说,socket本身不是协议而是一种具体的TCP/IP实现方式,而HTTP是一种协议且基于TCP/IP。具体到这个配置这里来,如果我只配了socket = 127.0.0.1:5001的话,通过浏览器或者其他HTTP手段是无法成功访问的。而在uwsgi这边的日志里会提示请求包的长度超过了最大固定长度。另一方面,如果配置的是http = 127.0.0.1:5001的话,那么就可以直接通过一般的http手段来访问到目标。但这会引起nginx无法正常工作。

正确的做法应该是:

如果有nginx在uwsgi之前作为代理的话应该配socket   如:  socket=127.0.0.1:5001

而如果想让请求直接甩给uwsgi的话那么就要配http。  如:  http=127.0.0.1:5001

4、配置nginx

进入nginx的conf.d路径新建一个**.conf的配置文件。

配置信息如下:

server {
    # 监听端口
    listen      5000;
    # 允许访问的域名或IP,本机IP
    server_name 10.0.36.112;
    charset     utf-8;
    access_log /srv/cms/logs/access.log;     # 日志文件
    error_log /srv/cms/logs/error.log;      #  错误日志文件

    # 最大上传文件大小
    client_max_body_size 75M;

    # 静态文件URL
    location /static {
        # 文件路径
        alias /srv/cms/static;
    }

    # 非静态文件服务器
    location / {
    include uwsgi_params;  # 引入uwsgi配置
        uwsgi_pass 127.0.0.1:5001;    # uwsgi的配置文件里的socket对应

        uwsgi_param UWSGI_CHDIR /srv/cms;      # 项目根路径
        uwsgi_param UWSGI_SCRIPT manage:app;    # 启动的主程序
    }
}

检查配置文件是否正常

# ervice nginx configtest 

5、启动nginx服务

# service nginx start

6、启动uwsgi服务

# uwsgi --ini cms_uwsgi.ini

到这里,服务器搭建完成。

备注:

uwsgi 常用命令:

uwsgi --ini cms_uwsgi.ini    //启动

uwsgi  cms_uwsgi.ini   --deamonize //后台运行启动  

uwsgi --stop uwsgi.pid  //停止服务  

uwsgi --reload uwsgi.pid  //可以无缝重启服务 

nginx+uwsgi+flask成功运行了。

原文地址:https://www.cnblogs.com/liluping860122/p/9089807.html

时间: 2024-10-09 18:13:52

nginx+uwsgi+flask 服务器配置的相关文章

Ubuntu下nginx+uwsgi+flask的运行环境搭建

选择web framwork是个很艰难的事情, 主要分为轻量级和重量级框架. 由于没有搭建网站这种需要, 所以回避SSH, Django这种框架, 而选择一个轻量级框架. 自己也比较青睐python这门语言, 就选择了flask框架, nginx代理服务器享誉盛名, 所以拿来使用咯. 一. 开发环境搭建 采用离线安装方式, ubuntu开发环境(centos等环境类似) nginx 安装 $ wget http://nginx.org/download/nginx-1.6.0.tar.gz #仅

Docker构建nginx+uwsgi+flask镜像(二)

Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask服务,但这体现不了Docker为我们带来的便利,而本章,我们将通过Dockerfile来制作基础镜像和打包应用,因此会有两个Dockerfile文件. 我们先来写第一个Dockerfile文件,这个文件负责搭建运行环境,运行环境需要包括:nginx.uwsgi.Python3: # 配置基础镜像 F

centos6.8 搭建nginx+uwsgi+Flask

1.安装 yum install nginx -y pip3 install uwsgipip3 install Flask 2.uwsgi配置(保存/etc/uwsgi.ini,run:uwsgi /etc/uwsgi.ini) [uwsgi] # uwsgi 启动时所使用的地址与端口 socket = 127.0.0.1:50000 # 指向网站目录 chdir = /app/db_cache_server/ # 处理器数 processes = 2 #查看uwsgi状态,类似nginx的s

nginx+uwsgi+flask搭建python-web应用程序

Flask本身就可以直接启动HTTP服务器,但是受限于管理.部署.性能等问题,在生产环境中,我们一般不会使用Flask自身所带的HTTP服务器. 从现在已有的实践来看,对于Flask,比较好的部署方式是使用uWSGI做WSGI容器,Nginx做前端服务器.这样做的好处在于: 1. uWSGI性能好,提供的功能也很多,运维方便.2. Nginx对于静态文件处理较好,而且默认支持uWSGI协议,在负载均衡和压力控制上都可以很方便的实现. 现在说一下具体的部署步骤: 因为本人比较喜欢Ubuntu Se

nginx+uwsgi+flask环境搭建

想自己搭建一个Blog,功能不是很复杂,所以选用了python的flask框架,在参照网上的资料搭出Hello World之后将知识汇总一下,以便以后查看. 系统:Ubuntu 14.04 首先安装flask,nginx,pip(方便安装 uwsgi),python-dev(uwsgi需要python头文件进行编译) sudo apt-get install python-flask nginx python-pip python-dev sudo pip install uwsgi #uwsg

nginx uwsgi flask相关配置

一.安装Nginx 在 /home/download下下载压缩包 wget https://nginx.org/download/nginx-1.12.2.tar.gz 解压缩 tar zxvf nginx-1.12.2.tar.gz 添加环境变量: vim ~/.bashrc //添加 #NGINX export NGINX_HOME=/usr/local/nginx export PATH=$PATH:$NGINX_HOME/sbin source ~/.bashrc//激活 一些nginx

Ubuntu+Nginx+uWSGI+Flask应用

Ubuntu 18.04,Nginx 1.14.0,uWSGI 2.0.17.1,Flask 1.0.2,Python 3.6.5, 多日未更新博客,就是在忙着把自己的Flask应用在Ubuntu上运行起来,额,是生产环境中运行起来,所以,需要用到uWSGI服务器,而不是Flask自带的开发用服务器. 另外,顺便学习Linux,比如,用户和用户组管理.环境变量的配置.各种配置文件修改.进程管理.服务随机启动配置等,只是,尚未精通,但对于目前部署自己的Flask应用时够了. 总之,先在Ubuntu

记录一下在ubuntu 上配置nginx+uwsgi+flask出现的一点问题.

还没有解决 现在的情况很奇怪, 配置uwsgi通过启动脚本启动后,无法正常运行,相同代码在centos上完全没有问题,同样用的是venv的环境, ubuntu,贴上nginx配置和uwsgi配置 uwsgi.ini [uwsgi] socket = 127.0.0.1:8001 wsgi-file=/home/rod/www/app.py callable=app touch-reload=/home/rod/www/ daemonize=/home/rod/uwsgi.log pidfile=

Nginx+Uwsgi+Flask在阿里云服务器上的部署

先说明一下,我用的系统是centos6.8,个人感觉centos的系统配置还是挺简单的...不过存在很多防火墙的问题,下边一步步来说.... centos上应该是默认已经安装了Python2.6,不过你要想安装其他的版本就需要自己首先安装一个pyenv的东西.... 1.先说一下pyenv吧,这是一个多版本共存的版本管理器.windows上就不用说了,可以安装多个版本的Python,但是Linux上就会有问题了,所以需要这么一个管理器. 第一步,安装: # curl -L https://raw