当前位置: 首页 > news >正文

macOS 搭建 Gitea 私有 Git 服务器教程

macOS 搭建 Gitea 私有 Git 服务器教程

本文详细介绍如何在 macOS 系统上快速搭建 Gitea 私有 Git 服务器,适合个人开发者和小团队使用。

📝 前言

在日常开发中,我们经常需要一个私有的 Git 服务器来管理代码。相比于 GitLab 的复杂配置,Gitea 是一个轻量级的 Git 服务解决方案,特别适合在 macOS 上搭建本地或局域网的 Git 服务。

为什么选择 Gitea?

  • 🚀 轻量级:资源占用少,启动速度快
  • 🔧 易安装:一个二进制文件即可运行
  • 🌐 功能完整:支持 Issues、Pull Requests、Wiki 等
  • 💾 多数据库支持:SQLite、MySQL、PostgreSQL
  • 🔒 安全可控:私有部署,数据完全掌控

为什么选择 Mac 作为 Gitea 服务器?

相比于 Linux 服务器或 Windows,使用 Mac 搭建 Gitea 服务器有以下独特优势:

🖥️ 硬件优势
  • Apple Silicon 性能:M1/M2/M3 芯片提供卓越的性能功耗比
  • 静音运行:Mac 设备运行安静,适合家庭或办公室环境
  • 稳定可靠:macOS 系统稳定性高,长时间运行无故障
  • 低功耗:相比传统服务器,Mac 设备功耗更低,节能环保
💻 开发友好
  • 开发环境一体化:开发和服务器在同一台设备,调试更方便
  • 原生 Unix 环境:完美支持 Git 和各种开发工具
  • Homebrew 生态:丰富的包管理工具,安装软件更简单
  • 完美支持容器:Docker Desktop 在 Mac 上运行流畅

🛠️ 环境准备

系统要求

  • macOS 10.15 及以上版本
  • 至少 4GB 内存(推荐 8GB)
  • 10GB 以上可用磁盘空间

检查系统环境

# 查看 macOS 版本
sw_vers# 查看 CPU 架构(重要:影响下载的安装包)
uname -m
# arm64 = Apple Silicon (M1/M2/M3)
# x86_64 = Intel 芯片# 检查是否安装了 Xcode 命令行工具
xcode-select -p
# 如果没有安装,运行:xcode-select --install# 检查端口 3000 是否可用
lsof -i :3000 || echo "端口 3000 可用"

📦 方法一:Homebrew 安装(推荐)

1. 安装 Homebrew

# 如果还没安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. 安装 Gitea

# 更新 Homebrew
brew update# 安装 Gitea
brew install gitea# 验证安装
gitea --version

3. 创建目录结构

# 在用户目录下创建 Gitea 工作目录
mkdir -p ~/Development/gitea/{custom/conf,data,log}# 查看创建的目录结构
ls -la ~/Development/gitea/

4. 启动 Gitea 服务

# 进入工作目录
cd ~/Development/gitea# 启动 Gitea
gitea web

成功启动后,你会看到类似这样的输出:

2024/08/11 15:30:00 ...eb/routing/logger.go:102:func1() [I] Started GET / for 127.0.0.1:52000
2024/08/11 15:30:00 ...s/context/context.go:227:Render() [I] Completed GET / 200 OK in 2.3ms

🌐 Web 界面配置

1. 访问安装页面

打开浏览器,访问:http://localhost:3000

2. 数据库配置

推荐使用 SQLite(适合个人和小团队):

  • 数据库类型:选择 SQLite3
  • 数据库文件路径data/gitea.db

💡 小贴士:SQLite 无需额外配置,数据存储在一个文件中,备份和迁移都很方便。

3. 基本设置

  • 站点名称:输入你想要的名称,如 “我的代码仓库”
  • 仓库根目录data/repositories
  • Git LFS 根目录data/lfs
  • 以此用户运行:你的 macOS 用户名
  • 服务器域名localhost
  • SSH 服务端口22
  • HTTP 端口3000
  • 应用程序 URLhttp://localhost:3000/
  • 日志路径log

4. 管理员账户设置

  • 管理员用户名admin
  • 密码:设置一个强密码
  • 邮箱地址admin@localhost

5. 完成安装

