1. 首页 > 软件安装教程 > 正文

Gitea安装配置-Gitea代码仓库安装配置_升级迁移详细过程

1. Gitea概述与环境规划

Gitea是一个轻量级的开源代码仓库管理工具,提供代码托管、CI/CD、问题跟踪等功能。Gitea支持Git版本控制系统,是中小型团队的理想选择。更多学习教程www.fgedu.net.cn

1.1 Gitea版本说明

Gitea目前主要版本为1.20.x系列,本教程以Gitea 1.20.0为例进行详细讲解。Gitea 1.20.x版本相比之前版本在性能、稳定性和功能方面都有显著提升,支持更多的代码仓库管理特性。

# 查看Gitea版本
$ /usr/local/bin/gitea –version

# 查看系统版本
$ cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″

# 查看内核版本
$ uname -r
5.4.17-2136.302.7.2.el8uek.x86_64

1.2 环境规划

本次安装环境规划如下:

Gitea服务器:
gitea01.fgedu.net.cn (192.168.1.132) – Gitea主服务器
gitea02.fgedu.net.cn (192.168.1.133) – Gitea备用服务器

Gitea版本:1.20.0
安装方式:二进制安装
数据库:PostgreSQL 14.0

2. 硬件环境要求

Gitea作为轻量级代码仓库管理工具,对硬件资源要求较低,适合中小型团队使用。学习交流加群风哥微信: itpux-com

2.1 物理主机环境要求

# Gitea服务器要求
– CPU:至少2核
– 内存:至少4GB
– 磁盘:系统盘120GB SSD + 数据盘500GB SSD

# 检查Gitea服务器资源
# free -h
total used free shared buff/cache available
Mem: 4G 1.4G 2.1G 64M 512M 2.4G
Swap: 2G 0B 2G

# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 120G 20G 100G 17% /
/dev/sdb1 500G 50G 450G 10% /data

生产环境建议:Gitea服务器至少2个,实现高可用。建议使用SSD存储以提高I/O性能。网络带宽建议1Gbps以上,以支持代码上传和下载。

2.2 vSphere虚拟主机环境要求

虚拟机配置:
– Gitea服务器:
– vCPU:2核
– 内存:4GB
– 磁盘:系统盘120GB SSD + 数据盘500GB SSD
– 网络:VMXNET3网卡,1Gbps网络

资源池配置:
– CPU预留:1GHz
– 内存预留:2GB
– 内存限制:4GB
– CPU份额:正常
– 内存份额:正常

2.3 云平台主机环境要求

云主机规格(阿里云/腾讯云/华为云):
– Gitea服务器:
– 实例规格:ecs.g6.xlarge或同等规格
– vCPU:4核
– 内存:8GB
– 系统盘:SSD云盘 120GB
– 数据盘:SSD云盘 500GB
– 网络带宽:1Gbps以上

存储配置:
– OSS对象存储:用于存储备份数据
– NAS文件存储:用于共享配置文件
– 云盘快照:定期备份数据

3. 操作系统环境准备

在安装Gitea之前,需要对操作系统进行必要的配置和优化。

3.1 操作系统版本检查

# 检查操作系统版本
# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″

# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64

# 检查SELinux状态
# getenforce
Enforcing

# 检查防火墙状态
# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)

3.2 依赖服务安装

# 安装依赖包
# dnf install -y wget curl tar gzip git

# 关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld

# 关闭SELinux
# setenforce 0
# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

# 创建Gitea用户
# useradd -r -s /bin/false git

# 创建目录结构
# mkdir -p /data/gitea/{config,bin,data}
# chown -R git:git /data/gitea

3.3 配置网络

# 配置静态IP
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.132
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114

# 重启网络
# systemctl restart NetworkManager

# 验证网络
# ping -c 4 google.com

# 配置主机名
# hostnamectl set-hostname gitea01.fgedu.net.cn

# 配置hosts文件
# vi /etc/hosts
192.168.1.132 gitea01.fgedu.net.cn gitea01
192.168.1.133 gitea02.fgedu.net.cn gitea02

4. Gitea安装配置

完成环境准备后,开始安装Gitea。

4.1 安装PostgreSQL

