之前的文章介绍了通过Docker或者yum方式部署了gitlab,但是对于小团队或者个人来说gitlab有些臃肿,而且启动以后比较耗费资源,所以这里介绍一个相对于gitlab来说更轻量化的git仓库–gitea,本文介绍两种部署方式,分别是Docker和源码(较麻烦不推荐)方式,部署过程均基于官方文档给予的部署方案,并进行了稍加更改,以方便部署

Docker方式部署

创建持久化目录

cd /opt
mkdir gitea && cd gitea

创建docker compose文件

vim docker-compose.yml

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=mysql
      - DB_HOST=db:3306
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
       - "3000:3000"
       - "3022: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

如果没有安装docker compose ,可以先安装

#创建目录
mkdir -p /usr/local/lib/docker/cli-plugins

#下载
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose

#加可执行权限
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

#测试
docker compose version
#docker compose 代替了 docker-compose 命令 。 docker-compose命令是 v1版的命令

然后启动容器

docker compose up -d

等待镜像拉取完成访问宿主机IP+3000端口进行初始化,因为我们在compose 文件中都已设置好初始变量,所以这里不用做任何更改,我们需要更改ssh服务的域名为服务器的公网ip,通知基础url的前缀也更改为服务器的公网ip,不然默认为loaclhost

管理员设置这里创建一个管理员用户即可,然后点击安装

由于我们将主机的3022端口映射到gitea容器中的22端口,因此我们将app.ini中的ssh_portssh_listen_port修改为3022端口,在compose文件中配置了持久化目录,所以直接修改/opt/gitea/gitea/gtiea/conf/app.ini

vim /opt/gitea/gitea/gitea/conf/app.ini

[server]
APP_DATA_PATH    = /data/gitea
DOMAIN           = 114.116.8.251
SSH_DOMAIN       = 114.116.8.251
HTTP_PORT        = 3000
ROOT_URL         = http://114.116.8.251:3000/
DISABLE_SSH      = false
SSH_PORT         = 3022
SSH_LISTEN_PORT  = 3022
LFS_START_SERVER = true
LFS_CONTENT_PATH = /data/git/lfs
LFS_JWT_SECRET   = KuRyKWc3PA8GqNR2n7_3uOPqzLlk8y9fH-Lg8s2dhMI
OFFLINE_MODE     = false

改完成后我们通过docker compose restart命令重启一下gitea容器

到这里Docker方式部署gtiea就已经完成了,使用方式和gitlab一样,不过相较于gitlab更轻量化、更简洁

源码方式部署(不推荐)

安装前需要提前安装好go、node.js、make环境,并提前安装好MySQL,相对来说比较麻烦,如果不想用Docker部署推荐使用二进制+MySQL方式部署,本文末尾有介绍

安装go环境

下载go的二进制包

#将安装包都放在一个目录里
mkdir /opt/install && cd /opt/install
#下载
wget -L https://go.dev/dl/go1.18.4.linux-amd64.tar.gz
#解压
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz
#添加进环境变量里
vim /etc/profile
#在最下面添加变量
export PATH=$PATH:/usr/local/go/bin
#加载 
source /etc/profile
#测试
go version
安装node.js环境

下载二进制包

#下载
wget -L https://nodejs.org/dist/v16.16.0/node-v16.16.0-linux-x64.tar.xz
#解压
tar -xJvf node-v16.16.0-linux-x64.tar.xz -C /usr/local/lib/
#重命名文件夹
cd /usr/local/lib/ 
mv /usr/local/lib/node-v16.16.0-linux-x64 node
#添加到环境变量
vim /etc/profile
#在最下面添加
export PATH=:$PATH:/usr/local/lib/node/bin
#Go module 加速 Goproxy
go env -w GO111MODULE=auto
go env -w GOPROXY=https://goproxy.cn,direct
#测试
node -v
npm version

将源码克隆下来

#创建目录
mkdir /opt/gtiea && cd /opt/gitea
#官方文档提供的方式,不过我试了下载不了,提示github访问异常
go get -d -u code.gitea.io/gitea
#也可通过git直接克隆
git clone https://github.com/go-gitea/gitea
#gitee镜像(国内的话推荐)
git clone https://gitee.com/mirrors/gitea

克隆完成后,进行编译

#进入源码目录
cd gitea
#安装依赖
npm install
#配置加速
go env -w GO111MODULE=auto
go env -w GOPROXY=https://goproxy.cn,direct
#写入环境变量
echo "export GO111MODULE=on" >> /etc/profile
echo "export GOPROXY=https://goproxy.cn" >> /etc/profile
source /etc/profile
#编译(这一步用时较久)
TAGS="bindata" make backend
#编译完成后启动即可(不要使用root启动,会报错,可以创建一个普通用户)
./gitea web

启动完成后初始化方式就和Docker一样了,不过需要手动配置Mysql地址,可自己单独安装(可参考我的一键安装脚本)或者使用Docker部署,初始化完成后源码方式部署gitea就已经基本完成了,如果实际使用的人不多建议还是用Docker Compose方式部署更方便一些,或者使用二进制方式部署(相对于源码方式来说,比较推荐二进制方式部署)

#下载
wget -O gitea https://dl.gitea.io/gitea/1.16.9/gitea-1.16.9-linux-amd64
#修改权限
chmod +x gitea
#放到/user/loacl下
mkdir /user/loacl/gitea && mv gitea /user/loacl/gitea && cd /user/loacl/gitea
#启动
./gitea web

配置系统托管

vim /etc/systemd/system/gitea.service

[Unit]
Description=Gitea (Git with a cup of tea)
    
[Service]
User=gitea
ExecStart=/usr/local/gitea/gitea web
Restart=on-abort
    
[Install]
WantedBy=multi-user.target

配置目录

mkdir -p /usr/local/gitea/{data,log,custom}
mkdir -p /usr/local/gitea/data/{gitea-repositories,lfs}

重新加载并启动

#重新加载
systemctl daemon-reload
#启动
systemctl start gitea

接着访问IP端口3000初始化就可以使用了

官方文档