文章目录
- linux部署指南
- 1. linux sh & nohup后台运行python脚本
- 2. 使用gunicorn 部署flask服务 (个人项目推荐使用这个)
- 3. 使用screen命令部署
- 4. 使用flask + nginx + uwsgi (不建议,因Flask 与 uWsgi 结合有许多难以处理的 bug)
- 5. 使用flask + nginx + gunicorn (大项目推荐使用这个)
- linux上杀死gunicorn的进程
- linux根据端口号查找项目路径方法
- 1. 只知道端口号
- 2. 如果知道项目部署在tomcat里
linux部署指南
1. linux sh & nohup后台运行python脚本
- 1)创建脚本vim run.sh
- 2)填写内容并保存:nohup python3 -u run.py > nohup.log 2>&1 &
- 3)运行:sh run.sh 或者 . run.sh
- 参考:Linux sh、source和.命令执行.sh文件的区别 +linux后台执行命令:&和nohup
- 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
3. 使用screen命令部署
- 第一步:screen -S yourname,新建一个叫yourname的session
- 第二步:python run.py,运行代码,关闭shell连接后还会一直在linux上跑
- 针对用户量小的情况,快速部署(本次使用这个)
- 关于screen,详情见:
杀死所有命令的:ps aux|grep 你的进程名|grep -v grep | awk '{print }'|xargs kill -9
https://www.hutuseng.com/article/how-to-kill-all-detached-screen-session-in-linux
4. 使用flask + nginx + uwsgi (不建议,因Flask 与 uWsgi 结合有许多难以处理的 bug)
- 针对用户访问量大的情况,具体参考下面的文章
5. 使用flask + nginx + gunicorn (大项目推荐使用这个)
- 生产环境很多大公司采用这个方式的,故推荐这个
- 因Flask 与 uWsgi 结合有许多难以处理的 bug,故推荐这个
- Flask + Gunicorn + Nginx 部署
linux上杀死gunicorn的进程
方法一
- netstat -nltp | grep 8188 能看到类似下面的: tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 23422/gunicorn: mas
- kill -9 23422(换成你的)
方法二
- 获取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
...
- 重启Gunicorn任务
kill -HUP 14226
- 退出Gunicorn任务
kill -9 28097
linux根据端口号查找项目路径方法
1. 只知道端口号
- 首先根据端口号查找进程
netstat -nltp
或者
netstat -nltp | grep python
或者
netstat -apn |grep 10010
- 然后根据进程号去查找项目路径
ps -ef |grep 8567
- 如果你第二步没有找到项目路径的话,尝试用
lsof -p 8567
2. 如果知道项目部署在tomcat里
如果你的项目在linux 中是部署到tomcat容器里,可以输入下边的命令找到,如下:
ps anx|grep tomcat