文章目录

  • Linux下Gitea安装和使用
  • 一、本地源码安装
  • 1. 准备环境
  • 2. 下载源码
  • 3. 编译
  • 4. 启动
  • 5. 站点配置
  • 二、本地源码 + docker mysql 安装
  • 1. 源码编译
  • 2. 创建gitea_db容器
  • 3. 启动和配置
  • 三、docker源码 + docker mysql 安装
  • 1. 创建gitea_db容器
  • 2. 创建gitea_web容器
  • 3. 访问
  • 四、docker-compose 安装
  • 1. 准备docker-compose.yml
  • 2. 下载
  • 3. 启动
  • 4. 站点配置
  • 5. 迁移(仅适用于同一cpu架构、同一系统)


Linux下Gitea安装和使用

一、本地源码安装

1. 准备环境

通过源码编译安装,需要事先安装好

  • go 1.19 或以上版本
  • node 16 或以上版本,并且安装npm
  • make:编译工具,一般系统都自带。
  • gcc:c编译工具,一般系统都自带。
    其中,node和npm安装参考我另一篇博文:
  • mysql:里面需要创建好一个新库,库名为:gitea

2. 下载源码

下载 https://github.com/go-gitea/gitea 得到gitea-main.zip

3. 编译

gitea-main.zip解压后,准备编译。
编译tags可选项:

  • bindata: bindata: 这个编译选项将会把运行Gitea所需的所有外部资源都打包到可执行文件中,这样部署将非常简单因为除了可执行程序将不再需要任何其他文件。
  • sqlite sqlite_unlock_notify: 这个编译选项将启用SQLite3数据库的支持,建议只在少数人使用时使用这个模式。
  • pam: 这个编译选项将会启用 PAM (Linux Pluggable Authentication Modules) 认证,如果你使用这一认证模式的话需要开启这个选项。

以下为我用的编译方式:

cd gitea-main
# 编译
TAGS="bindata" make build

# 交叉编译。Go 编译器支持交叉编译到不同的目标架构。
# 交叉构建适用于 Linux ARM64 的 Gitea
GOOS=linux GOARCH=arm64 TAGS="bindata" make build
# 交叉构建适用于 Linux ARM64 的 Gitea,并且带上 Gitea 发行版采用的编译选项
CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata" make build

附:
Go 支持的目标架构列表:

$GOOS

$GOARCH

linux

386

linux

amd64

linux

arm

linux

arm64

linux

loong64

linux

mips

linux

mipsle

linux

mips64

linux

mips64le

linux

ppc64

linux

ppc64le

linux

riscv64

linux

s390x

windows

386

windows

amd64

windows

arm

windows

arm64

android

386

android

amd64

android

arm

android

arm64

ios

arm64

darwin

amd64

darwin

arm64

freebsd

386

freebsd

amd64

freebsd

arm

netbsd

386

netbsd

amd64

netbsd

arm

openbsd

386

openbsd

amd64

openbsd

arm

openbsd

arm64

plan9

386

plan9

amd64

plan9

arm

aix

ppc64

dragonfly

amd64

illumos

amd64

js

wasm

solaris

amd64

编译后会生成gitea二进制文件。

4. 启动

输入

./gitea web

启动运行
打开浏览器,访问http://localhost:3000

宝塔克隆git仓库 宝塔安装gitea_linux

点击右上角“注册”可以注册账号,但初次使用会进行站点配置,如下。

5. 站点配置

宝塔克隆git仓库 宝塔安装gitea_docker_02


宝塔克隆git仓库 宝塔安装gitea_git_03


点击“立即安装”后,便可以注册账号登录使用了。

附: 另外,也可本地直接下载gitea二进制包,进行二进制安装。

二、本地源码 + docker mysql 安装

1. 源码编译

可以先将源码编译后,再连mysql,编译同上。

2. 创建gitea_db容器

# 拉取mysql8.0镜像
docker pull mysql:8.0
# 查看镜像
docker images
# 创建容器并后台运行。主机通过3307端口对应着mysql容器的3306端口
docker run -td --name gitea_db --restart=always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0

进入容器创建gitea库

# 进入容器
docker exec -it gitea_db bash
# 进入容器后:
# 登入mysql
mysql -uroot -p
# 创建新库gitea
create database gitea;

3. 启动和配置

# 启动
./gitea

浏览器访问localhost:3000,初次使用会进行配置:

宝塔克隆git仓库 宝塔安装gitea_git_04

三、docker源码 + docker mysql 安装

创建两个容器:

  • gitea_web:存放gitea项目
  • gitea_db:存放mysql
    (其实也可以采用创建一个容器、将gitea和mysql都放在一个容器里的思路,但这里采用微服务的思路。)

1. 创建gitea_db容器

