自动化部署与更新flask项目

发布于 2022-09-07 08:28:47 字数 241 浏览 13 评论 0

我自己写了flask一个应用,已经成功部署上线了。使用的是uwsgi与nginx
1.我的做法在github上有一个私有的代码库,每次本地开发完之后就将代码更新到远程库中
2.然后登陆服务器,服务器上项目的代码库一开始是从远程库中克隆下来的,所以每次需要更新代码前需要先git pull,
3.然后我需要进入这个项目的虚拟环境,运行uwsgi --relaod uwsgi.pid
这样才算是真正完成更新
请问各位大神有没有什么更好的方式

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

木槿暧夏七纪年 2022-09-14 08:28:47

简单说下思路

第一步,在服务器上创建一个git远程仓库

cd /home/username
mkdir -p repositories/projectname.git
cd repositories/projectname.git
git init --bare .

第二步,在服务器上编写post-receiveGit Hooks)自动部署脚本

touch /home/username/repositories/projectname.git/hooks/post-receive
chmod +x /home/username/repositories/projectname.git/hooks/post-receive

实际可能需要更加复杂的逻辑,这里只做说明

#!/bin/bash
/usr/bin/git --work-tree=/var/www/projectname --git-dir=/home/username/repositories/projectname.git checkout -f
/home/username/.virtualenvs/virtualenvname/bin/python /home/username/.virtualenvs/virtualenvname/bin/uwsgi --reload /path/to/uwsgi.pid

备注:用户username必须拥有/var/www/projectname目录的读写权限

第三步,在本地添加远程仓库

cd /path/to/projectdir
git remote add production username@myhostname:/home/username/repositories/projectname.git
# 本地代码提交后,更新到远程仓库
git push production master
# 远程仓库接收完成后,将执行post-receive脚本,以达到自动化部署的目的
回心转意 2022-09-14 08:28:47

想用成熟的方案的话可以使用Jenkins,不过需要在一台服务器上先部署Jenkins,有点占内存的,简单一点的方案可以使用GitHub webhooks,然后写一个专门用来更新服务的flask应用,只有一个接口,用来执行关闭服务,更新代码,运行测试,重启服务的任务,直接用os.system或者subprocess.call调用命令就可以。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文