栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

flask+uwsgi+nginx 部署到腾讯云服务器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

flask+uwsgi+nginx 部署到腾讯云服务器

1. 首先要明确自己云服务器的内网IP和外网IP

2. 在服务器上建立一个文件夹,此次命名为flask_project。

 内建一个flask项目,文件名为main.py(当然,前提是你已经在服务器安装了flask),内容如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return '

hello, world

' if __name__ == '__main__': app.run(host='0.0.0.0',port=5000)

一定要确保这个flask项目本身没有问题,可以用命令行验证下。没问题就可以ctr-c关掉了。

3. uwsgi部分

安装:

pip3 install uwsgi

可以先用命令行试验下uwsgi是否安装成功。

在项目目录即flask_project目录下,输入以下命令:

uwsgi --socket 0.0.0.0:5000 --protocol=http -w run:app

此时同样可以在浏览器通过访问“外网IP:5000”获得想要的结果。

若要部署,用命令行的方式肯定是不行的。

此时仍然需要在项目同级目录下新建一个ini文件,我取名为uwsgi.ini,这是将命令行参数直接写死到了这个配置文件中,内容如下:

[uwsgi]

socket          = **.**.**.**:5000
; http            = **.**.**.**:5000
module          = main:app
processes       = 2
threads         = 2
master          = true

此处设计的参数很多,重点说三个,其他可到官网自行查阅。

关于socket和http:

      如果只是用uwsgi配置web项目,只需填写http参数即可;如果要配合nginx一起使用,则需要填写socket参数。注意:两个参数不能同时存在。

关于module:

      冒号的前部分是指flask运行文件名,即main.py的名称;冒号的后半部分是指flask中的实例名,即Flask实例化出来的实例。

此处配置文件书写妥当后(此时配置应为http参数在列),可通过如下命令开启uwsgi服务:

uwsgi --ini uwsgi.ini

同时附上停止和重启的命令行:

uwsgi --stop uwsgi.pid

uwsgi --reload uwsgi.pid

uwsgi.pid是uwsgi服务开启后自动生成的,里面记录的是uwsgi服务在linux中的进程ID

同时生成的还有一个log文件,记录的自然是各项log内容。

启动后返回如下信息,则说明没什么语法错误,同样可以到浏览器验证一下。

[uWSGI] getting INI configuration from uwsgi.ini

没有问题就继续下一步,如果有问题,就看看log文件里报什么错,按方抓药吧。 

4. nginx部分 

安装:

apt-get install nginx

安装结束后,默认自动开启nginx服务。可以直接到浏览器访问下“公网IP:80”,如果出现“welcome to nginx”之类的字样,说明安装的没问题。(此处默认你对nginx有一定了解了)

下一步,找到nginx自带的配置文件nginx.conf,具体路径应该在“/etc/nginx”下。

vim打开此文件,找到 http{...} 处

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##
        .
        .
        .
}

在这个花括号内(就写在贴近末端花括号的上一行吧),添加如下代码块:

server {
        listen       80;
        server_name  ***.***.***.***;    # 外网IP
        location / {
                    include uwsgi_params;
                    uwsgi_pass **.**.**.**:5000;    # 内网IP:程序端口号
        }
}

其中server_name 为你的腾讯云外网IP;uwsgi_pass是你的内网IP,并且要与uwsgi.ini中的socket参数保持一致。

然后重启nginx服务:

/etc/init.d/nginx restart

不出意外的话,到浏览器“外网IP:80”,就能看到flask响应的内容了。

同时奉上nginx停止和启动的命令行:

/etc/init.d/nginx stop

/etc/init.d/nginx start

至此,部署完成。

部分内容参考此文章:使用 uWSGI + Nginx 部署 Flask 应用 - 云+社区 - 腾讯云

鸣谢

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号