flask uwsgi nginx 部署文档
admin
2023-03-21 22:01:16
0次
  1. 系统包安装

# more /etc/redhat-release 

CentOS Linux release 7.3.1611 (Core) 

#

# yum install epel-release

# yum install -y nginx

# yum install -y uwsgi

# yum install -y uwsgi-plugin-python


2.python packets


1). setuptools


# wget https://pypi.python.org/packages/a9/23/720c7558ba6ad3e0f5ad01e0d6ea2288b486da32f053c73e259f7c392042/setuptools-36.0.1.zip#md5=430eb106788183eefe9f444a300007f0

# ll

# yum install -y unzip

# unzip setuptools-36.0.1.zip 

# cd setuptools-36.0.1

# ls

# python setup.py install

# cd ..



2).ez_setup


# wget https://pypi.python.org/packages/ba/2c/743df41bd6b3298706dfe91b0c7ecdc47f2dc1a3104abeb6e9aa4a45fa5d/ez_setup-0.9.tar.gz

# ls

# tar zxvf ez_setup-0.9.tar.gz 

# cd ez_setup-0.9

# ls

# python setup.py install

# cd ..


3). pip

# easy_install pip


4).Flask

# pip install Flask


5).virtualenv

# pip install virtualenv


3.app configuration


1).web app

# cd /opt/

# ls

# mkdir app

# ls

# useradd webapp

# chown webapp.webapp app

# su - webapp

$ cd /opt/app

$ vi app.py

from flask import Flask

app = Flask(__name__)


@app.route("/")

def index():

    return "hello,Flask web app."



if __name__ == "__main__":

    app.run('0.0.0.0', port=3333, debug=True)


$ vi website.py


import sys 

import os.path 

sys.path.insert(0, os.path.dirname(__file__)) 

from app import app as application


$ virtualenv --no-site-packages env

$ . env/bin/activate

$ pip install flask 

$ python app.py 


2).uwsgi configuration


$ mkdir -p uwsgi/apps-enabled

$ vi uwsgi/apps-enabled/app.ini

 

[uwsgi]

buffer-size = 32768

plugins = python

socket = 127.0.0.1:5000

threads = 2

master = true

uid = webapp

gid = webapp

chdir = /opt/app/

home = /opt/app/env/

pp = ..

module = website

 

3).nginx configuration


$ mkdir -p nginx/sites-enabled

$ vi nginx/sites-enabled/app.conf


upstream flask {

     server 127.0.0.1:5000;

 }  


# configuration of the server 

server {     

    # the domain name it will serve for     

    listen 8080; 

    # This is very important to test the server locally     

    server_name _; 

    # substitute your machine's IP address or FQDN     

    charset     utf-8;

    location / {

         uwsgi_pass  flask;

         include uwsgi_params;     

    } 

}


$ exit


嵌入nginx配置文件


[root@localhost ~]# vi /etc/nginx/nginx.conf

# For more information on configuration, see:

#   * Official English Documentation: http://nginx.org/en/docs/

#   * Official Russian Documentation: http://nginx.org/ru/docs/


user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;


# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;


events {

    worker_connections 1024;

}


http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';


    access_log  /var/log/nginx/access.log  main;


    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 2048;


    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;


    # Load modular configuration files from the /etc/nginx/conf.d directory.

    # See http://nginx.org/en/docs/ngx_core_module.html#include

    # for more information.

    include /etc/nginx/conf.d/*.conf;


    ###### python web app new add #####

    include /opt/app/nginx/sites-enabled/app.conf;


    server {

        listen       80 default_server;

        listen       [::]:80 default_server;

        server_name  _;

        root         /usr/share/nginx/html;


        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;


        location / {

        }


        error_page 404 /404.html;

            location = /40x.html {

        }


        error_page 500 502 503 504 /50x.html;

            location = /50x.html {

        }

    }


# Settings for a TLS enabled server.

#

#    server {

#        listen       443 ssl http2 default_server;

#        listen       [::]:443 ssl http2 default_server;

#        server_name  _;

#        root         /usr/share/nginx/html;

#

#        ssl_certificate "/etc/pki/nginx/server.crt";

#        ssl_certificate_key "/etc/pki/nginx/private/server.key";

#        ssl_session_cache shared:SSL:1m;

#        ssl_session_timeout  10m;

#        ssl_ciphers HIGH:!aNULL:!MD5;

#        ssl_prefer_server_ciphers on;

#

#        # Load configuration files for the default server block.

#        include /etc/nginx/default.d/*.conf;

#

#        location / {

#        }

#

#        error_page 404 /404.html;

#            location = /40x.html {

#        }

#

#        error_page 500 502 503 504 /50x.html;

#            location = /50x.html {

#        }

#    }


}


[root@localhost ~]# 



4.启动uwsgi


[root@localhost soft]# uwsgi --ini /opt/app/uwsgi/apps-enabled/app.ini 

[uWSGI] getting INI configuration from /opt/app/uwsgi/apps-enabled/app.ini

*** Starting uWSGI 2.0.14 (64bit) on [Fri Jun  2 17:16:49 2017] ***

compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-11) on 13 January 2017 23:06:53

os: Linux-3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016

nodename: localhost.localdomain

machine: x86_64

clock source: unix

pcre jit disabled

detected number of CPU cores: 1

current working directory: /home/soft

detected binary path: /usr/sbin/uwsgi

setgid() to 1001

setuid() to 1001

chdir() to /opt/app/

your processes number limit is 3862

your memory page size is 4096 bytes

detected max file descriptor number: 1024

lock engine: pthread robust mutexes

thunder lock: disabled (you can enable it with --thunder-lock)

uwsgi socket 0 bound to TCP address 127.0.0.1:5000 fd 3

Python version: 2.7.5 (default, Nov  6 2016, 00:28:07)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

Set PythonHome to /opt/app/env/

Python main interpreter initialized at 0x12128e0

python threads support enabled

your server socket listen backlog is limited to 100 connections

your mercy for graceful operations on workers is 60 seconds

mapped 280832 bytes (274 KB) for 2 cores

*** Operational MODE: threaded ***

added ../ to pythonpath.

WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x12128e0 pid: 15167 (default app)

*** uWSGI is running in multiple interpreter mode ***

spawned uWSGI master process (pid: 15167)

spawned uWSGI worker 1 (pid: 15172, cores: 2)



5.启动nginx


# nginx


6.访问


浏览器"http://server-ip:8080"

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...