zoukankan      html  css  js  c++  java
  • Ubuntu16.04服务器 搭建Git 服务

     

    一.安装Git服务器所需软件

    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. 初始化git服务器用户信息。

    输入:git config --global user.name ”Tyche***”

               git config --global user.email ”8057*****@qq.com”

     

    3. 安装python-setuptools软件。

    输入:sudo apt-get install python-setuptools

     

     

    4.安装gitosis。Gitosis主要用于管理用户对仓库的操作权限。

    安装:git clone https://github.com/res0nat0r/gitosis.git

    进入gitosis目录:  cd gitosis/

    使用安装目录下的setup.py的脚本安装。输入:sudo python setup.py install

     

    二.配置Git服务器

    1.创建git管理员账户

    增加用户命令:sudo useradd  -m  git

    修改git用户密码:sudo passwd git

     

     2. 初始化gitosis

    在服务端生成SSH公钥,输入命令:ssh-keygen -t rsa

    这里会提示输入密码,直接回车即可。

     

    用刚生成公钥id_rsa.pub来对gitosis进行初始化。输入命令:sudo -H -u git gitosis-init <  /root/.ssh/id_rsa.pub

     

     3. 添加git用户对文件夹的权限

    输入: sudo chown git:git /home/git/repositories

                sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

                sudo chmod 755 /home/git/repositories

     

    三.创建项目仓库

    使用git账户在服务器上创建一个目录(mytestproject.git)并初始化成git项目仓库。

    ubuntu:/home/git$ su git
    ~git$ cd /home/git/repositories
    ~git$ mkdir mytestproject.git

    ~git$ cd mytestproject.git/
    ~git$ git init --bare

     

    四. gitosis管理用户操作权限

    1. 首先需要一个管理员客户端,使用前面生成ssh公钥(用来初始化gitosis)的机器上将gitosis-admin.git的仓库clone下来。在管理员客户端机器上新建一个目录用于存放gitosis-admin.git仓库

     

    clone时不能用绝对路径,只能写相对于git用户home的相对路径
    错误:git@xxx.xxx.xxx.xxx:gitosis-admin.git
    正确:git@xxx.xxx.xxx.xxx:/home/git/repositories/gitosis-admin.git

     输入 :sudo clone git@xxx.xxx.xxx.xxx:/home/git/repositories/gitosis-admin.git

    clone下来的gitosis-admin文件夹有一个gitosis.conf的配置文件和一个keydir的目录。keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用于认证请求,gitosis.conf用于配置用户的权限。

     

    1. 现在需要将授权的用户在自己的机器上生成相应的ssh公钥,  打开git bush并输入:ssh-keygen -t rsa -C “email@example.com”

    2. 将生成的公钥文件一般在  C:/用户/自己的用户名/.ssh 下的 id_rsa.pub

    3. 管理员收集这些文件,分别按用户名命名好,复制到刚才的keydir目录下。

    4. 编辑gitosis.conf文件管理用户权限

    [gitosis]

    [group gitosis-admin]      #管理员
    members = charn@ubuntu #管理员用户名,需要在keydir目录下找到相应的.pub文件,多个管理员用空格隔开writable = gitosis-admin   #可写的项目仓库名,多个仓库用空格隔开

     

    [group testwrite]           #建一个组:可写权限
    members = abc            #用户
    writable = mytestproject   #可写的项目仓库名

     

    [group testread]           #建一个组:只读权限
    members =def             #用户
    readonly= mytestproject   #只读的项目仓库名

     

    本地修改完配置后,还需要推送到服务器才能生效。

    ubuntu:~/gitadmin/gitosis-admin$ git add .
    ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add users"
    ubuntu:~/gitadmin/gitosis-admin$ git push origin master

     

    还需要在服务端重新启动一下sshd服务

    ubuntu:~/gitadmin/gitosis-admin$ sudo /etc/init.d/ssh restart

    服务端的git就已经安装和配置完成了,接下来就需要有权限的组成员在各自的机器上clone服务器上的相应项目仓库进行相应的工作了。

     

    五.在客户端测试

    1. 在本地新建一个mytestproject文件夹

    2. 将空项目clone下来,输入 : git clone git@62.234.***.***:mytestproject.git

     

     

    3. 本地添加一个log.txt 文件

    4. 然后将添加的文件提交,输入:

    git  add .

    git  commit  –m  "add a log.txt"

    git push origin master

     

     5. 检查git历史状态

     

    ok !

     

  • 相关阅读:
    IDE-Android Studio 导入Ecplise项目不改变结构
    IDE-Android Studio -FAQ-使用习惯(不断更新 欢迎留言)
    IDE-Ecplise-代码注释 模版 编码规范 配色
    android- 远程调试
    phpstorm所有快捷键表格pdf
    phpstorm修改字体和大小
    phpstorm重构代码形式让阅读更简单
    七牛云到底好不好使用经历分享
    一篇文章搞懂php中类型转换
    彻底解决php判断a==0为真引发的问题-类型转换
  • 原文地址:https://www.cnblogs.com/tyche116/p/10037615.html
Copyright © 2011-2022 走看看