点击 “立即安装” 按钮,等待安装完成。

🔧 方法二:直接下载二进制文件

如果你不想使用 Homebrew,可以直接下载 Gitea 的二进制文件。

1. 下载对应版本

# Intel 芯片 Mac
curl -L https://dl.gitea.io/gitea/1.21.11/gitea-1.21.11-darwin-10.12-amd64 -o gitea# Apple Silicon (M1/M2/M3) Mac
curl -L https://dl.gitea.io/gitea/1.21.11/gitea-1.21.11-darwin-10.12-arm64 -o gitea# 给文件执行权限
chmod +x gitea# 移动到系统路径
sudo mv gitea /usr/local/bin/gitea

2. 创建配置文件

# 创建工作目录
mkdir -p ~/gitea-server/{custom/conf,data,log}
cd ~/gitea-server# 创建基本配置文件
cat > custom/conf/app.ini << 'EOF'
[database]
DB_TYPE = sqlite3
PATH = data/gitea.db[repository]
ROOT = data/repositories[server]
HTTP_PORT = 3000
DOMAIN = localhost
ROOT_URL = http://localhost:3000/[log]
MODE = file
LEVEL = Info
ROOT_PATH = log
EOF

3. 启动服务

# 启动 Gitea
gitea web

💾 使用外置硬盘存储(可选)

如果你有外置硬盘,可以将 Gitea 数据存储在外置硬盘上:

1. 查看挂载的外置硬盘

# 查看已挂载的外置硬盘
ls -la /Volumes/

2. 创建目录结构

# 假设你的外置硬盘名为 "Project"
mkdir -p /Volumes/Project/gitea/{repositories,lfs,logs,database}

3. 在 Web 配置中使用外置硬盘路径

  • 仓库根目录/Volumes/Project/gitea/repositories
  • Git LFS 根目录/Volumes/Project/gitea/lfs
  • 数据库文件路径/Volumes/Project/gitea/database/gitea.db
  • 日志路径/Volumes/Project/gitea/logs

🚀 设置开机自启动

创建启动服务

# 创建 Launch Agent 文件
cat > ~/Library/LaunchAgents/com.gitea.server.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>Label</key><string>com.gitea.server</string><key>ProgramArguments</key><array><string>/usr/local/bin/gitea</string><string>web</string></array><key>WorkingDirectory</key><string>$HOME/Development/gitea</string><key>RunAtLoad</key><true/><key>KeepAlive</key><true/>
</dict>
</plist>
EOF# 加载服务
launchctl load ~/Library/LaunchAgents/com.gitea.server.plist

🌐 局域网访问配置

如果你想让局域网内的其他设备访问你的 Git 服务器:

1. 查找 Mac 的 IP 地址

# 查看本机 IP 地址
ifconfig | grep "inet " | grep -v 127.0.0.1

2. 修改配置

编辑 ~/Development/gitea/custom/conf/app.ini 文件:

[server]
DOMAIN = 192.168.1.100  # 替换为你的实际 IP
ROOT_URL = http://192.168.1.100:3000/

3. 重启 Gitea 服务

# 停止服务
launchctl unload ~/Library/LaunchAgents/com.gitea.server.plist# 重新启动
launchctl load ~/Library/LaunchAgents/com.gitea.server.plist

现在局域网内的设备可以通过 http://你的IP:3000 访问 Git 服务器了。

📱 基本使用

1. 登录和创建仓库

  1. 打开浏览器访问 http://localhost:3000
  2. 使用管理员账户登录
  3. 点击右上角的 “+” 号创建新仓库

2. 克隆仓库

# 克隆仓库到本地
git clone http://localhost:3000/用户名/仓库名.git# 或者使用 IP 地址(局域网访问)
git clone http://192.168.1.100:3000/用户名/仓库名.git

3. 基本操作

# 进入仓库目录
cd 仓库名# 添加文件
echo "# 我的项目" > README.md
git add .
git commit -m "初始提交"# 推送到服务器
git push origin main

🛠️ 常用管理命令

