引言
在上一篇从零开始自动部署Django项目(一):开发配置与生产配置,已经给出了通过环境变量来实现不同配置选择的解决方案。既然是环境变量,那就可以通过shell脚本或者python脚本来实现。
接下来,我将通过使用python编写的Git Hooks来实现在向生产服务Git推送的时候完成自动部署。
不太了解Git Hooks的同学可以参考我这篇文章: 服务端自动部署静态项目的几种方法。
准备
首先明确Git Hooks要完成哪些任务:
- 判断python debug server在centos系统服务器上是否运行在指定端口,如果在运行则杀掉该进程。
- git pull 前端的release分支。
- git pull 后端的release分支并通过nohup重启python debug server。
明确要完成的任务之后,还有几点利用Python编写Git Hooks要注意的地方:
由于Git Hooks是支持shell,python,ruby脚本的,因此在post-receive脚本的第一行应该声明使用哪个解释器(interpreter):
#!/usr/bin/env python
stack overflow传送门:Why do people write #!/usr/bin/env python on the first line of a Python script?
- stack overflow传送门:How do I “cd” in Python?
- 如何在Python中执行shell命令呢?我使用的是Python中的subprocess模块,这个模块是