阿里云ubuntu20部署nginx+uwsgi+flask记录

网上有很多关于部署nginx+uwsgi+flask的文章,我在刚开始摸索的时候,也是各处搜索实验,中途遇到许多困难。部署好了之后,常遇到502错误。还好经过多方搜索,最后总结了一套自己可以理解的部署模式。

下面写部署笔记(提示一下:uwsgi部署的重点应该是.sock文件还有加入自动启动)

1       更新软件源列表

对比软件源列表,若有更新版本,则更新

sudo apt-get update

sudo apt-get upgrade

2       安装pip 和 源外类的依赖包

sudo apt-get install python3-pip python3-dev

3       安装nginx

apt install nginx

4       安装uwsgi和flask  主环境下使用pip3命令,虚拟环境下用pip命令

pip3 install uwsgi flask

5       在www下创建网站程序

joinyond/main.py

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

    return 'hello joinyond'

if __name__ == '__main__':

    app.run(host='0.0.0.0')

以上是基本步骤。

以下是重点:

.ini配置里面很多选项,可以搜索了解一下。

.ini运行之后,一定要有.sock文件生成,否则就是失败的配置。

一般nginx配置都不会出错,容易出错的就是uwsgi.ini没有配置好,或者没有启动,导致502错误。

6       配置一个uwsgi.ini文件  :joinyond_uwsgi.ini

[uwsgi]

app = main

;指定程序文件?

module = %(app)

callable = app

;指定入口

master = true

;以主模式启动

processes = 5

;5个进程

chdir = /var/www/joinyond

;工作目录

socket = /var/www/joinyond/joinyond_uwsgi.sock

;套接字文件路径

chmod-socket = 666

;权限

vacuum = true

;回收资源

die-on-term = true

;用来保持和uwsgi一致

7       配置一个nginx.conf文件  :joinyond_nginx.conf

server {

 listen 80;

 listen [::]:80;

 server_name localhost;

 location / {

 include uwsgi_params;

 uwsgi_pass unix:/var/www/joinyond/joinyond_uwsgi.sock;

 }

}

8       删掉nginx的默认配置(一定要删掉,否则nginx还是指向默认的html)

         rm /etc/nginx/sites-enabled/default

9       将项目的配置文件软连接到nginx相关文件夹下(配置nginx的文件夹有两个,放在conf.d里面只是其中一种,还有一个是文件夹似乎叫site-anbale,放在这里面也是可以的。 )

         ln -s /var/www/joinyond/joinyond_nginx.conf /etc/nginx/conf.d

10     重启nginx

         systemctl restart nginx

11     使用nohup运行uwsgi,测试上面的配置是否正确

        nohup uwsgi /var/www/joinyond/joinyond_uwsgi.ini &

访问默认网址,就应该可以正常访问了。

那么就可以将uwsg加入自动启动了

下面将uwsgi加入系统自动启动(uwsgi自动启动的方式也有两种,另一种是采用upstart,似乎upstart更简单一点。但是我刚开始搜到的是使用service服务,那么我就采用service服务吧)

12     配置service文件

[Unit]

Description=uWSGI Emperor

After=syslog.target

[Service]

ExecStart=/usr/local/bin/uwsgi --ini /var/www/html/project/uwsgi.ini

# Requires systemd version 211 or newer

RuntimeDirectory=uwsgi

Restart=always

KillSignal=SIGQUIT

Type=notify

StandardError=syslog

NotifyAccess=all

[Install]

WantedBy=multi-user.target

将joinyond_uwsgi.service 软连接到/etc/systemd/system文件夹下

Ls –s /var/www/joinyond/joinyond_uwsgi.service /etc/system/system

13     启动service服务

         sudo systemctl start joinyond_uwsgi

        sudo systemctl enable joinyond_uwsgi

重启服务器,测试是否成功自动运行!

部署说难吧也不难,难在知识面不广,很多参数不能理解。很多原理也不懂,单单的打几个hello word ,算不上程序员呀。。。。

参考资料:

在Ubuntu 16.04上部署Flask项目 - 掘金 (juejin.cn)

Debian 10 使用 Nginx 和 uWSGI 部署 Python Flask 网站教程-老唐笔记 (oldtang.com)

https://h4ck.org.cn/2018/12/ubuntu-16-04-uwsgi%e8%87%aa%e5%90%af%e5%8a%a8/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值