06.Git学习笔记–基于Gogs搭建企业私有Git服务
介绍
Gogs 是一款开源的轻量级 Git Web 服务,其特点是简单易用、文档齐全、国际化做的相当不错。其主要功能如下:
- 提供 HTTP 与 SSH 两种协议访问源码服务;
- 提供可视化 Web 界面,可查看修改源码代码;
- 提供较完善的权限管理功能,其中包括组织、团队、个人等仓库权限;
- 提供简单的项目 Wiki 功能;
- 提供工单管理与里程碑管理。
安装
官网:https://gogs.io
下载:https://gogs.io/docs/installation
文档:https://gogs.io/docs/installation/install_from_binary
cd ~/svr
#将gogs_0.11.34.zip上传到该目录解压缩
unzip gogs_0.11.34.zip
cd gogs
#前台运行
./gogs web
#后台运行
$nohup ./gogs web &
#查看运行进程
ps -ef | grep gogs
#结束进程
kill -9 进程PID
默认端口:3000
初次访问
http://192.168.25.159:3000
http://git.yangxu.com:3000
会进到初始化页,进行引导配置。
可选择 MySQL 或 SQLite 等数据库。
注:需要用 MySQL 5.7 以上版本。
选用 MySQL 需要先自行创建 gogs 数据库:
填写好其他必要信息:
创建管理员账号:
基础配置
邮件配置说明
邮件配置是用于注册时邮件确认,和找回密码时候的验证邮件发送。
其配置分为两步:
- 创建一个开通了 SMTP 服务的邮箱帐号,一般用公司管理员邮箱;
- 在 {gogs_home}/custom/conf/app.ini 文件中配置。
139 邮箱开通 SMTP 服务
其他邮箱的开通方式类似,博主以 139 邮箱为例演示。
右上角的设置图标 –> 邮箱协议设置 –> 服务开关:
邮件设置
设置文件:
{gogs_home}/custom/conf/app.ini
cd /root/svr/gogs/custom/conf
#备份配置文件
tar -zcvf app.ini.tar.gz app.ini
#编辑配置文件
vim app.ini
配置以下内容:
[mailer]
ENABLED = true
HOST = smtp.139.com:465
FROM = Ming Lee<130********@139.com>
USER = 130********@139.com
PASSWD = ****************
- ENABLED = true 表示启用邮件服务
- HOST:SMTP 服务器地址(需要对应邮箱开通 SMTP 服务且必须为 SSL 的形式访问)
- FROM:发送人名称地址
- USER:发送帐号
- PASSWD:开通 SMTP 帐户时会有对应的授权码,139 邮箱就是登录密码
重启 Gogs 后可按以下步骤测试:
- 管理员登录
- 管理面板
- 应用配置管理
- 邮件配置
- 发送测试邮件
对方邮箱接收到的测试邮件:
如果要开启注册邮箱验证,需要在 {gogs_home}/custom/conf/app.ini 文件中配置以下内容:
[auth]
; Whether to require email confirmation for adding new email addresses.
; Enable this option will also require user to confirm the email for registration.
REQUIRE_EMAIL_CONFIRMATION = true
如果要开启邮件通知提醒,需要在 {gogs_home}/custom/conf/app.ini 文件中配置以下内容:
[user]
; Whether to enable email notifications for users.
ENABLE_EMAIL_NOTIFICATION = true
完整的 app.ini 文件配置内容可参考:
https://github.com/gogs/gogs/blob/master/conf/app.ini
使用
创建新的仓库
填写信息 –> 创建仓库
创建完成
克隆仓库
git clone http://git.yangxu.com:3000/yangxu/yangxu.git
添加新的远程仓库
git remote add gogs http://git.yangxu.com:3000/yangxu/yangxu.git
从远程仓库获取最新版本
#从远程获取最新版本到本地,不会自动merge
git fetch gogs
推送到远程仓库
将本地的 master 分支推送到 gogs 主机,同时指定 gogs 为默认主机,后面就可以不加任何参数使用 git push 了。
git push -u gogs master
首次推送会进行身份验证:
推送成功:
在 Web 端修改文件内容
点击“编辑此文件”的图标
编辑文件,填写提交内容,点击“提交变更”按钮
从远程仓库获取最新版本
#从远程获取最新版本并 merge 到本地
git pull
定时备份与恢复
备份与恢复
#查看备份相关参数
./gogs backup -h
#默认备份,备份在当前目录
./gogs backup
#参数化备份 --target 输出目录 --database-only 只备份 db
./gogs backup --target=./backups --database-only --exclude-repos
#恢复。执行该命令前要先删除 custom.bak
./gogs restore --from=gogs-backup-20200827081134.zip
自动备份脚本
vim do-backup.sh
#!/bin/sh -e
gogs_home="/root/svr/gogs/"
backup_dir="$gogs_home/backups"
cd `dirname $0`
#执行备份命令
./gogs backup --target=$backup_dir
echo 'backup sucess'
day=7
#查找并删除7天前的备份
find $backup_dir -name '*.zip' -mtime +7 -type f |xargs rm -f;
echo 'delete expire back data!'
chmod 777 do-backup.sh
添加定时任务
每天 4:00 执行备份
# 打开任务编辑器
crontab -e
# 输入如下命令 00 04 * * * 每天凌晨4点执行do-backup.sh并输出日志至backup.log
00 04 * * * /root/svr/gogs/do-backup.sh >> /root/svr/gogs/backup.log 2>&1