2

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

 1 year ago
source link: https://server.51cto.com/article/720344.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

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

Gitea是什么

官网的介绍是:

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

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

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

常见git管理工具对比

图片

我为什么选择Gitea

功能基本满足我的需求

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

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

Gitea安装

图片

image-20220924182825278

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

打开页面: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.ini的ROOT_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,点击登陆初始化设置,我这边给它设置了域名和端口,所以访问变成[域名]:[端口号],完成。

图片

8、配置gitea

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

图片

9、临门一脚

最后我们访问一下。

图片

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK