协会需要一个存放资料文件的服务器,之前弄过svn,感觉好像有点不好用,所以就重新搭一个git服务器。
首先,先查看自己的服务器版本,是ubuntu 16.04 其实个人用ubuntu和centos最大差别就是下载吧,apt-get和yum的区别。
root@BNUZ-ACM:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenia
1、git卸载
害怕以前搞过事情,所以先尝试一下把以前安装的git给卸载掉。apt-get还是很好用的,事实证明以前确实安装过。
root@BNUZ-ACM:~# sudo apt-get remove git
2、搭建一些必要的软件
1.安装git-core, openssh-server, openssh-client三个软件。git-core是git的核心软件;openssh-server、openssh-client是服务器和客户端传输文件通过ssh协议。
sudo apt-get install git-core openssh-server openssh-client
2.安装python-setuptools软件。该软件是用来安装gitosis的。
sudo apt-get install python-setuptools
3.安装gitosis。Gitosis主要用于管理用户对仓库的操作权限。
这里要注意,安装前需要先初始化一下git的个人新信息
git config --global user.name "bnuzacm"
git config --global user.email "acmbnuz@126.com"
上面命令把最后的参数去了就能直接查看全局配置参数是否配置正确了。
接下来获取gitosis版本文件
git clone https://github.com/res0nat0r/gitosis.git
最后安装gitosis.
进入gitosis目录,使用python命令,执行安装目录下的setup.py的python脚本进行安装。
root@BNUZ-ACM:~# cd gitosis/
root@BNUZ-ACM:~/gitosis# ls
COPYING etc-event.d-local-git-daemon gitosis lighttpd-gitweb.conf mirror.conf setup.py
debian example.conf gitweb.conf MANIFEST.in README.rst TODO.rst
root@BNUZ-ACM:~/gitosis# sudo python setup.py install
3、配置git服务器
1.创建git管理员账户
#增加用户命令:
sudo useradd -m git
#修改git用户密码:
sudo passwd git 回车后输入密码
2.创建一个项目仓库
在/home/下创建一个协会的文件夹作为仓库。 顺带修改用户组和权限
sudo mkdir /home/bnuzacm_repository
sudo chown git:git /home/bnuzacm_repository/
sudo chmod 770 /home/bnuzacm_repository/
由于gitosis默认状态下会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在/home/git/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目的仓库目录/home/bnuzacm_repository。
sudo ln -s /home/bnuzacm_repository /home/git/repositories
3.初始化gitosis
我们需要先在服务端生成SSH公钥,
ssh-keygen -t rsa
这里会提示输入密码,我们不输入直接回车即可。
接下来我们用刚生成公钥id_rsa.pub来对gitosis进行初始化
root@BNUZ-ACM:/home/git# sudo -H -u git gitosis-init < /root/.ssh/id_rsa.pub
Initialized empty Git repository in /home/bnuzacm_repository/gitosis-admin.git/
Reinitialized existing Git repository in /home/bnuzacm_repository/gitosis-admin.git/
如果信息如上,那么gitosis已经初始化成功 我们还需要对post-update文件添加可执行的权限。
root@BNUZ-ACM:/home# sudo chmod 755 /home/bnuzacm_repository/gitosis-admin.git/hooks/post-update
3、服务器中创建项目仓库
使用git账户在服务器上创建一个目录(bnuzacmproject.git)并初始化成git项目仓库。
root@BNUZ-ACM:/home# su git
git@BNUZ-ACM:/home$ cd /home/bnuzacm_repository/
git@BNUZ-ACM:/home/bnuzacm_repository$ mkdir bnuzacmproject.git
git@BNUZ-ACM:/home/bnuzacm_repository$ cd bnuzacmproject.git/
git@BNUZ-ACM:/home/bnuzacm_repository/bnuzacmproject.git$ git init --bare
Initialized empty Git repository in /home/bnuzacm_repository/bnuzacmproject.git/
git@BNUZ-ACM:/home/bnuzacm_repository/bnuzacmproject.git$ exit
接下来记得给bnuzacmproject.git/objects 目录权限,否则会报错
root@BNUZ-ACM:/home/bnuzacm_repository# sudo chmod g+w -R /home/bnuzacm_repository/bnuzacmproject.git/objects/
4、使用gitosis管理用户操作项目的权限
首先需要在前面生成ssh公钥(用来初始化gitosis)的机器上将gitosis-admin.git的仓库clone下来。
在客户端机器上(本机就可以了)新建一个目录用于存放gitosis-admin.git仓库
root@BNUZ-ACM:/home# mkdir gitadmin
root@BNUZ-ACM:/home# cd gitadmin/
root@BNUZ-ACM:/home/gitadmin# git clone git@localhost:gitosis-admin.git
clone下来会有一个gitosis.conf的配置文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用于认证请求的客户端机器。
我们先生成一个ssh公钥文件,复制到keydir目录下。
root@BNUZ-ACM:~/.ssh# ssh-keygen
#根据提示填写key,刚刚默认的是id_rsa,现在填写自己需要的用户的公钥
root@BNUZ-ACM:~/.ssh# cp ~/.ssh/hovees.pub /home/gitadmin/gitosis-admin/keydir/
root@BNUZ-ACM:/home/gitadmin/gitosis-admin# ls
gitosis.conf keydir
# 然后将这个公钥copy到keydir文件目录下
接下来我们继续编辑gitosis.conf文件
[gitosis]
[group gitosis-admin]
members = root@BNUZ-ACM
writable = gitosis-admin
[group bnuzacm]
#可读写权限组
members = hovees
writable = bnuzacm # 可以写的项目仓库名
然后将他们推送到服务器中
root@BNUZ-ACM:/home/gitadmin/gitosis-admin# git add
root@BNUZ-ACM:/home/gitadmin/gitosis-admin# git commit -am "add a user permission"
root@BNUZ-ACM:/home/gitadmin/gitosis-
最后再重启一下服务器
root@BNUZ-ACM:/home/gitadmin/gitosis-admin# sudo /etc/init.d/ssh restart
现在,服务端的git就已经安装和配置完成了,接下来就需要有权限的组成员在各自的机器上clone服务器上的相应
项目仓库进行相应的工作了。
5、客户端使用git
下载安装windows版本的git客户端软件,下载地址:msysgit.github.io/
我们通过右键,git bash进行命令行操作 先把仓库给克隆下来
git clone git@serverip:/home/bnuzacm_repository/bnuzacmproject.git
# 这里注意serverip是你的ip,后面跟着的是你的仓库目录
通过输入密码之后,我们很成功的将仓库克隆了下来
接下来试一下加新的东西更新上去
echo "this is a test text file,will push to server" > hello.txt
git add .
git commit -am "init a base version,add a first file for push to server"
git remote add origin git@serverip:/home/bnuzacm_repository/bnuzacmproject.git
git push origin master
同样的输入密码之后成功上传。 这么做我们的git服务器就做好了
当然我们可以通过git gui进行操作。 一直输入密码也挺烦的,看这里: www.cnblogs.com/pepperok/p/…
自己搭了一天。最后发现公钥秘钥没用到。听说用了那个就能免密进入了orz。以后有空再弄吧。 大佬推荐用gitlab。稍后再更新一下下。