当前位置: 首页 > 后端技术 > Python

gitwebhook自动部署服务器代码djangopythondocker等

时间:2023-03-26 01:35:54 Python

背景我开了一个django个人博客,使用docker部署。每次有代码变动,我都需要用git提交到本地,然后再登录服务器拉取代码,费时费力。有没有办法在本地提交代码?,服务器自动拉?这就是本文要介绍的自动化部署方案的研究。看了网上关于自动部署的文章不多,部署有点复杂,尤其是docker容器。大多介绍如何自动部署一个网站,但是无法拉取网站外的代码,因为git命令是在网站内执行的,无法cd到网站根目录下进行操作。经过大量的尝试,我开发了一个非常直接简单的自动部署方案。解决方案的主要内容是用python编写一个webhook.py服务文件,运行python3。如果webhook.py已经在运行,9002端口将被占用。找到pid:lsof-i:9002,然后杀掉它。外网无法访问http://ip:9002/,是的,需要在控制台添加端口放开规则。因为我的是docker应用管理方式,网站中的目录无法拉取外层的目录,所以需要单独开启webhook服务。这种独立的webhook服务是比较常见的,基本满足了所有的webhook需求。首先,我可以使用python打开服务。当然php、go等都可以,语言不限。这里我使用python作为示例服务代码:fromhttp.serverimportHTTPServer,BaseHTTPRequestHandlerimportjsonimportsubprocessimportosclassResquest(BaseHTTPRequestHandler):defhandler(self):print("data:",self.rfile.readline().decode())self.wfile.write(self.rfile.readline())defdo_POST(self):print("hellowebhook..")os.system('cd/root/docker-django&&gitadd.&&gitstatus&&git存储;git存储clear;gitpull')print("gitpullfinished")if__name__=='__main__':host=('',9002)server=HTTPServer(host,Request)print("启动服务器,监听:%s:%s"%host)server.serve_forever()这个服务代码是在网上找到的。它包含获取和发布。这是我的精简版。无需获取或解析参数。直接启动服务,执行shell命令就可以了。在服务器上执行python3webhook.py服务,它就会启动。添加&然后回车,后台运行python3webhook.py。如何映射服务器的域名之类的,不在这里讨论的范围之内。默认情况下,这些基本上大家就OK了。问题解决1、测试过程中可能发现9002端口被占用。解决方法是先执行lsof-i:9002找到端口占用的pid,然后kill-9pid杀掉使用。2、测试是否访问成功,在命令行执行:curl-XPOSThttp://你的域名:90023、发现无法访问外网:http://你的域名:9002,登录在到阿里云或者腾讯云或者其他服务器的后台,查看服务器的9002端口是不是没有打开。如果没有打开,可以自定义打开9002。作者是iOS架构师,几乎用过各种编程语言,主要是iOS。如果您觉得文章对您有帮助,请点个关注。我有一个iOS开发高手必备神器:资源库,在应用商店可以搜索下载。如果觉得不错,请给资源库好评?