设为首页 收藏本站
查看: 828|回复: 0

[经验分享] Cubieboard 架设Git服务器

[复制链接]
累计签到:2 天
连续签到:2 天
发表于 2018-9-18 09:47:51 | 显示全部楼层 |阅读模式
  如果你现在用的是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)自动同步到在线网站;
  根据这个流程,大概的流程图就是如下:

  其中: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 显示如下图,说明安装成功!

  如果没有显示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 git  396 Jun 18 02:54>  -rw-r–r– 1 git git 2220 Jul  2 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仓库代码位置
  [git]
  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仓库代码。

  最后一个project 目录就是我们及时同步显示的仓库。
  http://git.lixiphp.com/gitlist/project/commits/master 查看代码提交版本,代码差异,代码评论等等。

  查看更多:  Cubieboard Linux服务器教程五之架设Git服务器 | LixiPHP - 专注于建设高品质网站!http://blog.lixiphp.com/cubieboard-linux-git-server/#ixzz2Y5KxYQaO


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-589695-1-1.html 上篇帖子: Git笔记_lpf 下篇帖子: GIT版本恢复和出现 * (no branch)的处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表