# 添加PostgreSQL仓库
# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装PostgreSQL
# dnf install -y postgresql14 postgresql14-server

# 初始化PostgreSQL
# /usr/pgsql-14/bin/postgresql-14-setup –initdb

# 启动PostgreSQL服务
# systemctl start postgresql-14
# systemctl enable postgresql-14

# 验证PostgreSQL状态
# systemctl status postgresql-14

# 创建Gitea数据库和用户
# su – postgres
$ psql
postgres=# CREATE USER gitea WITH PASSWORD ‘password’;
postgres=# CREATE DATABASE gitea OWNER gitea;
postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
postgres=# \q
$ exit

4.2 安装Gitea

# 下载Gitea
# wget https://dl.gitea.io/gitea/1.20.0/gitea-1.20.0-linux-amd64

# 移动Gitea到指定位置
# mv gitea-1.20.0-linux-amd64 /usr/local/bin/gitea

# 设置执行权限
# chmod +x /usr/local/bin/gitea

# 创建Gitea目录结构
# mkdir -p /data/gitea/{custom,data,log}
# chown -R git:git /data/gitea

# 配置Gitea服务
# vi /etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target postgresql-14.service

[Service]
Type=simple
User=git
WorkingDirectory=/data/gitea
ExecStart=/usr/local/bin/gitea web –config /data/gitea/custom/conf/app.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 启动Gitea服务
# systemctl start gitea
# systemctl enable gitea

# 验证服务状态
# systemctl status gitea

4.3 初始化Gitea

# 访问Gitea Web界面
# 打开浏览器访问 http://gitea01:3000

# 完成初始化向导
# 1. 数据库设置
# – 数据库类型:PostgreSQL
# – 主机:localhost:5432
# – 数据库名:gitea
# – 用户名:gitea
# – 密码:password
# 2. 基本设置
# – 站点名称:Gitea
# – 仓库根目录:/data/gitea/data/gitea-repositories
# – 运行用户:git
# – SSH端口:22
# – HTTP端口:3000
# – 基本URL:http://gitea01:3000
# 3. 管理员账户设置
# – 用户名:admin
# – 密码:设置密码
# – 邮箱:admin@fgedu.net.cn
# 4. 完成初始化

5. Gitea配置优化

为了提高Gitea的性能和稳定性,需要进行一些配置优化。

5.1 基本配置优化

# 编辑Gitea配置文件
# vi /data/gitea/custom/conf/app.ini
[server]
APP_DATA_PATH = /data/gitea/data
DOMAIN = gitea01.fgedu.net.cn
HTTP_PORT = 3000
ROOT_URL = http://gitea01.fgedu.net.cn:3000/

[database]
DB_TYPE = postgres
HOST = localhost:5432
NAME = gitea
USER = gitea
PASSWD = password

[repository]
ROOT = /data/gitea/data/gitea-repositories

[security]
SECRET_KEY = your_secret_key

# 重启Gitea服务
# systemctl restart gitea

5.2 高可用配置

# 配置Gitea集群
# 1. 安装Gitea到所有节点
# 2. 配置共享数据库
# 3. 配置负载均衡

# 配置负载均衡
# 编辑Nginx配置
# vi /etc/nginx/nginx.conf
upstream gitea {
server 192.168.1.132:3000;
server 192.168.1.133:3000;
}

