写点什么

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

  • 2022-10-17
    甘肃
  • 本文字数:2256 字

    阅读完需:约 1 分钟

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

前言

Gitea 是什么

官网的介绍是:


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


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


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

常见 git 管理工具对比

我为什么选择 Gitea

  1. 功能基本满足我的需求

  2. 需要的机器性能不高,官方建议是 2 核 CPU 及 1GB 内存,我自己跑 1 核 1GB 有点小慢(故而以下教程是买了一个 2GB 去跑的)

  3. GitLab 太重了,Gogs 不怎么维护了,Gitea 还在不断地前行,值得推荐

Gitea 安装


根据官网,目前提供了以上的安装方式,我这边选择二进制安装,应该也是最简单的方式了。下面都是在 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,可以看到全部版本,最上面的就是最新的,选择你要的版本。



点击进入你要的版本找到后缀是 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=GiteaAfter=syslog.targetAfter=network.target
[Service]RestartSec=2sType=simpleUser=gitGroup=gitExecStart=/usr/local/gitea web --config /usr/local/gitea/custom/conf/app.iniRestart=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.iniroot      1525  0.0  0.0  12324  1040 pts/0    S+   17:17   0:00 grep --color=auto gitea# 开机启动systemctl enable gitea
复制代码


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


8、配置 gitea

需要大家提前创建 gitea 数据库,其他情况根据自己需求配置即可,这一步比较简单,就不赘述。


9、临门一脚

最后我们访问一下



发布于: 刚刚阅读数: 3
用户头像

与其等待未来,不如创造未来 2020-04-10 加入

微信搜一搜"爱写Bug的麦洛" 公众号关注我,我们一起写bug

评论

发布
暂无评论
CentOS下搭建Gitea-自己的git服务器_git_爱写Bug的麦洛_InfoQ写作社区