wangbin
  • wangbin
  • 2018-12-30
  • IT

git服务器搭建:gogs

一. 简介

gogs是国人开发的自助git服务,使用go语言开发,支持各种平台,部署方便,实现了各种常用的功能,对资源的要求还不高.

二.安装

install_gogs.sh

cd ~
wget https://dl.gogs.io/0.11.79/gogs_0.11.79_linux_amd64.zip
unzip gogs_0.11.79_linux_amd64.zip 
mv gogs /usr/local/
mkdir -p /usr/local/gogs/custom/conf/

rm -f ~/gogs_0.11.79_linux_amd64.zip 

执行完后,执行

/usr/local/gogs/gogs web

访问http://ip:3000,可以正常访问gogs服务,安装成功,下面开始配置gogs.

三. gogs配置

首次访问http://ip:3000,会跳转http://ip:3000/install页面对gogs进行一些设置

  1. 数据库设置

    gogs支持MySQL、PostgreSQL、SQLite3、MSSQL 或 TiDB各种数据库,我用的是MySQL,可以参照之前的教程安装https://wangbin.io/blog/it/mysql.html

    我创建了个名为gogs的数据库,下面是我的配置

    数据库类型: MySQL

    数据库主机: 127.0.0.1

    数据库用户: xxx

    数据库用户密码: xxx

    数据库名称: gogs

  2. 应用基本设置

    应用名称: git.wangbin.io

    仓库根目录: /vps/git/repos

    运行系统用户: root

    域名: localhost

    SSH 端口号: 留空,禁用 SSH 功能

    HTTP 端口号: 3000

    应用 URL: https://git.wangbin.io

    日志路径: /usr/local/gogs/log

  3. 可选设置->管理员账号设置

    管理员用户名: xxx

    管理员密码: xxx

    确认密码: xxx

    管理员邮箱: xxx

点击立即安装,成功后,会将配置文件写在/usr/local/gogs/custom/conf/app.ini文件,后面要更改配置,修改这个文件就可以了.

这里我修改了

# gogs运行用户修改为nobody
RUN_USER = nobody

# 禁用注册功能,只自己使用
DISABLE_REGISTRATION   = false

四. supervisor配置

[program:gogs]
command=/usr/local/gogs/gogs web
environment=HOME="/vps/git/repos", USER="nobody"
directory=/usr/local/gogs/
user=nobody
user=nobody
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/vps/save/logs/supervisor/gogs.log
stderr_logfile=/vps/save/logs/supervisor/gogs-err.log

五. nginx配置

# git.wangbin.io
server {

    listen       50443 ssl http2;
    listen       [::]:50443 ssl http2;

    server_name  git.wangbin.io;

    # ssl
    ssl_certificate             /vps/save/certificate/acme/*.wangbin.io/fullchain.cer;
    ssl_certificate_key         /vps/save/certificate/acme/*.wangbin.io/*.wangbin.io.key;
    ssl_trusted_certificate     /vps/save/certificate/acme/*.wangbin.io/fullchain.cer;

    # ecc
    ssl_certificate             /vps/save/certificate/acme/*.wangbin.io_ecc/fullchain.cer;
    ssl_certificate_key         /vps/save/certificate/acme/*.wangbin.io_ecc/*.wangbin.io.key;

    # log
    access_log                  logs/wangbin.io/gogs.wangbin.io/access-gogs.wangbin.io.log siyou325;
    error_log                   logs/wangbin.io/gogs.wangbin.io/error.log;

    # 最大上传200m
    client_max_body_size        200m; 

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header SIYOU325-X-Real-Ip $remote_addr;
    }

    # 禁止访问.svn目录,防止svn信息泄漏,必加项
    location ~ ^(.*)\/\.svn\/ {
        deny all;
    }

}

六. 结尾

git仓库管理功能、权限管理功能,个人使用完全能够满足需求.

装完gogs,我失去了安装gitlab的兴趣,算了,那就不安装了.

赶紧安装使用gogs吧.

参考:

  1. https://gogs.io/docs/installation

  2. https://github.com/gogs/docs/blob/master/zh-CN/advanced/configuration_cheat_sheet.md