# 拉取mysql8.0镜像
docker pull mysql:8.0
# 查看镜像
docker images
# 创建容器并后台运行。主机通过3307端口对应着mysql容器的3306端口
docker run -td --name mysql_db --restart=always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0

2. 创建gitea_web容器

以Ubuntu20.04环境为例。

docker pull ubuntu:20.04
# 创建容器。主机通过15000端口对应着gitea_web容器的3000端口,容器里挂载个U盘目录/volumes_usb对应着主机目录/home/user/mydocker/mnt/
docker create -it --name gitea_web -p 15000:3000 -v /home/user/mydocker/mnt/:/volumes_usb ubuntu:20.04 
docker start gitea_web

# 确保 gitea_web 和 gitea_db 容器在运行
docker ps


(配置网桥)
# 自建一个网桥customize_bridge,让gitea_web 和 gitea_db两个容器连接起来,即在同一网段,能通信
docker network create -d bridge customize_bridge
docker network connect customize_bridge gitea_web
docker network connect customize_bridge gitea_db

进入容器,并在线安装一些基本工具

# 进入容器
docker exec -it gitea_web bash
# 进入容器后:
apt update
apt install make
apt install gcc
apt install vim

cd /volumes_usb

参考本文开头章节一、源码安装,然后将准备好的gitea源码、node、npm离线文件放在主机 /home/user/mydocker/mnt/ 目录下, 以便容器可通过 /volumes_usb 目录找到使用,接下来操作过程同本文开头章节一、源码安装
这时候编译可以自定义cpu和系统环境了
编译成功后会生成gitea二进制文件,但gitea二进制文件不支持用root执行,所以需要新建用户

# 进入容器
docker exec -it gitea_web bash
# 进入容器后:
# 创建新用户user
adduser user
# 更换gitea项目文件的所有者,以便能操作
chown user:user -R /路径/gitea-main
# 切换新建的user用户
su user
cd gitea-main
./gitea

3. 访问

主机访问localhost:15000,最后站点配置如下:

宝塔克隆git仓库 宝塔安装gitea_linux_05

四、docker-compose 安装

1. 准备docker-compose.yml

在自定义目录下新建 docker-compose.yml 文件,如在/home/user/mydocker/docker_gitea 下新建:
docker-compose.yml

version: "2"
  
networks:
    gitea:
        external: false

services:
    server:
        container_name: gitea_server
        image: gitea/gitea:latest
        environment:
            - USER_UID=1000
            - USER_GID=1000
        restart: always
        networks:
            - gitea
        volumes:
            - ./data:/data
        ports:
            - "15000:3000"
            - "10022:22"
        depends_on:
            - db

    db:
        container_name: gitea_db
        image: mysql:8.0
        restart: always
        environment:
            - MYSQL_ROOT_PASSWORD=gitea
            - MYSQL_USER=gitea
            - MYSQL_PASSWORD=gitea
            - MYSQL_DATABASE=gitea
        networks:
            - gitea
        volumes:
            - ./mysql:/var/lib/mysql

此功能是创建两个容器:gitea_server、gitea_db

  • gitea_server:存放gitea项目及应用,容器里gitea web端口为3000,对应外边宿主机的访问端口为15000
  • gitea_db:存放mysql
    mysql信息

用户

密码

root

gitea

gitea

gitea

mysql库:gitea

2. 下载

cd /home/user/mydocker/docker_gitea/
docker-compose up # 或 docker-compose up -d

下载后会在 /home/user/mydocker/docker_gitea/ 目录下自动生成 datamysql 文件夹。

3. 启动

cd /home/user/mydocker/docker_gitea/

# 启动
docker-compose start
####### 或者 #######
docker start gitea_server 
docker start gitea_db

# 停止
docker-compose stop
####### 或者 #######
docker stop gitea_server 
docker stop gitea_db

启动后打开浏览器,访问http://localhost:15000

宝塔克隆git仓库 宝塔安装gitea_linux

点击右上角“注册”可以注册账号,但初次使用会进行站点配置,如下。

4. 站点配置

宝塔克隆git仓库 宝塔安装gitea_git_07

点击“立即安装”后,便可以注册账号登录使用了。

5. 迁移(仅适用于同一cpu架构、同一系统)

因为此法docker-compose.yml 安装的是根据当前环境自动编译好的gitea二进制文件,所以迁移时仅适用于同一cpu架构、同一系统。如果想适用于其他环境的,需要输入编译参数手动编译。参考下面第三节
迁移到其他服务器呢?

# 当前服务器,保存
docker commit gitea_server gitea:v1
docker commit gitea_db gitea_db:v1
docker save -o ./gitea.tgz gitea:v1
docker save -o ./gitea_db.tgz gitea_db:v1

# 另一台服务器,导入
docker load -i gitea.tgz
docker load -i gitea_db.tgz
docker create -it --name gitea_db mysql:8.0