阿里云服务器 ubuntu16.04 flask部署(uwsgi+nginx+supervisor)

准备

  • 阿里云 轻量应用服务器 ubuntu 16.04
  • 耐心!

环境

1、在阿里云的控制台找到自己购买的服务器,笔者是用的轻量级服务器 ubuntu16.04系统

2、如图,分别点击远程连接,设置密码,这样就可以远程连接了
在这里插入图片描述

3、开放端口

​ 打开后面运行flask需要用到的端口,必须开放,不然无法应用!

​ 防火墙—>>添加规则---->>输入想要开放的端口(笔者开放的是5000端口)
在这里插入图片描述
在这里插入图片描述

4、通过ssh命令或者直接用连接软件

​ 这里我是用xshell进行连接,当然直接用命令也是一样的

​ 使用xshell类似的软件就可以在连接后在本地操作

​ 附上xshell的连接教程:https://jingyan.baidu.com/article/46650658e9468cf549e5f8b0.html

5、sudo二连,更新下软件

sudo apt-get update
sudo apt-get upgrade

5、安装虚拟环境

如果不了解虚拟环境,可以到网上查一下资料

虚拟环境可以将项目运行所需的环境隔离出来,不会影响到本地的环境,使用时只需要激活该环境就行了
很好用!!!有时间请务必学习理解

 pip install virtualenv

任意创建文件夹,这里我是在/home目录下创建myflask项目文件夹,并进入

cd /home
mkdir myflask
cd myflask

创建虚拟环境,其中venv是我给起的名字,可以自定义

virtualenv venv

这样虚拟环境就创建好了,在myflask文件中就会出现一个叫做venv的文件夹

接着输入以下命令,进入虚拟环境(激活环境)

source venv/bin/activate 

这样命令行前面就出现了venv的字样,此时已经处于虚拟环境中
在这里插入图片描述

创建项目文件,或者将已经写好的项目文件复制进来

这里,我新建一个项目文件(myflask文件夹内),hello.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

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

注意:这里必须要有这个,

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

不然后面无法运行,一行都不能少!!!

这里我是踩了坑的,千万不要只写app.run()!!!
以下是错误示范!!!

app.run(host='0.0.0.0', port=5000)

运行该启动文件,或者是你自己项目的启动文件,会发现很多包都没有,把这些包安装了,这些安装包将被安装在虚拟环境中,不会与本地环境相冲突

python hello.py

这里会提示很多包没有,需要在虚拟化环境中安装
安装的包包括但不限于flask

确认安装包安装完毕,访问你的服务器ip+端口号()访问,看看能不能行

eg:233.123.234.12:5000

可以的话(访问时,出现“Hello World!”字样),Ctrl+C退出调试就行了

因为后面的操作不用在虚拟环境中进行,需要先退出虚拟环境

deactivate

deactivate命令退出虚拟环境

安装 uWSGI

这个是flask的生产运行环境之一,flask自带的wsgi性能太差了

pip install uwsgi

创建uWSGI的配置文件

cd /home/myflask
vim uwsgi.ini
# 配置文件'/home/myflask/uwsgi.ini'
[uwsgi]
#application's base folder
base = /home/myflask
#python module to import
app = hello
module = %(app)
home = %(base)/venv
pythonpath = %(base)
#socket file's location
socket = %(base)/%n.sock
#permissions for the socket file
chmod-socket = 666
callable = app
#location of log files
logto = /var/log/uwsgi/%n.log
  • 参数讲解

    base:项目文件所在目录

    app:python 程序内用以启动的 application 变量名的文件名(最好的辨认方法是看哪个文件中app.run()这行代码),在本例中,hello.py中有app.run(),所以填入该py文件名—hello

    logto:日志文件的位置,自定义

    socket:用于存放uwsgi启动后生成的sock文件,用来和Nginx 通信

    只需要修改上述加粗参数,如果是按照以上步骤来的,就不需要更改

保存并退出

读取配置文件

uwsgi uwsgi.ini

安装Supervisor

上面命令运行uwsgi的方式,如果进程异常退出后,服务就无法访问,使用supervisor来管理进程,对异常终端的服务进行自动重启

apt-get install supervisor
cd /etc/supervisor/conf.d

创建项目的配置文件

vim uwsgi.conf
[program:uwsgi]
command=uwsgi --ini /home/myflask/uwsgi.ini                               
stopsignal=QUIT
autostart=true                                                                        
autorestart=true                                                                       
stdout_logfile=/var/log/supervisor/myflaskLogs/flask_supervisor.log                 
stderr_logfile=/var/log/supervisor/myflaskLogs/flask_supervisor_err.log

所有的参数其中可以修改的有:command、stdout_logfile、stderr_logfile

后面两个是日志输出地址,自定义

配置后即可启动服务项目

service supervisor start

安装Nginx

apt-get install nginx

创建项目Nginx的配置文件

cd /etc/nginx/conf.d
vim myflask.conf
server {
    listen  80;
    server_name localhost;
    charset  utf-8;
    client_max_body_size 75M;
    location / { try_files $uri @yourapplication; }
    location @yourapplication {
        include uwsgi_params;
        uwsgi_pass unix:/home/myflask/myflask_uwsgi.sock;
    }
}

uwsgi_pass unix是socket的文件地址

启动!!!

service nginx restart

其实到这,基本已经完成,后期只需要直接修改代码,网页会自行更新。
后面需要通过Supervisor进行管理,可以直接理解为一个控制台,在这上面可以直接控制flask项目的启动和停止
请熟悉以下命令

查看当前运行的项目

supervisorctl status

运行uwsgi项目,开始由Supervisor接手运行,就是之前Supervisor配置文件中方括号内的名字
[program:uwsgi]

supervisorctl start uwsgi

当需要停止时,输入

supervisorctl stop uwsgi

后话

以上仅为笔者的个人实践。
如有差错,请及时提出!
如有错误,请不吝指正!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值