引言
Gitea 是一个功能齐全的轻量级代码托管解决方案,后端采用 Go 编写,使用 MIT 许可证发布。它比 GitLab 更资源友好,互联网上许多知名开源项目依赖 Gitea 提供代码托管。
在本指南中,我们将演示如何在 FreeBSD 12 服务器上安装 Gitea。
先决条件
在开始本指南之前,您需要一个运行中的 FreeBSD 的服务器。本指南专门针对运行 FreeBSD 12 的服务器编写,尽管它也适用于受支持的旧操作系统版本。
如果您是 FreeBSD 的新手,您可以从 FreeBSD Documentation 获得服务器入门帮助。
此外,如果您计划为此服务器设置域名,则需要以下内容:
- 您注册和控制的域名。如果您还没有注册域名,您可以在众多域名注册商之一(例如 阿里云、腾讯云 等)注册一个。
- 将您的域指向服务器的公共 IP 地址的 DNS
A
记录。
第1步 - 安装 Git
首先,我们使用 pkg
FreeBSD 内置的二进制包管理工具安装 git
和 git-lfs
。以下命令将更新可用包的本地副本,然后安装 git
包:
pkg install git git-lfs
如果这是您第一次运行 pkg
,它会询问您是否安装 pkg
。此时,请输入 y
并按下 ENTER
来确认安装 pkg
。然后,再向您询问是否安装 git
软件包。
如果您使用的是 csh
或 tcsh
shell,请在安装新软件后运行 rehash
命令。这使 shell 能查询到您新安装的应用程序:
rehash
第2步 - 下载 Gitea
1.下载预编译的 FreeBSD 二进制程序包:
wget https://dl.gitea.io/gitea/1.18.3/gitea-1.18.3-freebsd12-amd64
2.将 gitea
移动到 /usr/local/bin
作为命令行工具:
mv gitea-*-freebsd12-amd64 /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea
第3步 - 创建用户
1.使用 adduser
创建一个独立的系统账号 git
用于托管 Gitea 程序:
adduser
2.继续在交互式命令工具中创建账号,可将账号设置为不使用密码。
[root@freebsd ~]# adduser
Username: git
Full name:
Uid (Leave empty for default):
Login group [git]:
Login group is git. Invite git into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash git-shell nologin) [sh]:
Home directory [/home/git]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Username : git
Password : <disabled>
Full Name :
Uid : 1002
Class :
Groups : git
Home : /home/git
Home Mode :
Shell : /bin/sh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (git) to the user database.
Add another user? (yes/no): no
Goodbye!
第4步 - 启动服务
1.创建工作文件夹:
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea
chmod -R 750 /var/lib/gitea
2.编写 rc 启动脚本 /usr/local/etc/rc.d/gitea
:
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: gitea
# REQUIRE: NETWORKING SYSLOG
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable gitea:
#
# gitea_enable="YES"
#
# https://github.com/go-gitea/gitea/blob/main/contrib/init/freebsd/gitea
. /etc/rc.subr
name="gitea"
rcvar="gitea_enable"
load_rc_config $name
: ${gitea_user:="git"}
: ${gitea_enable:="NO"}
: ${gitea_directory:="/var/lib/gitea"}
command="/usr/local/bin/gitea web"
procname="$(echo $command |cut -d' ' -f1)"
pidfile="${gitea_directory}/${name}.pid"
start_cmd="${name}_start"
stop_cmd="${name}_stop"
gitea_start() {
cd ${gitea_directory}
export USER=${gitea_user}
export HOME=/home/${gitea_user}
export GITEA_WORK_DIR=${gitea_directory}
/usr/sbin/daemon -f -u ${gitea_user} -p ${pidfile} $command
}
gitea_stop() {
if [ ! -f $pidfile ]; then
echo "GITEA PID File not found. Maybe GITEA is not running?"
else
kill $(cat $pidfile)
fi
}
run_rc_command "$1"
3.编辑 rc 脚本权限
chmod 755 /usr/local/etc/rc.d/gitea
4.启动服务:
sysrc 'gitea_enable=YES'
service gitea start