文章目录
- 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
点击右上角“注册”可以注册账号,但初次使用会进行站点配置,如下。
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信息
用户 | 密码 |
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/
目录下自动生成 data
和 mysql
文件夹。
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