# 手动启动 Gitea
cd ~/Development/gitea && gitea web# 停止 Gitea 服务
launchctl unload ~/Library/LaunchAgents/com.gitea.server.plist# 查看 Gitea 日志
tail -f ~/Development/gitea/log/gitea.log# 检查 Gitea 是否运行
curl http://localhost:3000# 创建管理员用户(命令行方式)
gitea admin user create --admin --username admin --password AdminPass123 --email admin@localhost

❓ 常见问题解决

端口 3000 被占用

# 查看占用端口的进程
lsof -i :3000# 使用其他端口启动
gitea web --port 3001

权限问题

# 修复目录权限
sudo chown -R $(whoami) ~/Development/gitea

macOS 安全限制

如果 macOS 阻止运行 Gitea:

# 移除隔离属性
sudo xattr -r -d com.apple.quarantine /usr/local/bin/gitea

或者在 “系统偏好设置 → 安全性与隐私” 中点击 “仍要打开”。

数据库锁定

# 停止所有 Gitea 进程
pkill gitea
# 然后重新启动

📊 性能优化建议

1. 硬件建议

  • 内存:8GB 以上(支持更多并发用户)
  • 存储:使用 SSD 硬盘提高性能
  • 网络:千兆网络(局域网访问)

2. 配置优化

# 在 app.ini 中添加性能优化配置
[server]
LFS_START_SERVER = true
OFFLINE_MODE = true[database]
MAX_IDLE_CONNS = 30
MAX_OPEN_CONNS = 300[indexer]
ISSUE_INDEXER_TYPE = bleve
REPO_INDEXER_ENABLED = true

🔐 安全建议

  1. 定期备份:定期备份 data 目录
  2. 强密码:使用复杂的管理员密码
  3. 网络安全:如果对外开放,配置防火墙规则
  4. 更新及时:定期更新 Gitea 到最新版本

📝 总结

通过本教程,你已经学会了:

  • ✅ 在 macOS 上安装和配置 Gitea
  • ✅ 设置数据库和基本配置
  • ✅ 配置局域网访问
  • ✅ 设置开机自启动
  • ✅ 解决常见问题

Gitea 是一个优秀的轻量级 Git 服务解决方案,特别适合个人开发者和小团队使用。相比于复杂的 GitLab,Gitea 的配置更加简单,资源占用更少,是搭建私有 Git 服务器的理想选择。

现在你可以开始使用自己的私有 Git 服务器了!如果遇到问题,可以查看 Gitea 官方文档 获取更多帮助。

http://www.lryc.cn/news/617715.html

相关文章:

  • wed前端第三次作业
  • 算法训练营DAY57 第十一章:图论part07
  • 缓存的三大问题分析与解决
  • STM32蓝牙模块驱动开发
  • 第10节 大模型分布式推理典型场景实战与架构设计
  • 《算法导论》第 19 章 - 斐波那契堆
  • 【SpringBoot】持久层 sql 注入问题
  • 一周学会Matplotlib3 Python 数据可视化-绘制直方图(Histogram)
  • 银河麒麟V10配置KVM的Ubuntu虚机GPU直通实战
  • 梯度裁剪总结
  • 做调度作业提交过程简单介绍一下
  • Spring Cloud Gateway 路由与过滤器实战:转发请求并添加自定义请求头(最新版本)
  • 如何安装 Git (windows/mac/linux)
  • 【数据可视化-85】海底捞门店数据分析与可视化:Python + pyecharts打造炫酷暗黑主题大屏
  • Java数据库编程之【JDBC数据库例程】【ResultSet作为表格的数据源】【七】
  • NY185NY190美光固态闪存NY193NY195
  • cf--思维训练
  • 【C++语法】输出的设置 iomanip 与 std::ios 中的流操纵符
  • Dashboard.vue 组件分析
  • 基于 Axios 的 HTTP 请求封装文件解析
  • 【Redis的安装与配置】
  • ESP32将DHT11温湿度传感器采集的数据上传到XAMPP的MySQL数据库
  • loading效果实现原理
  • 【JAVA】使用系统音频设置播放音频
  • 在线代码比对工具
  • Selenium元素定位不到原因以及怎么办?
  • 机器学习 TF-IDF提取关键词,从原理到实践的文本特征提取利器​
  • Effective C++ 条款36: 绝不重新定义继承而来的非虚函数
  • Excel 连接阿里云 RDS MySQL
  • 开闭原则代码示例