haishi 发表于 2018-9-18 09:47:51

Cubieboard 架设Git服务器

  如果你现在用的是Cubieboard 或者树莓派卡片式电脑,可以查看本文之前,学习前面的四个教程,它可能会对你非常有帮助。如果你是普通的Linux用户或者Linux VPS、Linux 独立服务器等,可以直接跳过查看本文。

[*]  教程一 Cubieboard 安装 Linux系统
[*]  教程二 Cubieboard Linux 服务器配置
[*]  教程三 Cubieboard Linux 服务器安装LNMP环境
[*]  教程四 Cubieboard Linux服务器域名动态解析
  非常欢迎你开始阅读 Cubieboard Linux服务器教程五,这节教程主要讲解如果在Linux上搭建一个Git 服务器,用于规范整个团队的合作开发流程。通过Git 服务器,团队Leader可以随时通过网页跟踪代码提交、代码质量、代码差异、代码评论描述。
  首先我需要做的是整理出一个非常适合团队开发的流程:
  1、Git 服务器上存放代码仓库,存储所有开发版本;
  2、本地局域网或者远程开发者组成很多开发节点,每个节点可以做自己的分支开发,再提交到Git 服务器;
  3、根据每个开发者的分支,由Leader或者有权限的开发者整合到主要分支(merge origin master),并提交(commit);
  4、Git 服务器收到主分支提交动作(push origin master) 后,根据钩子(hooks)自动同步到在线网站;
  根据这个流程,大概的流程图就是如下:
http://blog.lixiphp.com/wp-content/uploads/2013/07/git-workflow-picture_thumb.jpg
  其中:Git 仓库和在线网站由 Cubieboard Linux 服务器来担任。
  查看原文:Cubieboard Linux服务器教程五之架设Git服务器 http://blog.lixiphp.com/cubieboard-linux-git-server/#ixzz2Y5KxYQaO
Git 安装
  很显然,Git 是需要安装在服务器上和你的本地机器,前者作为服务器端,后者作为客户端。
  如果你的客户端是Linux 操作系统,那么你可以跳过下面的Windows客户端的安装,和服务器端的安装方法一样。
  Windows 客户端安装Git:
  当前版本Windows 1.8.3 官方绿色版Git安装包,解压即可使用。
  下载地址:https://msysgit.googlecode.com/files/PortableGit-1.8.3-preview20130601.7z
  点击解压后,文件夹中的 git-cmd.bat 文件,输入git –version 显示如下图,说明安装成功!
http://blog.lixiphp.com/wp-content/uploads/2013/07/Git-windows-install_thumb.jpg
  如果没有显示Git 版本或者无法使用Git命令时,那么请将目录中bin 目录加入到Windows的环境变量中去。
  Linux 服务端和客户端安装Git:
  使用如下命令安装:
  apt-get insatll git
  Git 安装好后即可作为仓库使用也可作为Clone使用。
Git SSH 协议
  Git 使用的传输协议中最常见的可能就是 SSH 了。这是因为大多数环境已经支持通过 SSH 对服务器的访问 — 即便还没有,架设起来也很容易。SSH 也是唯一一个同时支持读写操作的网络协议。另外两个网络协议(HTTP 和 Git)通常都是只读的,所以虽然二者对大多数人都可用,但执行写操作时还是需要 SSH。SSH 同时也是一个验证授权的网络协议;而因为其普遍性,一般架设和使用都很容易。
  通过 SSH 克隆一个 Git 仓库,你可以像下面这样给出 ssh:// 的 URL:
  $ git clone ssh://user@server/project.git
  或者不指明某个协议 — 这时 Git 会默认使用 SSH :
  $ git clone user@server:project.git
  如果不指明用户,Git 会默认使用当前登录的用户名连接服务器。
  优点:
  使用 SSH 的好处有很多。首先,如果你想拥有对网络仓库的写权限,基本上不可能不使用 SSH。其次,SSH 架设相对比较简单 — SSH 守护进程很常见,很多网络管理员都有一些使用经验,而且很多操作系统都自带了它或者相关的管理工具。再次,通过 SSH 进行访问是安全的 — 所有数据传输都是加密和授权的。最后,和 Git 及本地协议一样,SSH 也很高效,会在传输之前尽可能压缩数据。
  缺点:
  SSH 的限制在于你不能通过它实现仓库的匿名访问。即使仅为读取数据,人们也必须在能通过 SSH 访问主机的前提下才能访问仓库,这使得 SSH 不利于开源的项目。如果你仅仅在公司网络里使用,SSH 可能是你唯一需要使用的协议。如果想允许对项目的匿名只读访问,那么除了为自己推送而架设 SSH 协议之外,还需要支持其他协议以便他人访问读取。
