热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)

起因自己会有练手的不敢公开的项目,就自己搭建个服务器放自己的渣代码了。在经历了连不上服务器、没有访问权限、没法提交以后,我打通了任督二脉。我这个git服务器适合条件:1、就那么几个人小项目,不

起因

自己会有练手的不敢公开的项目,就自己搭建个服务器放自己的渣代码了。
在经历了连不上服务器、没有访问权限、没法提交以后,我打通了任督二脉。
我这个git服务器适合条件:1、就那么几个人小项目,不是几百人的大项目;2、不需要什么恶心的代码权限的(这玩意我搞不了)。

经过

首先声明我下面的操作都是在root用户下执行的。

安装git

  1. 安装git必备工具包: yum -y groupinstall "Development Tools"
  2. 安装git依赖包: yum -y install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel
  3. 接下来是下载git,先去找最新版,放个官方的红帽下载链接:Index of /pub/software/scm/git/,找到最新版的tar.gz结尾的源码包(我现在是2019-03-21,最新版是2.21.0)。

    我安装git的目录是 /usr/local/tools/git/
    进入git目录:mkdir -p /usr/local/tools/git cd /usr/local/tools/git/,下载最新版git: wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz
  4. 解压git:tar -zvxf git-2.21.0.tar.gz
    我要安装在/usr/local/tools/git/git-2.21.0目录下,因此我把安装包重命名成git-2.21.0-installer了:mv git-2.21.0 git-2.21.0-installer
  5. 开始编译安装包:cd git-2.21.0-installer ./configure --prefix=/usr/local/tools/git/git-2.21.0(这儿把prefix后面的目录改成你要安装的目录就行了)make && make install
  6. 加入环境变量:vim /etc/profile,在后面追加GIT_HOME=/usr/local/tools/git/git-2.21.0(就是上面prefix后面的那个目录),$PATH=$GIT_HOME/bin:$PATH export GIT_HOME PATH这三句,然后ESC :wq保存退出,执行 source /etc/profile,使得我们的配置生效。
  7. 验证git是否安装成功: git --version,出现版本信息就对了。

搭建git服务器

首先说明下仓库可以放在其他非用户家目录下,也就是说/home/下面原来有的目录都不能用。

  1. 新建git仓库目录: mkdir -p /usr/local/repository/git;
  2. 新建访问用户: useradd -M zhangsan, useradd -M lisi ,useradd -M wangwu, 这样子用-M添加用户不会生成/home/zahngsan家目录;
  3. 新建访问用户组: groupadd git;(创建git用户组,你也可以改成其他的,比如:groupadd developer或者其他用户组反正你记得就行了);
  4. 给用户设置密码: passwd zhangsanpasswd lisi, passwd wangwu,分别给他三个设置登陆密码,拉取代码和提交代码需要提供密码;
  5. 添加用户到用户组: usermod -G git zhangsan, usermod -G git lisi, usermod -G git wangwu
  6. 变更git仓库的所有者到任何人: chown -R nobody:nobody /usr/local/repository/git ,赋予nobody就是把权限给了所有人;
  7. 修改git仓库的读写权限:chmod -R 777 /usr/local/repository/git,这样子git仓库就能读写了,否则会报错拒绝提交的;
  8. 变更git仓库的所有人为git用户组: chgrp -R git /usr/local/repository/git, 这是修改权限给git用户组的。
  9. 验证文件权限: cd /usr/local/repository/ ll,看下git文件夹前缀那些是不是变成了下图这样子(主要看drwxrwxrwx(读写权限) nobody(可访问用户任何人) git(可访问用户组git) ):

  1. 修改用户shell登陆权限:vim /etc/passwd,找到最后头的zhangsan、lisi、wangwu,把冒号后面的/bin/bash改成usr/local/tools/git/git-2.21.0/bin/git-shell,就是你的git安装目录下的/bin/git-shell;

  2. 添加用户的SSH公钥:创建公钥目录mkdir -p /home/git/.ssh/,创建密钥存放文件vim authorized_keys 将从zahngsan、lisi、wangwu的电脑的C:/users/用户名/.ssh目录下找到id_rsa.pub,一行一个全都复制到该文件中;
    (PS:如果张三没有id_rsa.pub文件的话,那就用cmd执行git config --global user.name "zahngsan" git config --global user.email "张三的能接收邮件的邮箱",然后执行 ssh-keygen按三下回车,就有那个文件了)
  3. 其实都到现在为止,我们已经搭建好了git服务器,接下来进入装逼时刻。

验证git服务器

  1. 创建裸仓库: git init --bare /usr/local/repository/git/myGit.git,git服务器初始化仓库的时候一定要加上--bare,否则你的仓库不能推送代码
  2. 打开cmd切换到指定目录,输入:git clone zhangsan@服务器IP:/usr/local/repository/git/myGit.git,按照提示输入密码就能clone项目;
  3. 然后增加个readme.md或者其他文件,在cmd执行git add readme.md, git commit -m"新增readme文件", git push,就看执行push以后是否成功就行了。

结尾

你搭建出来了吗?


推荐阅读
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • VSCode与Gitee集成:项目提交的高效实践
    本文介绍如何利用VSCode内置的Git工具将项目提交到Gitee,简化Git命令的使用,提升代码管理效率。同时分享一些常见的踩坑经验和解决方案。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
author-avatar
是你让我变得冷漠涡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有