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 '<p>hello, world</p>'


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 main: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参数(外网ip)即可;如果要配合nginx一起使用,则需要填写socket参数(内网ip)。注意:两个参数不能同时存在。

关于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 应用 - 云+社区 - 腾讯云

鸣谢

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

young_kp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值