自建Git服务器 - 创建属于你自己的代码仓库
最近有线上朋友私信问我怎么搭建个人博客,也有咨询我个人项目的代码是如何保管的,还有一个朋友问我买了服务器玩了一段时间,等新鲜感过了就不知道做什么了。
关于这些问题并没有一个标准答案,每个人都有自己的使用习惯,找到适合你的才是最好的。关于博客搭建及使用的工具或服务在我博客的关于页里已经写的比较详细了,如果有人想看具体步骤我可以专门写一篇详细的教程,本篇先来讲讲我的个人项目代码是如何保管的。
Git私服的选择
最开始托管代码我使用的是GitHub和Gitee,后面折腾久了我就开始自己搭建Git服务了(包括很多其他服务我也有自建),现在我绝大部分个人项目代码都放在我的Git私服里面(还有一小部分放在自建SVN中没有迁移过来)。
搭建Git私服的工具其实有很多,比较出名的有gitlab,它的优点是功能特别全,你用的你不用的它都有,但对机器要求也很高,2C4G起步,适合企业使用,我们公司也是用它来搭建内网Git服务的,但我并不推荐个人使用gitlab私服。
其次有Gogs和Gitea(本文教程),它们都属于轻量级的Git服务,对配置要求较低很适合个人使用,1C1G就能跑。
Gitea其实是Gogs的孪生兄弟,它是从Gogs源码的基础上开发的,且前期它们的功能也极为相似,官方介绍是Gitea是一个开源社区驱动的Gogs克隆。那为何会出两个功能如此类似的产品呢?我在网上找到的资料是这样的:
基本上就是有一部分开发者认为Gogs的开发者效率比较慢,而且不接受他人加入开发,所有修改和PR都需要经过他一个人的审核,这对Gogs的发展很不利。因而部分开发者决定基于Gogs重开一个项目,这就是Gitea,关于这件事我不予置评,但是开源社区不就是因为这样才充满活力与生机吗,百花齐放。
所以才有了现在的Gitea,从2016年11月Fork至今,它的功能相较于Gogs已经发生了很大的变化,我个人也比较喜欢Gitea这个更有活力的产品,所以我选择了它来管理我的代码。
安装Gitea有多种方式,以Linux为例,常见的有3种:
- Docker安装(强烈推荐)
- 二进制安装
- 源码编译安装
第三种源码安装的方式最繁琐,需要先安装Go语言环境,这里介绍前面两种安装方式。
首发地址:https://www.guitu18.com/post/2020/02/04/67.html
二进制安装
考虑到有些同学不熟悉Docker,这里先说第二种最简单的二进制安装。二进制安装需要Git支持。
安装Git:
yum install git -y
下载二进制文件并赋予执行权限:
# 创建工作目录
mkdir -p /usr/local/gitea && cd /usr/local/gitea
wget -O gitea https://dl.gitea.io/gitea/1.11.4/gitea-1.11.4-linux-amd64 && chmod +x gitea
运行Gitea:
./gitea web
运行成功界面如下,所有的运行数据都会生成在你的gitea二进制文件同级目录下:
默认运行的端口是3000,这样通过你的你的IP+端口就能访问你的Gitea服务了(记得放行3000端口或者关闭防火墙),要停止服务直接按 Ctrl + C
即可。若要后台运行,用下面的命令执行:
nohup ./gitea web > gitea.log 2>&1 &
在首页点击登录,会跳转到配置页面,请根据实际情况进行配置。
Docker方式安装(强烈推荐)
安装Docker:
yum install docker -y
略作等待后即可安装成功,启动docker服务:
systemctl start docker
执行 docker -v
查看docker版本,要看更详细的信息请执行docker info
:
[root@localhost gitea]# docker -v
Docker version 1.13.1, build cccb291/1.13.1
为了更加愉快的使用Docker你可能还需要配置镜像加速,执行vim /etc/docker/daemon.json
,修改为如下配置:
{
"registry-mirrors":[
"https://reg-mirror.qiniu.com/",
"https://hub-mirror.c.163.com/"
]
}
重新加载配置及重启Docker服务:
systemctl daemon-reload
systemctl restart docker
拉取Gitea镜像
至此Docker安装完成,那么可以开始部署Gitea了,第一步,拉去Gitea镜像:
docker pull gitea/gitea:latest
拉取成功后,通过docker images
看到已经有Gitea的镜像信息了:
运行Gitea容器
现在可以通过Gitea镜像运行Gitea容器了,命令如下:
# 创建挂载目录
mkdir -p /usr/local/gitea
# 运行容器
docker run -d --name=gitea -p 9020:22 -p 9000:3000 -v /usr/local/gitea:/data gitea/gitea:latest
命令参数说明(更加详细的说明请查看Docker篇):
-d:后台运行
--name:为启动的容器命名
-p:端口映射,前面的为宿主机端口,后面的为容器端口
-v:目录挂载,前面的为宿主机目录,后面的为容器内目录
这个命令是后台运行的,执行完成会输出一个容器ID,你可以执行docker ps -a
来查看容器的运行状态:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
82c6b17c5710 gitea/gitea:latest "/usr/bin/entrypoi..." 4 minutes ago Up 1 second 0.0.0.0:9020->22/tcp, 0.0.0.0:9000->3000/tcp gitea
正常来讲都会运行成功,你可通过IP+端口访问你的Gitea服务了,但是如果你的gitea
容器的STATUS不是Up状态,那么可能是启动遇到错误了。
报错处理
如果容器没有正常运行起来,比如下面这样:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4985556f611f gitea/gitea:latest "/usr/bin/entrypoi..." 22 seconds ago Exited (0) 20 seconds ago gitea
那么你就需要检查原因了,你需要查看启动日志信息,咱们先删除这个启动失败的容器,执行命令:
# 4985556f611f 是你在`docker ps -a`命令看到的gitea的容器ID(CONTAINER ID)
docker rm 4985556f611f
再用下面的命令重新启动容器:
docker run -it --name=gitea -p 9020:22 -p 9000:3000 -v /usr/local/gitea:/data gitea/gitea:latest
把之前启动命令中的 -d
改为 -it
,这样你就能通过前台启动,从而看到报错信息了。
接着看,最常见的是你们很可能遇到这个错:mkdir: can't create directory '/data/gitea/': Permission denied ...
如果出现上述问题,那么你需要关闭SELINUX
,方法如下:
临时关闭:
setenforce 0
永久关闭:
vim /etc/selinux/config
,修改SELINUX
的值为disabled
然后重启机器即可,看图:
启动完毕之后,访问服务器的9000端口就能看到页面了,点击登录开始配置。
配置Gitea
安装完成首次访问需要对Gitea进行配置,默认的参数都已经配好了的,如果使用SQLite3数据库,甚至什么都不用做,直接点击立即安装即可。这里简单做一下说明:
数据库配置
第一项是数据库配置,一般默认使用SQLite3数据库即可(因为无需额外安装),使用其他数据库你需要有相关环境支持。以MySQL数据库为例,需提前在MySQL创建好对应的数据库,关于MySQL的安装教程已经准备好了:Linux 系统 MySQL 源码安装学习记录:
站点信息配置
一般配置里,页面基本上都告诉你这些参数是干什么的,各种目录都会有默认值,不喜欢可以按照你的喜好修改。端口你也可以设置为你自己想要的,比如我修改成9000端口。
需要注意的一点是,如果你修改了默认的3000端口号,那么安装完后不会立即生效,新的端口在重启服务后生效,不重启你依然需要通过3000端口访问。重启服务器按Ctrl + C
杀掉进程,重新执行./gitea web
即可。
可选配置
可选配置里可以不用配置,这些都是可以后期在配置文件里进行修改的。
自用的话一般也不用配置电子邮箱,服务器和第三方服务设置使用默认的就好。
管理员这里如果不设置那么第一个注册的用户将成为管理员,这里我不配置直接点立即安装。
安装完成会跳转到登录页面,如果你修改了端口这时候是访问不到的,要么你继续用3000端口访问,要么重启服务以启用新的端口。点击注册,你将成为Gitea权限最高的管理员:
注册并登录上去开启你的Git私服之旅吧。关于Docker的更多使用教程请跳转:Docker 虚拟化管理:30 分钟教你学会用 Docker
自建Git服务器 - 创建属于你自己的代码仓库的更多相关文章
- git服务器创建,冲突解决,远程仓库获取指定文件
1.git服务器创建 在公司多人协作开发的情况下,不能简单地使用github,因为github是互联网公开的,这种情况公司的代码的保密性就会丧失了.这种情况下,需要创建git服务器. 登录服务器,使用 ...
- 自建git服务器搭建使用记录
git在push的时候出现insufficient permission for adding an object错误 //解决方法,在git库的目录下 //明明一开始创建user的时候有执行这个命令 ...
- 使用自建Git服务器管理私有项目 Centos 7.3 + Git 2.11.0 + gitosis (实测 笔记)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso GIT服务器IP:192.168.1 ...
- git使用命令行拉取远程代码仓库中的分支至本地
1.本地创建文件夹用于存放拉取的代码 2.执行git init初始化文件夹 3.与远程代码仓库建立连接 git remote add origin git@github.com.wuylin/noth ...
- Ubuntu下 git 服务器的搭建【转】
转自:http://www.open-open.com/lib/view/open1391477731082.html 搭建git服务器的4个步骤 1 配置服务器前的准备工作 首先ubuntu系统 ...
- debian下使用gitosis+gitweb搭建SSH认证的git服务器
搭建完成Git服务器后,需要使用两台机器进行测试,一台机器作为服务器端server,一台服务器作为客户端client.整个系统,需要三个计算机账户,这里假设server端的账户名为git,client ...
- 在Linux下搭建Git服务器的方法是什么样?
第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...
- 教你搭建你自己的Git服务器
http://lib.csdn.net/article/git/50086 导读 现在我们将要学习如何搭建 git 服务器,如何编写自定义的 Git 钩子来在特定的事件触发相应的动作(例如通知),或者 ...
- CentOS上安装Git服务器
1.安装Git 打开控制台,执行以下命令进行安装 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel ...
随机推荐
- override 重写
//override:子类继承父类,子类重写父类的方法 public class override { public static void main(String[] args) { horse h ...
- iOS开发|从小公司到进大厂,我的进阶学习之旅!
iOS高级进发 OC源码下载地址 苹果开发文档 如何阅读苹果开发文档 GNUstep是GNU计划的项目之一,它将Cocoa的OC库重新开源实现了一遍 源码地址:http://www.gnustep.o ...
- 使用Gitee搭建个人图床
使用Gitee搭建个人图床 一.前言 搭建个人的图床可以更加方便地管理个人图片,虽然Github也可以实现个人图床的搭建,但是,Github毕竟是外网,访问速度慢且不稳定.因此采用Gitee来搭建图床 ...
- c期末笔记(4)
未命名易错点 1.0<y<10 在c语言中,0<y<10不是一个正确的表达式,应该利用逻辑运算符替换(y>0&&y<10或者!(y<=0||y ...
- ACL,NAT的使用
项目练习 练习一: 练习目的:通过配置路由器的dhcp功能使pc自动获取ip地址. Router>enable Router#configure terminal Router(config) ...
- BurpSuite 安装配置简明教程
文章更新于:2020-04-14 按照惯例,需要的文件附上链接放在文首. 文件名:jdk-8u241-windows-x64.7z 文件大小:208.43 MB 下载链接:https://downlo ...
- Array(数组)对象-->数组的访问
1.访问数组: 通过指定数组名以及索引号码,你可以访问某个特定的元素. 格式: 数组对象名[下标] 例如:arr[0] 就是访问数组第一个值 var arr = new Array(3); arr[ ...
- sql 案例
select now();#获取当前系统时间 select now() from dual;#与Oracle兼容 show character set;#产看当前数据库支持的字符集 create da ...
- beanshell自定义聚合报告时分线程组阶段展示
假设现在一共会加载100个线程,期望聚合报告中分别展示1-20,20-40,40-60,60-80的四个阶段的线程并发性能数据,而不是总体的统计数据 beanshell脚本,具体内容: import ...
- 数据结构和算法(Golang实现)(16)常见数据结构-字典
字典 我们翻阅书籍时,很多时候都要查找目录,然后定位到我们要的页数,比如我们查找某个英文单词时,会从英语字典里查看单词表目录,然后定位到词的那一页. 计算机中,也有这种需求. 一.字典 字典是存储键值 ...