经常使用github,gitee等git代码管理服务,如何搭建一个git服务器?自己搭建git服务器通过开源的gogs git服务可以实现。
本人经过1小时,基本万转了如何搭建git服务。
本人环境ubuntu,搭建
1. 开源代码下载
https://github.com/gogs/gogs 
根据实际系统下载
https://github.com/gogs/gogs/releases/


2. 安装配置
(1)添加系统账户
安装建议新增一个独立系统账号,这里以新增“git”账号为例 

sudo adduser git
sudo usermod -aG sudo git
# 进入账户
su - git

(2)安装
# gogs 需要数据库支持
需要数据库,可以是mysql,sqlite 和pgsql都可以。我这里使用sqlie3
本地安装支持sqlite3 我更新和安装一下

sudo apt update
sudo apt install sqlite3 libsqlite3-dev

# 下载
wget https://dl.gogs.io/0.14.3/gogs_v0.14.3_linux_amd64.tar.gz 
# 解压
tar -zxvf gogs_v0.14.3_linux_amd64.tar.gz
cd gogs/
# 启动
 ./gogs web

你现在可以访问 本地服务 http://ip:3000 端口做初始化,配置账号密码即可
 
(3)配置自启动
初始化成功后,按 Ctrl+C 停止前台运行的 Gogs。接下来将其注册为系统服务。
创建服务文件 /etc/systemd/system/gogs.service,内容如下: (可以根据自己目录更改)

[Unit]
Description=Gogs Self-Hosted Git Service
After=syslog.target network.target

[Service]
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target

设置开机启动 

sudo systemctl daemon-reload
sudo systemctl enable gogs
sudo systemctl start gogs

(4)配置域名/https ,采用nginx 代理转发,以git.forasp.cn 为例
修改 gogs 配置
vim /home/git/gogs/custom/conf/app.ini
修改内容如下:

DOMAIN           = git.forasp.cn 
HTTP_PORT        = 3000
EXTERNAL_URL     = http://git.forasp.cn/

新增nginx 配置如下:

server {
    server_name git.forasp.cn;
    listen 80;
    index index.html index.htm index.php default.html default.htm default.php;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    access_log  /home/wwwlogs/git.log;
    error_log /home/wwwlogs/git.debug.log debug;
}

另外可以配置不用官方远程头像,搜索 DISABLE_GRAVATAR 更改为true 
DISABLE_GRAVATAR = true
#如果不允许注册
DISABLE_REGISTRATION = true

3. 修改页面,自定义页面内容
如果要修改 页面内容,按照目录 
/home/git/gogs/custom/templates 创建目录,
然后根据版本,找到
https://github.com/gogs/gogs/tree/main/templates 
对应目录下载单个文件,然后进行修改保存。
重启gogs即可

4. 自动数据备份
gogs 支持自动备份,将备份数据库和所有库以及代码,命令如下
./gogs backup --target /path/to/backup/folder

定时备份 3天以上的删除

#!/bin/sh -e

# 1. 定义 Gogs 的安装目录和备份存储目录
gogs_home="/home/git/gogs/"
backup_dir="$gogs_home/backups"

# 2. 切换到 Gogs 安装目录
cd $gogs_home

# 3. 执行 Gogs 官方备份命令,将备份文件输出到指定目录
./gogs backup --target=$backup_dir
echo "$(date): Backup success!"

# 4. 定义保留天数(3天)
day=3

# 5. 查找并删除 3 天前的备份文件
# -name '*.zip' : 只匹配zip格式的备份文件
# -mtime +3     : 修改时间在3天前的文件
# -type f       : 只匹配普通文件
# xargs rm -f   : 强制删除找到的文件
find $backup_dir -name '*.zip' -mtime +3 -type f | xargs rm -f
echo "$(date): Expired backups deleted!"

#定时每天4点备份
00 04 * * * /home/git/gogs/do-backup.sh >> /home/git/gogs/backup.log 2>&1

数据恢复
./gogs restore --from=gogs-backup-20200827081134.zip

以上就是 搭建git服务器全部内容