架设Linux Git 服务器
  首先,创建一个名为 ‘git’ 的用户,作为授权用户。
  $ sudo adduser git
  $ su git
  生成 SSH 公钥:
  大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有操作系统上都差不多。首先先确认一下是否已经有一个公钥了。SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。
  检查 “git”用户是否已经有SSH:
  $ cd
  $ ls -al .ssh/
  drwxrwxr-x 2 git git 4096 Jun 22 03:32 .
  drwxr-xr-x 4 git git 4096 Jun 18 04:50 ..
  -rw-rw-r– 1 git git 1193 Jun 22 03:41 authorized_keys

  -rw——- 1 git git 1671 Jun 18 02:54>
  -rw-r–r– 1 git git396 Jun 18 02:54>  -rw-r–r– 1 git git 2220 Jul2 01:03 known_hosts

  关键是看有没有id_dsa 或>  $ cd
  $ mkdir .ssh
  $ ssh-keygen
  一直敲击回车键,就会自动生成密钥。
  $ cat .ssh/id_rsa.pub
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC01uLvyF8exuGVfuqrX94yo6M+j6lUMBcYm6S885izgyPI6T0
  Nj/vBc/HmEkbzImcv7qJgqE1nYljaakNaCjqKl5tUFbIoAf2wSaDR4/njSrf1JCoLsXQi8QWAkloH3HgFANay6xydweZg
  743Qh9YDls2tmNBmIhm69OIEuGIB5qL1PLCtnswIvEVhjS6P8OFxhiJ7/yfDGTMKWjqVIYHYbijBE8EbaoGdu1jdir2
  WKD+6ekujpeL6fgn2HxgpOoTcmdxZs880MkS+2Z6WUzRCsIM25u6nXPDtJIdE1dBgzCcR68qCWQlzS3eGOEiJL
  5RQurTdOQW3tVYmlgQOZtmx git@cubieboard
  类似上面的数据。
  我们将使用 authorized_keys 方法来给用户授权。
  $ cat /home/git/.ssh/id_rsa.pub>> /home/git/.ssh/authorized_keys
  将Linux服务器上的Git用户加到授权账户里,相当于本机git用户在提交、更新、整合等操作时不再需要输入密码进行验证。
架设Git服务端仓库与客户端克隆和推送
  首先Git 需要建立一个裸仓库,可以用 运行 git init –bare 选项来建立一个裸仓库,初始化一个不包含工作目录的仓库。
  $ mkdir -p /srv/git
  $ cd /srv/git
  $ mkdir project.git
  $ cd project.git
  $ git –bare init
  这时,客户端就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过 shell 登入主机并创建一个裸仓库目录。
  # 在 LixiPHP 的电脑上
  $ git clone git@git.lixiphp.com:/srv/git/project.git myproject
  $ cd myproject
  $ touch README
  $ git add -A
  $ git commit -m ‘initial commit’
  $ git push origin master
  接下来就是你对Master主分支的代码管理了。
架设Git 服务端 LNMP在线查看仓库历史代码
  首先请安装 教程三 Cubieboard Linux 服务器安装LNMP环境 搭建git.lixiphp.com域名。在LNMP中安装Gitlist,Gitlist 是一个Git仓库查看器,是一个PHP开源程序。 GitList 能够实现匿名在线浏览版本控制系统源码仓库中的内容。
  读取Git 服务器端仓库代码到一个克隆目录:
  # 在 Cubieboard Git 服务器上
  $ cd /srv/www/git.lixiphp.com/public_html
  $ mkdir repos
  $ cd repos
  $ git clone git@git.lixiphp.com:/srv/git/project.git project
  设置 Gitlist 的config.ini去读取克隆目录:
  # 在 Cubieboard Git 服务器上
  $ cd /srv/www/git.lixiphp.com/public_html/gitlist
  $ vi config.ini
  # 设置repositories仓库代码位置
  
  client = ‘/usr/bin/git’ ; Your git executable path
  default_branch = ‘master’ ; Default branch when HEAD is detached
  repositories[] = ‘/srv/www/git.lixiphp.com/public_html/repos’ ; Path to your repositories
  其中 /srv/www/git.lixiphp.com/public_html/gitlist 安装了最新版的Gitlist,如果不知道如何安装Gitlist,请查看Gitlist 安装与配置文章。
  设置 Git 仓库钩子(hooks)同步更新 Commit 到 Gitlist 克隆目录,进行在线查看:
  $ cd /srv/git/project.git/hooks/
  $ vi post-update
  # 文件内容如下:
  #!/bin/sh
  echo
  echo "**** Pulling changes into Project"
  echo
  cd /srv/www/git.lixiphp.com/public_html/repos/project || exit
  unset GIT_DIR
  git pull
  exec git-update-server-info
  $ chown -R git.git post-update
  $ chmod +x post-update
  测试一下钩子是否已经工作可以直接运行一下钩子。
  $ ./post-update
  注意:前面我们 authorized_keys 方法来给 “git”用户授权,这个Git pull 的时候不需要再输入密码来验证。
  打开Gitlist网站看看project是否同步了。
  http://git.lixiphp.com/gitlist/ 查看所有的Gitlist仓库代码。
http://blog.lixiphp.com/wp-content/uploads/2013/07/LixiPHP-Git-Repos-Gitlist-preview_thumb.png
  最后一个project 目录就是我们及时同步显示的仓库。
  http://git.lixiphp.com/gitlist/project/commits/master 查看代码提交版本,代码差异,代码评论等等。
http://blog.lixiphp.com/wp-content/uploads/2013/07/GitList-Commit-Preview_thumb.png
  查看更多:Cubieboard Linux服务器教程五之架设Git服务器 | LixiPHP - 专注于建设高品质网站!http://blog.lixiphp.com/cubieboard-linux-git-server/#ixzz2Y5KxYQaO

页: [1]
查看完整版本: Cubieboard 架设Git服务器