server {
listen 80;
server_name gitea.fgedu.net.cn;

location / {
proxy_pass http://gitea;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

6. Gitea数据库配置

Gitea使用PostgreSQL数据库存储配置和代码仓库信息。

6.1 配置PostgreSQL

# 编辑PostgreSQL配置文件
# vi /var/lib/pgsql/14/data/postgresql.conf
max_connections = 100
shared_buffers = 1GB
work_mem = 16MB
maintenance_work_mem = 512MB
effective_cache_size = 3GB

# 重启PostgreSQL服务
# systemctl restart postgresql-14

# 验证PostgreSQL配置
# su – postgres
$ psql
postgres=# SHOW max_connections;
postgres=# SHOW shared_buffers;
postgres=# \q
$ exit

6.2 优化PostgreSQL

# 编辑PostgreSQL配置文件
# vi /var/lib/pgsql/14/data/postgresql.conf
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 10min
autovacuum_vacuum_scale_factor = 0.1
autovacuum_analyze_scale_factor = 0.05

# 重启PostgreSQL服务
# systemctl restart postgresql-14

7. Gitea安全配置

Gitea提供了多种安全功能,包括用户认证、授权、TLS加密等。

7.1 认证配置

# 登录Gitea Web界面
# 打开浏览器访问 http://gitea01:3000

# 创建用户
# 1. 点击顶部菜单 “管理员” -> “用户管理” -> “创建用户”
# 2. 填写用户信息
# – 用户名:developer
# – 邮箱:developer@fgedu.net.cn
# – 密码:设置密码
# – 全名:Developer
# – 权限:普通用户
# 3. 点击 “创建用户”

# 创建组织
# 1. 点击顶部菜单 “组织” -> “创建组织”
# 2. 填写组织信息
# – 组织名称:developers
# – 显示名称:Developers
# – 描述:开发团队
# 3. 点击 “创建组织”

# 分配用户到组织
# 1. 点击顶部菜单 “组织” -> 选择刚才创建的组织
# 2. 点击 “成员管理”
# 3. 输入用户名:developer
# 4. 设置角色:成员
# 5. 点击 “添加成员”

7.2 TLS加密配置

# 生成TLS证书
# mkdir -p /data/gitea/custom/conf/ssl
# openssl req -newkey rsa:2048 -nodes -keyout /data/gitea/custom/conf/ssl/gitea.key -x509 -days 365 -out /data/gitea/custom/conf/ssl/gitea.crt

# 配置Gitea使用HTTPS
# vi /data/gitea/custom/conf/app.ini
[server]
PROTOCOL = https
HTTP_PORT = 3000
ROOT_URL = https://gitea01.fgedu.net.cn:3000/
CERT_FILE = /data/gitea/custom/conf/ssl/gitea.crt
KEY_FILE = /data/gitea/custom/conf/ssl/gitea.key

# 重启Gitea服务
# systemctl restart gitea

8. Gitea性能优化

在生产环境中,需要对Gitea进行性能优化以提高代码仓库管理效率。from:www.itpux.com

8.1 内存优化

# 编辑Gitea服务配置
# vi /etc/systemd/system/gitea.service
[Service]
Type=simple
User=git
WorkingDirectory=/data/gitea
ExecStart=/usr/local/bin/gitea web –config /data/gitea/custom/conf/app.ini
Restart=on-failure
Environment=GOGC=20

# 重启Gitea服务
# systemctl daemon-reload
# systemctl restart gitea

8.2 数据库优化

# 编辑PostgreSQL配置文件
# vi /var/lib/pgsql/14/data/postgresql.conf
max_connections = 150
shared_buffers = 2GB
work_mem = 32MB
maintenance_work_mem = 1GB
effective_cache_size = 6GB

# 重启PostgreSQL服务
# systemctl restart postgresql-14

8.3 网络优化

# 优化网络参数
# vi /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15

# 应用配置
# sysctl -p

9. Gitea升级迁移

本节介绍Gitea的版本升级和数据迁移方法。

9.1 Gitea版本升级

# 备份Gitea配置和数据
# tar -czf /backup/gitea-$(date +%Y%m%d).tar.gz /data/gitea /etc/systemd/system/gitea.service

# 停止Gitea服务
# systemctl stop gitea

# 下载新版本Gitea
# wget https://dl.gitea.io/gitea/1.20.1/gitea-1.20.1-linux-amd64

# 替换Gitea
# mv gitea-1.20.1-linux-amd64 /usr/local/bin/gitea
# chmod +x /usr/local/bin/gitea

# 启动Gitea服务
# systemctl start gitea

# 验证升级
# /usr/local/bin/gitea –version

9.2 Gitea数据迁移

# 备份原Gitea数据
# pg_dump -U gitea -d gitea > /backup/gitea-$(date +%Y%m%d).sql

# 在新服务器上恢复数据
# psql -U gitea -d gitea < /backup/gitea-20230405.sql # 安装Gitea # 重复安装步骤 # 启动Gitea服务 # systemctl start gitea # 验证迁移 # 打开浏览器访问 http://gitea01:3000

10. Gitea备份恢复

本节介绍Gitea的备份和恢复方法。

10.1 Gitea备份

# 创建备份脚本
# vi /data/gitea/scripts/backup.sh

#!/bin/bash
BACKUP_DIR=”/backup/gitea”
DATE=$(date +%Y%m%d)

# 创建备份目录
mkdir -p $BACKUP_DIR

# 停止Gitea服务
systemctl stop gitea

# 备份配置文件
cp -r /data/gitea/custom/conf $BACKUP_DIR/config-$DATE

# 备份数据
pg_dump -U gitea -d gitea > $BACKUP_DIR/data-$DATE.sql
cp -r /data/gitea/data $BACKUP_DIR/data-$DATE

# 启动Gitea服务
systemctl start gitea

# 清理旧备份(保留7天)
find $BACKUP_DIR -type f -mtime +7 -exec rm -f {} \;

# 添加执行权限
# chmod +x /data/gitea/scripts/backup.sh

# 添加定时任务
# crontab -e
0 0 * * * /data/gitea/scripts/backup.sh

10.2 Gitea恢复

# 停止Gitea服务
# systemctl stop gitea

# 清理现有数据
# psql -U postgres -c “DROP DATABASE gitea;”
# psql -U postgres -c “CREATE DATABASE gitea OWNER gitea;”

# 恢复数据
# psql -U gitea -d gitea < /backup/gitea/data-20230405.sql # cp -r /backup/gitea/data-20230405/* /data/gitea/data/ # 恢复配置文件 # cp -r /backup/gitea/config-20230405/* /data/gitea/custom/conf/ # 启动Gitea服务 # systemctl start gitea # 验证恢复 # 打开浏览器访问 http://gitea01:3000

10.3 Gitea监控脚本

# 创建Gitea监控脚本
# vi /data/gitea/scripts/monitor.sh

#!/bin/bash
LOG_FILE=”/var/log/gitea_monitor.log”
ALERT_EMAIL=”admin@fgedu.net.cn”

check_gitea_status() {
echo “$(date): Checking gitea status…” >> $LOG_FILE
status=$(systemctl status gitea | grep Active | awk ‘{print $2}’)
if [ “$status” != “active” ]; then
echo “$(date): Gitea is not running” >> $LOG_FILE
echo “Gitea is not running” | mail -s “Gitea Alert” $ALERT_EMAIL
systemctl start gitea
else
echo “$(date): Gitea is running” >> $LOG_FILE
fi
}

check_gitea_web() {
echo “$(date): Checking gitea web…” >> $LOG_FILE
response=$(curl -s -o /dev/null -w “%{http_code}” http://gitea01:3000)
if [ “$response” != “200” ]; then
echo “$(date): Gitea web is not accessible, response code: $response” >> $LOG_FILE
echo “Gitea web is not accessible, response code: $response” | mail -s “Gitea Alert” $ALERT_EMAIL
else
echo “$(date): Gitea web is accessible” >> $LOG_FILE
fi
}

check_postgresql_status() {
echo “$(date): Checking postgresql status…” >> $LOG_FILE
status=$(systemctl status postgresql-14 | grep Active | awk ‘{print $2}’)
if [ “$status” != “active” ]; then
echo “$(date): PostgreSQL is not running” >> $LOG_FILE
echo “PostgreSQL is not running” | mail -s “Gitea Alert” $ALERT_EMAIL
systemctl start postgresql-14
else
echo “$(date): PostgreSQL is running” >> $LOG_FILE
fi
}

main() {
check_gitea_status
check_gitea_web
check_postgresql_status
}

main

# 添加执行权限
# chmod +x /data/gitea/scripts/monitor.sh

# 添加定时任务
# crontab -e
*/15 * * * * /data/gitea/scripts/monitor.sh

生产环境建议:定期备份Gitea配置和数据,建议每天执行一次完整备份。监控脚本建议每15分钟执行一次,及时发现并处理问题。恢复操作前务必停止Gitea服务,避免数据不一致。

通过以上步骤,Gitea安装配置、性能优化、升级迁移、备份恢复等内容已全部完成。Gitea作为轻量级代码仓库管理工具,能够高效地管理代码仓库、CI/CD和问题跟踪,是中小型团队的理想选择。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息