debian12部署Gitea服务

首先安装git、wget、sqlite,然后进行用户和组的相关设置

复制代码
sudo apt install -y git wget sqlite3
新增一个git用户与一个git组
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
给git用户设置密码
sudo passwd git
将当前用户加入到git组
sudo usermod -a -G git [username]
将当前用户切换到git组
newgrp git

关于下载gitea的二进制文件,有如下两种方案:

方案一,网络情况良好的情况:

使用wget从github下载gitea二进制文件(一定要注意下载与自己平台对应的版本)

复制代码
wget -O gitea https://github.com/go-gitea/gitea/releases/download/v1.21.3/gitea-1.21.3-linux-amd64
sudo mv gitea /usr/local/bin
sudo chmod +x /usr/local/bin/gitea

方案二,网络情况不好的情况:

使用在别的地址下载好的gitea二进制文件,上传到debian系统上:

首先创建一个文件夹用来放gitea的二进制文件,路径随意:

复制代码
mkdir /mnt/HuHDD/Git/GiteaInstallFile

然后将另外一台主机下载的gitea文件上传到上面的路径下,需要先退出ssh远程,然后使用cd命令将位置重定向到本地下载的gitea文件的位置:

我这里是用PowerShell,所以直接用资源管理器找到文件位置,然后直接在地址栏输入powershell并回车,就直接定位到当前的文件夹位置了:

然后使用以下命令上传:

复制代码
scp gitea-1.21.3-linux-amd64 hu@192.168.124.6:/mnt/HuHDD/Git/GiteaInstallFile

修改gitea文件的执行权限

复制代码
sudo chmod +x gitea-1.21.3-linux-amd64
重命名
sudo mv gitea-1.21.3-linux-amd64 gitea
移动到这里
sudo mv gitea /usr/local/bin

创建部署gitea所需的目录结构

复制代码
sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}

修改目录的权限

复制代码
sudo chown git:git /var/lib/gitea/
sudo chown git:git /var/lib/gitea/{custom,data,indexers,public,log}
sudo chmod 754 /var/lib/gitea/
sudo chmod 754 /var/lib/gitea/{custom,data,indexers,public,log}
注:八进制754即二进制111101100,每三位为一组,分别代表着创建者、所在组、其他人这三者的读取、写入、执行权限。

在etc创建文件夹

复制代码
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

下载Gitea提供已配置的Systemd Unit文件

依旧是根据网络情况分为两种方案

方案一

复制代码
sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/

方案二

复制代码
直接往etc目录上传可能会因为没有权限而失败,所以先上传到一个有权限的目录:
scp gitea.service hu@192.168.124.6:/mnt/HuHDD/Git/GiteaInstallFile
然后再将文件移动到etc文件夹
sudo mv gitea.service /etc/systemd/system

重新加载Systemd,启动gitea服务

复制代码
sudo systemctl daemon-reload
sudo systemctl start gitea
sudo systemctl enable gitea
sudo systemctl status gitea

配置Gitea

现在我们成功运行Gitea,是时候通过Web界面完成安装。默认情况下,Gitea监听所有接口在端口3000的连接。

如果您debian正在运行运行UFW防火墙,则需要打开Gitea端口。允许端口3000的连接。运行命令

复制代码
sudo ufw allow 3000/tcp

创建存放仓库的目录,当然如果你的默认路径容量够大就不用创建了,我这里创建到了一个大硬盘上

复制代码
mkdir /mnt/HuHDD/Git/Gitea/Repo
mkdir /mnt/HuHDD/Git/Gitea/lfs
修改所有者
sudo chown git:git /mnt/HuHDD/Git/Gitea
sudo chown git:git /mnt/HuHDD/Git/Gitea/{Repo,lfs}
修改权限
sudo chmod 774 /mnt/HuHDD/Git/Gitea
sudo chmod 774 /mnt/HuHDD/Git/Gitea/{Repo,lfs}

添加客户机公钥到Gitea服务器,在客户机生成密钥对,找到公钥,用文本方式打开,复制其中内容,然后在以下界面添加到Gitea服务器中:

添加成功之后,在debian系统上执行以下命令可以看到如下输出:

sudo cat /home/git/.ssh/authorized_keys

gitea public key

command="/usr/local/bin/gitea --config=/etc/gitea/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCmDS+M1Q7mhBF7FYy1RZTg9gxHaKcIxNaa5dQJgvosRgyuouJoC/qHiAVT8/FXkfj7jlBeUvEww7QWttBf4n3nqe4x7fkBgNuKDO+6fnYHMN88msJfn6IKbyttYRuU1ccvkDkdOJ+beEpFBkSEqzhs9MjWK+gYMTv+hdw6DK7uG7GskibRkXvFWZczmOx+slZKtUk5AVKDGKtVgO3CVZ2SbPIHzlnKllaCyHhEGNnZx9PDD7qEZMWvFcl5YgtanpB/kuKqMKoYL/WfiGmnivprMS0t1wO0IWYas/bi2s8NbBXH35DJCAFcSAdkiOj3MpoinFLSuktCVone+eAxOmEZfOB6IezyQKq6QqpwVcA9heO3oVdxeNNZLCNBXY9YWAEUaPf1FDKVSCEMa80EaKzOtZpNQ8/c4FpWjfgLDDu7D7Kr2hTLMOXdNVKXbxVI8PkT93Xo2c7VY8yLuTsXTFGihPbTnIKZC9y0d+n4l7gg0bALyciBVqxzRrSEk2C6+0k= hu@DESKTOP-RV4GAAP

上面红色的部分就是基于ssh调用gitea服务的关键,我们可以发现其实原理就是一个ssh command映射,当ssh识别到当前的连接客户端为咱们通过gitea注册公钥的客户端时,就会通过这个command找到gitea的可执行文件,然后就可以让gitea接手shell的工作了。

这也就解释了为什么我们通过gitea生成的sshUrl就能进行gitea的相关操作,因为gitea生成的仓库路径完全是相对路径,如果是shell进行命令处理的话,它肯定是无法通过这个url找到仓库的。

gitea生成的仓库路径示例:git@192.168.124.6:hu/TestRepo.git

相关推荐
木亦汐丫2 天前
Docker 镜像版本Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie
运维·docker·容器·debian·alpine·slim·bullseye
天朝八阿哥5 天前
关于xfce4-pulseaudio-plugin中文翻译的bug
linux·debian
一文解千机8 天前
Termux Debian Arm64 源码编译安装坚果云,全平台同步笔记内容(也适用树莓派)
debian·termux·arm64·手机服务器·坚果云arm64·源码编译坚果云·termux坚果云
yy_xzz16 天前
Debian开发板TQ3658设置日期和时间显示 配置无法装入 发生未知的错误
运维·debian
1024find19 天前
Docker安装(Centos/Ubuntu/UOS)
ubuntu·docker·centos·debian
长不大的程序员20 天前
Linux系统-debian系的软件包管理
linux·运维·服务器·debian
IT曙光20 天前
Debian安装PVE
运维·debian
phangle201521 天前
关于debian老系统安装软件失败的问题
debian·老系统版本·apt安装
error:(21 天前
【Linux命令从入门到精通系列指南】apt 命令详解:Debian/Ubuntu 系统包管理的现代利器
linux·ubuntu·debian
java1234_小锋22 天前
Zookeeper脑裂是什么原因导致的?
分布式·zookeeper·debian