使用gogs在服务器搭建git服务

创建于 10个月前 / 阅读数 127 / 工具


简介

对于企业开发而言,若将项目托管至 github 创建私有仓库需要收费。
若托管于「coding」或者「码云」的免费版本,可以添加的成员数最大为5人,扩容或者增加成员同样需要升级至企业版,对于开发前期而言无疑是增加企业成本。那么何不自己在服务器搭建git服务用于日常开发呢?

本文将介绍如何在自有服务器搭建 git 服务用于日常开发。

选择

对于中大型企业,服务器多使用 gitlab 搭建 git 服务,也有使用纯命令行搭建的 git 服务,前者对服务器性能要求比较高,配置文件十分复杂,而后者没有图形界面,对于项目的各项参数配置与成员管理不够友好。本文将介绍一款基于 go 语言开发的 git 服务。

什么是 gogs

官网:Click me

定义:一款极易搭建的自助 Git 服务

特点:跨平台轻量级

任何 Go 语言 支持的平台都可以运行 Gogs,包括 Windows、Mac、Linux 以及 ARM。
一个廉价的树莓派的配置足以满足 Gogs 的最低系统硬件要求。有些用户甚至还将 Gogs 运行在 NAS 设备上。

服务器

这里以腾讯云为例进行安装,系统为 Ubuntu 18.04.1 LTS。
默认初始化账户是 ubuntu

由于默认 ubuntu 账号没有权限,故首先新建 root 账户并给予权限。

$ sudo passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

说明:这里建议和 ubuntu 账号设置一样的密码便于管理记忆

修改 ssh 配置

$ sudo vim /etc/ssh/sshd_config
...
PermitRootLogin yes

重启配置

$ sudo service ssh restart

LNMP

LNMP 安装方式很多,考虑到便携性与后期管理,这里推荐使用 LNMP一键安装包 具体安装方法可以参考我的文章: 使用LNMP一键安装包搭建服务

数据库

通过前面 LNMP 设置的数据库账号密码进入数据库,创建 gogs 数据库

域名

这里使用二级域名的形式用于测试,在域名所在服务商解析当前服务器 ip,如:gogs.iiiku.com

vhost

配置 vhost 用于代理 ip 地址
/usr/local/nginx/conf/vhost/gogs.iiiku.com.conf

server {
    listen 80;
    server_name gogs.iiiku.com;

    location / {
        proxy_pass  http://127.0.0.1:3000;
    }
}

说明:这里使用反向代理的方式通过域名访问 ip

安装 golang

既然是基于 go 语言开发,那么 go 语言环境必不可少

$ sudo apt-get install golang

安装 gogs

根据自己服务器 linux 版本选择源码包

$ cat /proc/version
Linux version 4.15.0-29-generic (buildd@lgw01-amd64-057) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018

这里根据配置进入官网下载 gogs_0.11.66_linux_amd64.tar.gz
解压

$ tar -xzvf gogs_0.11.66_linux_amd64.tar.gz

创建配置

假设解压至根目录,根目录会生成 gogs 目录
具体可参考官网:配置

$ cd /gogs
$ vim custom/conf/app.ini

[basic]
APP_NAME = iiiku
RUN_USER = git
RUN_MODE = prod

[repository]
ROOT = /home/gogs-repositories

[server]
PROTOCOL = http
DOMAIN = gogs.iiiku.com
ROOT_URL = http://gogs.iiiku.com

[database]
DB_TYPE = mysql
HOST = 127.0.0.1
NAME = gogs
USER = root
PASSWD = xxx

[security]
INSTALL_LOCK = true

启动服务

/gogs

$ cd /gogs
$ ./gogs web
...
Listen: http://0.0.0.0:3000

此时访问域名即可成功进入

SSL 证书

可以在腾讯云 SSL 申请免费证书,注意有效期为一年,到期请及时重新申请。申请成功后上传至服务器。修改 nginx 配置

server {
    listen 80;
    server_name gogs.iiiku.com;
    rewrite ^ https://$http_host$request_uri? permanent;
}

server {
    listen 443;
    server_name gogs.iiiku.com;
    ssl on;
    ssl_certificate /selslim/ssl/1_gogs.iiiku.com_bundle.crt;
    ssl_certificate_key /selslim/ssl/2_gogs.iiiku.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    client_max_body_size 500m;
    location / {
        proxy_pass  http://127.0.0.1:3000;
    }
}

说明:这里使用 rewrite 强制 http 至 https

地址栏输入 https://gogs.iiiku.com 即可访问。
更多使用方法和配置方法请参考官网