总结python+flask项目在linux部署的五大方法

linux部署指南

1. linux sh & nohup后台运行python脚本

      - nohup : 就是不挂起的意思( no hang up),可以在你退出帐户之后继续运行相应的进程
        - 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。
      - python3 -u  run.py : 执行py文件
      - -u的意思就是 uninterrupt不中断的意思,如果你的代码里边有sleep等线程沉睡相关的操作,如果你不-u的话 在后台 它就停住了
      - > nohup.log : 重定向保存日志到当前路径下的nohup.log
      - 2>&1 : 将标准出错也输出到nohup.log文件中
      - & : 最后一个&, 是让该命令在后台执行。

2. 使用gunicorn 部署flask服务 (个人项目推荐使用这个)

  • 1)创建脚本vim gunicorn.sh

  • 2)填写内容并保存:

    • conda activate just_do_it (在linux上创建好自己的环境,可选)
    • nohup gunicorn -w 4 -b 0.0.0.0:8001 run:app & (不带日志)
    • nohup gunicorn -w 4 -b 0.0.0.0:8001 run:app > gunicorn.log 2>&1 & (带日志)
  • 3)运行:sh gunicorn.sh 或者 . gunicorn.sh

需要提前pip install gunicorn
简单地,gunicorn可以通过gunicorn -w 4 -b 0.0.0.0:8001 run:app启动一个Flask应用。其中,

-w 4是指预定义的工作进程数为4,
-b 127.0.0.1:4000指绑定地址和端口
run是flask的启动python文件,app则是flask应用程序实例

其中run.py中文件的可能形式是:
# run.py
from flask import Flask
app = Flask(__name__)

参考文章:
gunicorn部署Flask服务 https://www.jianshu.com/p/fecf15ad0c9a
https://www.cnblogs.com/gaidy/p/9784919.html

3. 使用screen命令部署

  • 第一步:screen -S yourname,新建一个叫yourname的session
  • 第二步:python run.py,运行代码,关闭shell连接后还会一直在linux上跑
  • 针对用户量小的情况,快速部署(本次使用这个)
  • 关于screen,详情见:https://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html
    杀死所有命令的:ps aux|grep 你的进程名|grep -v grep | awk '{print $2}'|xargs kill -9
    
    https://www.hutuseng.com/article/how-to-kill-all-detached-screen-session-in-linux

4. 使用flask + nginx + uwsgi (不建议,因Flask 与 uWsgi 结合有许多难以处理的 bug)

  • 针对用户访问量大的情况,具体参考下面的文章
    • https://blog.csdn.net/spark_csdn/article/details/80790929
    • https://www.cnblogs.com/Ray-liang/p/4173923.html
    • https://blog.csdn.net/daniel_ustc/article/details/9070357

5. 使用flask + nginx + gunicorn (大项目推荐使用这个)

  • 生产环境很多大公司采用这个方式的,故推荐这个
  • 因Flask 与 uWsgi 结合有许多难以处理的 bug,故推荐这个
  • Flask + Gunicorn + Nginx 部署

linux上杀死gunicorn的进程

方法一

  1. netstat -nltp | grep 8188
    能看到类似下面的:
    tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 23422/gunicorn: mas

  2. kill -9 23422(换成你的)

方法二

  1. 获取Gunicorn进程树
pstree -ap|grep gunicorn

得到的结果如下

Python
| | |-grep,14519 --color=auto gunicorn
| -gunicorn,28097 /usr/local/bin/gunicorn query_site.wsgi:application -c ... 
| |-gunicorn,14226 /usr/local/bin/gunicorn query_site.wsgi:application -c ... 
| | |-{gunicorn},14229 
| | |-{gunicorn},14230 
...

  1. 重启Gunicorn任务

kill -HUP 14226

  1. 退出Gunicorn任务

kill -9 28097

linux根据端口号查找项目路径方法

1. 只知道端口号

  1. 首先根据端口号查找进程
netstat -nltp
或者
netstat -nltp | grep python
或者
netstat -apn |grep 10010
  1. 然后根据进程号去查找项目路径
ps -ef |grep 8567
  1. 如果你第二步没有找到项目路径的话,尝试用
lsof -p 8567

2. 如果知道项目部署在tomcat里

如果你的项目在linux 中是部署到tomcat容器里,可以输入下边的命令找到,如下:

ps anx|grep tomcat
  • 19
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1. 登录阿里云控制台,进入ECS实例页面,选择需要部署Flask项目的实例。 2. 在实例页面中,点击左侧导航栏中的“安全组”。在安全组页面中,点击“添加安全组规则”按钮,添加一个新的安全组规则,将协议设置为“TCP”、端口设置为“5000”(Flask默认端口),并选择允许所有来源IP访问。 3. 在实例页面中,点击左侧导航栏中的“SSH密钥对”。如果你还没有创建SSH密钥对,点击“创建SSH密钥对”按钮创建一个。 4. 在Windows系统中,使用PuTTYgen生成私钥和公钥。将私钥下载到本地,将公钥复制到ECS实例的“SSH密钥对”页面中。 5. 在Windows系统中,使用PuTTY连接到ECS实例。输入实例的公网IP地址、端口号(默认为22)、用户名(默认为root),并选择刚才下载的私钥文件。 6. 在PuTTY连接成功后,输入以下命令更新系统软件包: sudo apt-get update sudo apt-get upgrade 7. 安装Python和pip: sudo apt-get install python3-pip 8. 安装Flask和其他需要的Python库: sudo pip3 install flask 9. 编写Flask项目代码,并将代码上传到ECS实例中。可以使用SFTP客户端(如FileZilla)将代码上传到ECS实例中。 10. 在ECS实例中,进入Flask代码所在的目录,运行以下命令启动Flask应用: export FLASK_APP=app.py flask run --host=0.0.0.0 11. 在浏览器中输入实例的公网IP地址和Flask应用的端口号(默认为5000),访问Flask应用。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值