阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)
起因
自己会有练手的不敢公开的项目,就自己搭建个服务器放自己的渣代码了。
在经历了连不上服务器、没有访问权限、没法提交以后,我打通了任督二脉。
我这个git服务器适合条件:1、就那么几个人小项目,不是几百人的大项目;2、不需要什么恶心的代码权限的(这玩意我搞不了)。
经过
首先声明我下面的操作都是在root用户下执行的。
放行git端口
- 防火墙添加放行规则,将3690端口放行
安装git
- 安装git必备工具包:
yum -y groupinstall "Development Tools" - 安装git依赖包:
yum -y install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel - 接下来是下载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/gitcd /usr/local/tools/git/,下载最新版git:wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz - 解压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 - 开始编译安装包:
cd git-2.21.0-installer./configure --prefix=/usr/local/tools/git/git-2.21.0(这儿把prefix后面的目录改成你要安装的目录就行了)make && make install - 加入环境变量:
vim /etc/profile,在后面追加GIT_HOME=/usr/local/tools/git/git-2.21.0(就是上面prefix后面的那个目录),$PATH=$GIT_HOME/bin:$PATHexport GIT_HOME PATH这三句,然后ESC:wq保存退出,执行source /etc/profile,使得我们的配置生效。 - 验证git是否安装成功:
git --version,出现版本信息就对了。

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

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

- 添加用户的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按三下回车,就有那个文件了) 其实都到现在为止,我们已经搭建好了git服务器,接下来进入装逼时刻。
验证git服务器
- 创建裸仓库:
git init --bare /usr/local/repository/git/myGit.git,git服务器初始化仓库的时候一定要加上--bare,否则你的仓库不能推送代码; - 打开cmd切换到指定目录,输入:
git clone zhangsan@服务器IP:/usr/local/repository/git/myGit.git,按照提示输入密码就能clone项目; - 然后增加个readme.md或者其他文件,在cmd执行
git add readme.md,git commit -m"新增readme文件",git push,就看执行push以后是否成功就行了。
结尾
你搭建出来了吗?
阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)的更多相关文章
- 阿里云 CentOS7中搭建FTP服务器
1配置 vsftpd-3.0.2-27.el7.x86_64 阿里云 centos 7.0 2 ftp工作模式 2.1 ftp通道 ftp工作会启动两个通道: 控制通道,数据通道 在ftp协议中,控制 ...
- 【阿里云开发】- 搭建和卸载svn服务器
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库(repository) 中.这个档案库很像一个普 ...
- 阿里云centos7基于搭建VPN
本文参考自:http://www.xxkwz.cn/1495.html 前段时间使用pptp搭建了一个VPN,速度很快,但是用了大概一个月挂了,估计是被墙了吧,于是,用shadowsocks重新搭建了 ...
- 阿里云CentOS7系统搭建JavaWeb环境
一,准备工作 1,安装目录 我们创建如下路径/usr/develop,然后在develop目录下面创建java,tomcat和mysql三个目录即可. 二,配置JDK 1.理解wget命令 wget命 ...
- 搭建git服务器及利用git hook自动布署代码
注意:服务器:Ubuntu Server 14.04,我的项目比较小,所有操作都使用root,建议最好新建一个用户(需要有管理员权限,否则在后面使用hooks自动部署代码时会出现各种权限问题,很蛋疼的 ...
- 阿里云centos7搭建php+nginx环境
阿里云Centos搭建lnmp(php7.1+nginx+mysql5.7) https://jingyan.baidu.com/article/215817f7a10bfb1eda14238b.ht ...
- 阿里云Centos7使用yum安装MySQL5.6的正确姿势
阿里云Centos7使用yum安装MySQL5.6 阿里云Centos7使用yum安装MySQL5.6 前言:由于某些不可抗力,我要在自己的阿里云服务器上搭建hadoop+hive+mysql+tom ...
- 阿里云centos7成功安装和启动nginx,但是外网访问不了的解决方案
问题环境: 阿里云centos7.4.1708 问题描述:成功配置,启动成功,外网访问不了 解决方案: 经过查阅文档,去阿里云后台查看,原来是新购的服务器都加入和实例安全组. (OMG)立即去配置.加 ...
- 阿里云centos7.4下tomcat8.5配置ssl证书
环境 阿里云centos7.4 域名也是阿里申请的 jdk1.8 tomcat8.5 1.申请证书 登录到阿里云的域名管理,可以看到已经申请过得域名,我这里第一个已经配置了ssl,第二个未配置,点击更 ...
随机推荐
- Lua表(table)的用法_个人总结
Lua表(table)的用法_个人总结 1.表的创建及表的介绍 --table 是lua的一种数据结构用来帮助我们创建不同的数据类型.如:数组和字典--lua table 使用关联型数组,你可以用任意 ...
- [Luogu] P1156 垃圾陷阱
题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2≤D≤100)英尺. 卡门想把垃圾堆起来,等到堆得与井同样高时 ...
- [Python3网络爬虫开发实战] 1.8.1-pyspider的安装
pyspider是国人binux编写的强大的网络爬虫框架,它带有强大的WebUI.脚本编辑器.任务监控器.项目管理器以及结果处理器,同时支持多种数据库后端.多种消息队列,另外还支持JavaScript ...
- SQL中带有NOT IN 子查询改写
报表程序中的一段SQL运行很慢,代码如下: 优化前: 耗时:1337s INSERT INTO PER_LTE_ZIB_PB_COMMISSION_07 SELECT P.TOPACTUALID, Q ...
- Redis Hashes 巧用sort排序
假设我们有如下的数据结构: 我们想按download排序,并且返回hash中的其他field,需要怎么处理呢? 我们首先会想到sort命令.对,就是这个sort. 我们先看一下sort的语法: 可以看 ...
- GROUP函数
GROUP_ID 首先我们看看官方的解释: 大意是GROUP_ID用于区分相同分组标准的分组统计结果. 解释起来比较抽象,下面我们来看看具体的案例. 例1:单一分组 SQL> select gr ...
- stark组件之处理函数动态url构造(五)
在这个组件中有内置的4个处理函数,它们都有自己对应的url,那么它们的url是怎么构造的呢? ... urlpatterns = [ re_path('list/$', self.wrapper(se ...
- python 字典实现三级菜单
简介:1.用字典建立一个省市县的三级菜单 2.开始显示所有的省份,输入要进入的省份之后,显示该省份下的所有市,输入市显示该市下的所有县 3.在每一级菜单下都可以返回到上一层菜单 4.随时可以退出 me ...
- LLVM 概览
下面是 LLVM 首页对 LLVM 介绍的中文翻译. LLVM 项目是一系列模块化.可重用和工具链技术的集合.不必在意它的名称,LLVM 和之前的虚拟机基本没什么关系了,然而也确实提供了对构建这些虚拟 ...
- LeetCode(50) Pow(x,n)
题目 Implement pow(x, n). Show Tags Show Similar Problems 分析 一个不利用标准幂次函数的,求幂算法实现. 参考了一个很好的解析博客:Pow(x,n ...