搭建基于Git的小型团队测试服务器
写在前面
最近在团队开发中遇到很多麻烦的问题,多人协作很不方便,所以就想搭建一个基于 Git 的小型团队协作(也就是很多东西需要手动配置)服务器,完成一些小型的开发测试工作。
关于 Git 的基本操作推荐廖雪峰的 Git 教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
安装配置 Git
安装 Git 软件
1 | yum install git |
添加一个 git 账户,用于使用 ssh 方式远程连接 git 服务
1 | useradd git |
禁用 git 账户登录 shell
编辑账户配置文件
1 | vim /etc/passwd |
找到这一行
1 | git:x:1001:1001:,,,:/home/git:/bin/bash |
设置以后,git 用户可以正常通过 ssh 使用 git,但无法登录 shell,因为已经为 git 用户指定了 git-shell,该 shell 每次一登录就自动退出 配置一下 git 的默认账户和邮箱
1 | git config --global user.name "Jason" |
建立 Git 总仓库
初始化 Git 仓库,在这里选择在/srv/dev/main.git
目录下操作
1 | mkdir /srv/dev |
在这里要说明两点:
- git 仓库的目录名一般习惯上使用.git 结尾
- 使用–bare 参数初始化仓库是初始化咯仓库的意思因为我们在 main 目录下只是为了建立一个历史纪录的库,而不需要实际中该项目文件的拷贝,所以这个目录不是所谓的工作目录,只是所谓的工作目录下.git 文件夹中的内容,具体可以 google 一下
git init
和git init –bare
的区别
把仓库 owner 改为 git 账户
1 | chown git:git main.git |
现在 Git 的总仓库已经建立完成了!接下来,为每个小伙伴建立仓库
配置 SSH
首先说一下,这次我想使用 SSH 方法登录认证 git,所以根据 SSH 的思路,可以使用 SSH Key 或者用户密码来认证。 因为 SSH Key 还需要收集大家的公钥,用起来比较麻烦,所以我选择直接使用账户密码认证(其是不推荐这样,容易受到中间人攻击)。 如果服务器没有配置使用用户名密码进行 SSH 需要这样设置
编辑/etc/ssh/sshd_config
找到
1 |
改为
1 | PasswordAuthentication yes |
关于密钥加密的配置方法可以参考 http://blog.csdn.net/wave_1102/article/details/47779401
为每个小伙伴创建自己的仓库
首先建立一个 dev 用户组,所有的小伙伴都归入这个组中
1 | groupadd dev |
在这里以一个叫 learn 而的用户为例 (之后如果有其他用户加入,添加方法和下面相同)
1 | useradd -d /usr/learn -m learn -g dev |
为什么为 learn 用户分配了一个/usr
目录下的主文件夹呢,因为他很可能还要在服务器上写一些其他的脚本什么的,留个主目录方便。 在/srv/dev/learn clone
一个用户仓库
1 | mkdir learn |
然后将 learn 目录的所有权变为 learn 账户
1 | chown dev:learn /srv/dev/learn |
现在,就可以把代码拷贝到 learn 目录然后做 first commit 了! 比如把代码拷贝过来之后
1 | cd /srv/dev/learn |
当然,现在只是把代码提交到这个叫 learn 的小伙伴的 git 仓库中,他可以随时提交更改回退,当然要想提交到主仓库,可以这样操作
1 | git push -u origin master |
PS:第一次提交要使用-u,之后就不用使用了 现在,就已经可以做到让小伙伴们登陆远程开发服务器进行开发,每个人都拥有自己的版本库并且可以提交到中心版本库中 关于 Git 的详细使用方法,可以参考文初推荐的教程 最后说一下,如果有人想在本地也 clone 一个代码库的话,可以 clone 一个自己的代码库到本地,每次更改后提交到自己的代码库中,如果需要合并到主版本库,用自己的账户登录到服务器提交即可。
配置服务器
我们团队需要建立的是 PHP+Apache+MySQL 测试环境,所以最后还需要配置一下 Apache(如果是别的平台可自行配置,也可留言讨论) 打开 Apache 配置文件
1 | vim /etc/httpd/conf/httpd.conf |
假设在 88 端口使用虚拟主机进行配置,添加一下代码到配置文件中
1 | Listen 88 |
最后重启 Apache
1 | systemctl restart httpd.service |
好了!一切完工,现在每个小伙伴都可以有一个自己的测试 URL 了,还是以 learn 用户为例
1 | http://测试服务器IP或域名:88/learn |
一切完工
一切完成!可以让小伙伴们告诉你他想要的账户然后按照“为每个小伙伴创建自己的仓库”一节所说的,帮他们创建自己的测试仓库了。
最后说一下,关于 SSH 公钥管理还有一个软件叫做Gitosis。不过小团队也没有必要使用,大的团队需要使用的话可以自行研究。