Linux下Gitea安装和使用

一、本地源码安装

1. 准备环境

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

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
linux386
linuxamd64
linuxarm
linuxarm64
linuxloong64
linuxmips
linuxmipsle
linuxmips64
linuxmips64le
linuxppc64
linuxppc64le
linuxriscv64
linuxs390x
windows386
windowsamd64
windowsarm
windowsarm64
android386
androidamd64
androidarm
androidarm64
iosarm64
darwinamd64
darwinarm64
freebsd386
freebsdamd64
freebsdarm
netbsd386
netbsdamd64
netbsdarm
openbsd386
openbsdamd64
openbsdarm
openbsdarm64
plan9386
plan9amd64
plan9arm
aixppc64
dragonflyamd64
illumosamd64
jswasm
solarisamd64

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

4. 启动

输入

./gitea web

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

在这里插入图片描述点击右上角“注册”可以注册账号,但初次使用会进行站点配置,如下。

5. 站点配置

在这里插入图片描述
在这里插入图片描述
点击“立即安装”后,便可以注册账号登录使用了。
附: 另外,也可本地直接下载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,初次使用会进行配置:
在这里插入图片描述

三、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,最后站点配置如下:
在这里插入图片描述

四、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信息
用户密码
rootgitea
giteagitea

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
在这里插入图片描述点击右上角“注册”可以注册账号,但初次使用会进行站点配置,如下。

4. 站点配置

在这里插入图片描述

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

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

更多使用功能参考官方手册:https://docs.gitea.io/zh-cn/install-from-source/

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