技术控是不是都像我一样,我想试验在flask框架一些示例程序在nginx+uwsgi的生产环境下的效果,于是想到了用git实现自动部署,于是看到gitolite,于是研究gitolite的服务器配置以及钩子相关的实现方式,看到了网上很多人的回答都不另人满意,其实完全可以有更简单的实现方式。有看官说了,你完全可以写完之后用rsync手动部署啊,但是我的代码库是在自己的一个阿里云服务器上的,我会定期把代码推送到自己的GIT服务器上,我就是不想推送完后再运行一个部署的命令。
gitolite 工作原理
gitolite提供了便于部署git远程仓库的工具,它本身并不提供服务,服务仍旧依托ssh对外提供。如果没有这种工具的话,你以ssh的形式往远程的仓库里推送修改,则需要远程服务器中提供一个用户,如果用户多的话对远程服务器的安全隐患则较大。gitolite则是用一个专门的用户git来受理推送,并维护远程的库,你本地的用户只需将ssh公钥提交到远程服务器便可以授权推送。并且对于用户公钥的维护、相关配置文件的修改等均不需要登录到远程服务器,在本地clone一个gitolite-admin的仓库,直接在本地修改,再推送到远程服务器上即可生效。
gitolite是受到gitosis启发开发的,但现在功能上面已经全面超越了gitosis了。用过github的人可能比较熟悉这种用法,将自己本地的公钥提交到github之后,便可以用git clone git@github.com:username/reposity
的方式克隆一个远程库,本地修改提交到可以将相关内容再推送到远程。我不知道github采用的是什么工具实现的这种功能,但gitolite基本已经实现了这种功能。
gitolite 安装与配置(远程服务器)
本文重点介绍gitolite实现Web的自动部署,gitolite的详细安装过程可以自行搜索,网上很多教程都写得不错。以下所指的远程服务器是指你要运行git仓库服务的服务器,本地是指要进行远程推送的主机,远程服务器上必须已经安装配置好ssh服务。
安装gitolite
首先安装gitolite&#x