基于Flask的WebHooks服务搭建

1、首先确保已正确安装nginx,supervisor,并正常启用nginx和supervisor

1
2
3
4
5
yum install nginx supervisor
systemctl start nginx
systemctl enable nginx
systemctl start supervisor
systemctl enable supervisor

2、新建Flask项目和相关虚拟环境包等

1
2
3
virtualenv venv #新建虚拟环境
. venv/bin/activate
pip install gunicorn

3、修改app.py文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import os
from flask import Flask, request, jsonify

app = Flask(__name__)

# gitee中webhooks的secret
gitee_secret = 'XXXX'

@app.route('/hooks', methods=['POST'])
def post_data():
# 认证签名是否有效
signature = request.headers.get('X-Gitee-Token', '')
print("获取到访问token:%s", signature)

if signature != gitee_secret:
return "token认证无效", 401
# 运行shell脚本,更新代码
os.system('sh deploy.sh')
return jsonify({"status": 200})

if __name__ == '__main__':
app.run()

3、新建deploy.sh文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
echo '========Start DEPLY========'
echo '--------enter Dir ------------'
cd /home/opc/XXXX
echo '--------start git pull------------'
git pull
echo '--------init requirements------------'
. venv/bin/activate
pip install -r requirements.txt
deactivate
echo '-----ex root-----'
sudo -i
echo '-----restart supervision-----'
supervisorctl restart XXXX
echo '----- reload nginx-----'
nginx -s reload
echo '========END DEPLY========'

4、新建supervisor.ini文件(也可省略,手工启动即可)

1
2
3
4
5
6
7
8
;[include]
;files = relative/directory/*.ini
[program:XXXX]directory=/home/opc/XXXX
command=/home/opc/XXXX/venv/bin/python3 /home/opc/XXXX/venv/bin/gunicorn -b 127.0.0.1:1111 app:app
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true

5、将supervisor.ini文件拷贝到/etc/supervisor.d/目录下,并重启supervisord


基于Flask的WebHooks服务搭建
http://060800.xyz/2024/07/04/基于Flask的WebHooks服务搭建/
作者
砖头
发布于
2024年7月4日
许可协议