CentOS下搭建Gitea-自己的git服务器

爱写Bug的麦洛
• 阅读 611

前言

大家好,我是爱写Bug的麦洛。最近由于工作需要,需要给部门搭建一套git代码管理平台,经过一番对比,最终选择了Gitea来搭建。

Gitea是什么

官网的介绍是:

Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了x86,amd64,还包括 ARM 和 PowerPC

换句话说就是一个git管理工具,类似构建自己的github,但是github仓库需要公开(私有付费),国内的gitee免费的也有一定的限制。我们可以通过gitea管理自己的项目代码。

官方文档地址(中文):文档 - Docs (gitea.io)

常见git管理工具对比

CentOS下搭建Gitea-自己的git服务器

我为什么选择Gitea

  1. 功能基本满足我的需求
  2. 需要的机器性能不高,官方建议是2 核 CPU 及 1GB 内存,我自己跑1核1GB有点小慢(故而以下教程是买了一个2GB去跑的)
  3. GitLab太重了,Gogs不怎么维护了,Gitea还在不断地前行,值得推荐

Gitea安装

CentOS下搭建Gitea-自己的git服务器

根据官网,目前提供了以上的安装方式,我这边选择二进制安装,应该也是最简单的方式了。下面都是在centos7系统操作的。

注意⚠️:需要有MySQL、PostgreSQL、MSSQL 或 SQLite3其中一个用于gitea存储数据

1、安装git

yum -y install git

从yum源安装的git版本为1.8.3,与最新的gitea要求的版本相比有点低,这里不推荐yum源安装,需要大家自行安装高版本git

2、创建一个目录用于存放gitea和git数据的目录

我自己是放在/gitea里面,大家看着改。

mkdir -p /usr/local/gitea

3、添加Git用户

因为gitea限制了不能用root用户启动,所以我们需要创建git用户来运行gitea,后面创建的service也是通过这个用户运行,还有密钥那些东西不会和root之类的用户搞混。

# 创建用户组
groupadd git
# 创建用户并添加到用户组
useradd git -g git 

4、下载

打开页面:gitea | Gitea,可以看到全部版本,最上面的就是最新的,选择你要的版本。

CentOS下搭建Gitea-自己的git服务器

点击进入你要的版本找到后缀是linux-amd64的文件复制下链接,我下载的是https://dl.gitea.io/gitea/1.17.2/gitea-1.17.2-linux-amd64。

在服务器上进行如下操作,用root用户

# 去到你要安装的目录
cd /usr/local/gitea

# 下载
wget -O gitea https://dl.gitea.io/gitea/1.17.2/gitea-1.17.2-linux-amd64

# 设置成可运行文件
chmod +x gitea

如果服务器开了防火墙的,那就放行一下。如果防火墙本身是关闭的,那就不用管了

# 查看是不是没有开放3000端口
firewall-cmd --zone=public --list-ports
# 如果没有就添加一个
firewall-cmd --zone=public --add-port=3000/tcp --permanent
# 重新载入配置文件
firewall-cmd --reload

没问题就直接退出gitea程序,继续下面的操作。

5、更换目录的用户

#目录赋权限
chown -R git:git /usr/local/gitea
#切换用户
su git
# 测试运行
cd /usr/local/gitea    
./gitea web

运行成功的话,别退出测试下[ip]:3000是否可以访问,云服务器的话去设置下安全策略开放3000端口。

6、nginx代理

因为我们80端口都是给nginx用了,3000端口不想报漏在外面(主要是看着域名后面跟着端口号好难受),我们给他做一下nginx代理 找到nginx的配置文件目录,添加一个网站配置文件,如果要ssl的自己添加就行了,改完修改下app.iniROOT_URL重启一下gitea,nginx重载下配置文件

server {
    listen       80;
    server_name  [域名]
}
location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass    http://127.0.0.1:3000;
}
location ~ .*\.(js|css|png)$ {
    proxy_pass  http://127.0.0.1:3000;
}

7、配置service

如果不配置service,我们启动gitea是适用./gitea web ,配置以后就可以很爽的用:systemctl控制了

vi /etc/systemd/system/gitea.service

官方有提供了一份services配置文件:gitea/gitea.service at master · go-gitea/gitea (github.com)

注意:

  • WorkingDirectory配置项是工作路径得是存在且是git有权限的目录,如果不想太麻烦,可以删除...
  • ExecStart是启动命令的意思,/usr/local/bin/gitea web --config /etc/gitea/app.ini/usr/local/bin/gitea改成你自己的gitea文件的目录,我这里是/usr/local/gitea,-- config带的参数是gitea的配置文件,如果你刚刚按照我的做法去做,在gitea的同级目录下存在./custom/conf/app.ini,把这个换到后面就行了,最后就是:ExecStart=/usr/local/gitea/gitea web --config /usr/local/gitea/custom/conf/app.ini

懒人版请直接复制下面的(从头到尾和我一样的目录的)

[Unit]
Description=Gitea
After=syslog.target
After=network.target

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
ExecStart=/usr/local/gitea web --config /usr/local/gitea/custom/conf/app.ini
Restart=always

