gitea 安装,替代gitlab-ce
说到gitlab-ce大家都不陌生,但gitlab-ce的本体的资源占用的确是有点高,或者说有点浪费。由于架构的问题,在内存占用上完全败于国人开发的gitea。
本文将简单介绍如何启动一个gitea,gitea提供了多种形式的安装方式,有源码部署,服务部署,二进制部署与docker部署,本文介绍的为二进制部署与docker部署两种方式。
wget -O gitea https://dl.gitea.io/gitea/1.15.9/gitea-1.15.9-linux-amd64 chmod +x gitea cp gitea /usr/local/bin/gitea
验证下载的文件数字签名
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 gpg --verify gitea-1.15.9-linux-amd64.asc gitea-1.15.9-linux-amd64
返回值为
Good signature from "Teabot <[email protected]>"
则签名正确,这个二进制文件可以被安全的执行。
查看本机有无安装git,如果没有安装可能需要安装一下或手动在系统上创建一个git用户,这个用户名可以随意,用于运行这个gitea二进制文件。为安全考虑请不要使用root账户运行gitea文件!
adduser \ --system \ --shell /bin/bash \ --gecos 'Git Version Control' \ --group \ --disabled-password \ --home /home/git \ git
创建二进制文件运行时所需的文件目录结构
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea需要注意的是/etc/gitea目录为了安装部署程序文件暂时被设置成了770权限,当安装结束后,需更改它的权限以便更安全的运行
chmod 750 /etc/gitea chmod 640 /etc/gitea/app.ini
在bash下直接输入
export GITEA_WORK_DIR=/var/lib/gitea/
创建一个服务文件
cd /etc/systemd/system/ wget systemctl enable gitea systemctl start gitea systemctl enable gitea --now
使用supervisor
yum install supervisor mkdir /home/git/gitea/log/supervisor
创建一个supervisor配置文件
vi /etc/supervisor/supervisord.conf 在配置文件中输入如下内容: [program:gitea] directory=/home/git/go/src/github.com/go-gitea/gitea/ command=/home/git/go/src/github.com/go-gitea/gitea/gitea web autostart=true autorestart=true startsecs=10 stdout_logfile=/var/log/gitea/stdout.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/var/log/gitea/stderr.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB user = git environment = HOME="/home/git", USER="git" 保存后 systemctl enable supervisor systemctl start supervisor systemctl enable supervisor --now
gitea的部署就完成了,可以使用默认的3000端口访问到它的安装界面,数据库可以选用mysql或postgresql。
下面是docker部署的方法,相较二进制部署简单许多,前提是你已安装docker与docker-compose,创建一个docker-compose.yml文件
version: "3" networks: gitea: external: false services: server: image: gitea/gitea:latest container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=db:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea restart: always networks: - gitea volumes: - ./site:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro - ./git-7doc-cn.crt:/data/git.crt - ./git-7doc-cn.key:/data/git.key ports: - "3000:3000" - "222:22" depends_on: - db db: image: mysql:8 restart: always environment: - MYSQL_ROOT_PASSWORD=gitea - MYSQL_USER=gitea - MYSQL_PASSWORD=gitea - MYSQL_DATABASE=gitea networks: - gitea volumes: - ./mysql:/var/lib/mysql
直接运行配置文件即可下载最新版的gitea并部署一个mysql,访问宿主机的3000端口即可打开安装界面。
更多的gitea部署方式与配置文件详解,技术信息请参考官方文档页面
Documentation - Docs (gitea.io)
附:gitea的库备份
使用docker运行时gitea运行在容器中,可以使用如下命令备份当前整个gitea的内容和配置
docker exec -u git -it -w /tmp $(docker ps -qf "name=gitea") bash -c '/app/gitea/gitea dump -c /data/gitea/conf/app.ini'
-u git 为当前容器中运行gitea的用户,这个用户在配置文件app.ini的RUN_USER定义着
-w 为执行下列bash命令的目录,这个目录是指容器中有的目录,可以在容器运行初直接指定一个挂载目录backup专门用于备份存档,默认使用/tmp
/app/gitea/gitea 是默认容器版二进制文件所在的位置
/data/gitea/conf/app.ini 是默认容器版配置文件所在位置
执行命令后,会在容器内 -w 指定的目录下生成压缩包备份文件
16:08:42 cmd/dump.go:223:runDump() [I] Dumping local repositories... /data/git/repositories 16:09:03 cmd/dump.go:267:runDump() [I] Dumping database... 16:09:03 cmd/dump.go:279:runDump() [I] Adding custom configuration file from /data/gitea/conf/app.ini 16:09:03 cmd/dump.go:295:runDump() [I] Custom dir /data/gitea is inside data dir /data/gitea, skipped 16:09:03 cmd/dump.go:307:runDump() [I] Packing data directory.../data/gitea 16:09:03 cmd/dump.go:377:runDump() [I] Finish dumping in file gitea-dump-1641802122.zip
可以看到最终成功打包了一个压缩文件,然后使docker cp从容器中复制出来即可
docker cp gitea:/tmp/gitea-dump-1641802122.zip /tmp/
注意,如果使用挂载目录的方式获取备份文件,docker exec的执行可能会提示权限错误,具体请见官方文档中关于docker备份的描述。