之前的文章介绍了通过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_port
和ssh_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初始化就可以使用了