如何搭建git服务器
经常使用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服务器全部内容