您现在的位置是:综合 >>正文
代码搭建git
综合9人已围观
简介 我花了三个晚上才把公司的git服务器从一台落灰的旧电脑上迁走。那台机器风扇一响就像要起飞,每次push代码都提心吊胆。后来干脆在阿里云上租了台最便宜的ECS,装好Ubuntu,开始手动搭建git服务 ...
我花了三个晚上才把公司的代码搭建git服务器从一台落灰的旧电脑上迁走。那台机器风扇一响就像要起飞,代码搭建每次push代码都提心吊胆。代码搭建后来干脆在阿里云上租了台最便宜的代码搭建ECS,装好Ubuntu,代码搭建开始手动搭建git服务。代码搭建
别急着上GitLab,代码搭建那玩意儿吃内存跟喝水似的代码搭建。1G内存的代码搭建服务器跑起来,光sidekiq就能卡死你。代码搭建我选了最朴素的代码搭建路子——纯git + SSH,外加一个叫cgit的代码搭建网页查看器。这套组合拳打下来,代码搭建512M内存的代码搭建机器都能飞。
先装依赖,代码搭建一句话的事:apt install git nginx fcgiwrap cgit。然后建个专用用户,叫git,家目录设在/home/git。这里有个坑:千万别用root直接当git用户,权限太野,哪天手滑删了仓库哭都来不及。
初始化一个裸仓库试试水:git init --bare project.git。裸仓库没有工作目录,纯粹存版本历史,这是服务器端的标准姿势。你本地clone下来随便折腾,push上去的就是这堆二进制对象。
SSH密钥认证得配好。把每个开发者的公钥塞进/home/git/.ssh/authorized_keys,一行一个。有个同事总爱把私钥拷来拷去,被我骂了一顿——私钥就是你的身份证,丢了你连哭的地方都没有。
nginx配置也不复杂,但有个细节容易踩雷。cgit需要解析PATH_INFO,得在server块里加上这么一段:
location / { fastcgi_pass unix:/var/run/fcgiwrap.socket; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/cgit/cgit.cgi; } 重启nginx,浏览器打开IP地址,熟悉的cgit蓝色界面就出来了。代码能看,commit历史能翻,diff也能对比,够用了。
最爽的是权限控制。git用户的家目录里放个hooks/post-receive脚本,每次push完自动把代码部署到测试服务器。那感觉就像装了个自动售货机,投币就出饮料。
后来有次服务器硬盘满了,git push直接报错。我登录上去一看,du -sh /home/git/*,好家伙,有个仓库占了30G。一查是哪个项目塞了个编译生成的二进制文件进版本库,每次编译都覆盖。我当场用git filter-branch把那个文件从历史里抹掉,再强制push覆盖远端。同事第二天pull下来发现历史变了,一脸懵。我跟他说:别把编译产物往git里塞,那是给代码仓库用的,不是给你当网盘的。
这套系统跑了快两年,除了那次硬盘问题,基本没出过幺蛾子。比起那些花里胡哨的代码托管平台,自己搭的服务器反而更顺手——想加什么钩子就加什么钩子,想改端口就改端口,连数据库都不用装,省心得很。
如果你也想折腾,记住三件事:git用户权限要收窄,SSH密钥别乱发,仓库目录定期备份。剩下的,就交给git自己吧,它比你想象的结实多了。
Tags:
相关文章
公安局举报平台
综合凌晨三点,老周在小区门口被抢了手机。他冲进派出所报案,值班民警递过来一张纸条,上面印着"公安局举报平台"的网址。老周五十多岁,手机打字都费劲,对着那个网址愣了半天。后来他儿子帮他在平台上填了举报信息, ...
【综合】
阅读更多安阳融资诈骗案2013
综合2013年秋天,安阳的民间借贷圈子里炸了锅。一个叫“鑫泰投资”的公司,一夜之间人去楼空,老板赵某带着账本上2.3亿的集资款消失了。这数字在当时安阳这种四线城市,够买下半个老城区。可最讽刺的是,赵某跑路 ...
【综合】
阅读更多保山信息价格网
综合保山信息价格网的页面底色是那种老式的浅灰蓝,打开首页,满屏都是密密麻麻的数字和品名。我每天上午十点会习惯性点开它,看看当天青椒的批发价、五花肉又涨了几毛。这网站谈不上好看,甚至有点土,但整个滇西的菜市 ...
【综合】
阅读更多