[Install]
WantedBy=multi-user.target

启动服务和设置开机启动

# 运行
systemctl start gitea
# 查看是否成功运行
ps -aux | grep gitea
# 如果成功会看到一条git用户运行的gitea进程
git       1525  9.8 12.1 1375512 227352 ?      Ssl  17:17   0:00 /git/gitea web --config /git/custom/conf/app.ini
root      1525  0.0  0.0  12324  1040 pts/0    S+   17:17   0:00 grep --color=auto gitea
# 开机启动
systemctl enable gitea

然后在自己电脑浏览器打开[ip]:3000,点击登陆初始化设置,我这边给它设置了域名和端口,所以访问变成[域名]:[端口号],完成。

CentOS下搭建Gitea-自己的git服务器

8、配置gitea

需要大家提前创建gitea数据库,其他情况根据自己需求配置即可,这一步比较简单,就不赘述。 CentOS下搭建Gitea-自己的git服务器

9、临门一脚

最后我们访问一下 CentOS下搭建Gitea-自己的git服务器

点赞
收藏
评论区
推荐文章
kenx kenx
3年前
个人博客开发之需求分析
前言回首过往从入行开发作为一个程序员,我就想要一个自己的blog了,我是一个比较爱折腾的人,刚开始了解到时候是使用第三方建站blog系统,如,WordPress,Typecho,等来搭建自己博客,然后我开始购买阿里云服务器,注册域名,搭建系统,选择主题,甚至不惜付费购买,等一切折腾弄好后,刚开始我还坚持写blog后面就放弃了,不了了之了,!!!后面过了
冴羽 冴羽
2年前
VuePress 博客优化之增加 Vssue 评论功能
前言在中,我们使用VuePress搭建了一个博客,最终的效果查看:。本篇讲讲如何使用Vssue快速的实现评论功能。主题内置因为我用的是vuepressthemereco主题,主题内置评论插件@vuepressreco/vuepressplugincomments,可以根据自己的喜好选择Valine或者Vssue。那我们来介绍下Vss
前端尾随者 前端尾随者
2年前
GitLab配置ssh key
一、背景当前很多公司都选择git作为代码版本控制工具,然后自己公司搭建私有的gitlab来管理代码,我们在clone代码的时候可以选择http协议,当然我们亦可以选择ssh协议来拉取代码。但是网上很少找到如何用git客户端生成sshkey,然后配置在gitlab,我当时在做的时候苦于摸索,后来终于找到了解决方案,那么本文,我们就来聊一聊如何本地git客户
Spring Boot集成 Sentinel 实现接口流量控制
Hello,大家好,我是麦洛,今天带大家来了解一下SpringBoot如何继承Sentinel来实现接口流量控制Sentinel控制台搭建在我的上一篇文章阿里出品的Sentinel到底是个什么玩意?中,已经介绍过如何准备Sentinel控制台,大家可以直接参考;Sentinel客户端项目搭建首先我们来创建一个测试项目,这里初始化
Stella981 Stella981
3年前
Git私服搭建
Git私服搭建一、Git服务器搭建方式GIT是一个分布式版本管理系统,既然是分布那么必定会涉及远程通信,那么GIT是采用什么协议进行远程通信?!(https://oscimg.oschina.net/oscnet/992761469d0dd3b579df0f43987a625f43b.png)
可莉 可莉
3年前
22.13 搭建git服务器
22.13搭建git服务器\\前言:\\github毕竟是公开的,而私有仓库又得花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。Gitlab是个不错的选择。在介绍它之前,先讲述一下命令行的git服务器找一台服务器,首先要安装git;yuminstallygit添加git用户
Stella981 Stella981
3年前
CentOS7 系统搭建 Gitblit 服务器
CentOS7系统搭建Gitblit服务器第一步介绍:Gitblit是一个开源的应用软件,是一个纯Java库用来管理、查看和处理Git仓库。它的设计主要是为那些想举办小型工作组集中存储库工具。官网:http://www.gitblit.com/(https://www.oschina.net/action/GoToLink?u
Stella981 Stella981
3年前
Git连接GitLab远程仓库
1、简介远程仓库是指托管在网络上的项目仓库,现在互联网上有很多项目托管平台,比如github、gitlab等。为了不公开自己项目代码,可以在自己的服务器上搭建自己的项目仓库,最常见的是搭建GitLab。本地Git与远端服务器GitLab之间连接方式主要分为:SSH方式和HTTP方式。HTTP方式:这种方式要求project在创建的时候只
Wesley13 Wesley13
3年前
Ubutun 16.04安装git服务器
GitHub就是一个免费托管开源代码的远程仓库。既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。本文演示如何使用Ubutun16.04搭建一台git服务器。搭建之前建议先aptgetupdate一下,可以避免一些错误。安装并配置gitsudoaptgeti
Linux下安装Anaconda3,这个教程一定要看!
前言大家好,我是爱写Bug的麦洛。由于工作需要,要为客户搭建Python开发环境。作为从来没有接触过Python的小白,为了完成任务,也是破费周折,请教了身边做Python的朋友,发现大家都是通过Anaconda来搭建Python环境,Ana