Gogs 搭建整理笔记

in Server with 0 comment

本文讲述使用 Gogs 搭建 Git Repository Server,采用 二进制 安装。Gogs是一款极易搭建的 Git 服务,使用 Go 语言开发,主要由 Unknown 等人开发。相比于 Gitlab 更加轻量级,对系统配置要求低,支持二进制和源码安装,功能相对简单,比较适合于小型团队和个人。

环境要求

服务器环境

本文以以下配置搭建 Gogs

软件安装

  1. 安装 lnmp 软件包

    mkdir ~/src/
    cd ~/src/
    wget -c http://soft.vpser.net/lnmp/lnmp1.5beta.tar.gz
    tar zxf lnmp1.5beta.tar.gz
    cd lnmp1.5
    ./install.sh lnmp
  2. 添加 vhost,详细内容请参考 LNMP添加、删除虚拟主机及伪静态使用教程,这里需要注意的以下几点:

    • 需要创建MySQL数据库
    • 需要添加SSL Certificate来启用https访问。
    lnmp vhost add
  3. 添加用户 git(或者其它名称的用户),添加用户意义在于我们使用 git 帐户来运行 gogs(安全限制)。

    adduser git
    passwd git
  4. 下载 gogs 二进制包,注意要查根据你当前系统版本选择相应的二进包,执行 uname -a 来查看系统信息。

    su - git
    wget https://dl.gogs.io/0.11.43/gogs_0.11.43_linux_amd64.tar.gz
    tar zxf gogs_0.11.43_linux_amd64.tar.gz
  5. 运行 gogs,进入 gogs 目录后,执行 ./gogs web,尝试运行 gogs。到这一步已经可以从外网访问 gogs,访问地址为:http://hostaddress:3000/(默认端口为3000),并对 gogs 配置了。

    cd gogs/
    ./gogs web
  6. 在第5步已经能运行 gogs,但这种运行方式不科学(有点low),当然你也可以使用 nohup 来后台运行,推荐使用 systemd 的方式来运行。

    # gogs执行脚本到/etc/init.d目录下
    cp ~/gogs/scripts/init/centos/gogs /etc/init.d/
    # 为脚本添加执行权限
    sudo chmod 755 /etc/init.d/gogs
    # 修改~/gogs/scripts/systemd/gogs.service文件 请查阅参考资料 如何以守护进程形式运行
    cp ~/gogs/scripts/systemd/gogs.service /etc/systemd/system/gogs.service
    # 激活gogs.service
    sudo systemctl enable gogs
    # 启动gogs
    sudo systemctl start gogs
    # 查看gogs运行状态
    sudo systemctl status gogs -l
  7. 到此软件安装已经结束了。

软件配置

  1. 使用 nginx 做反向代理,并启用 ssl 访问网站,这里需要注意的是,由于使用了 lnmp vhost add 命令,nginx 配置文件会有多余的选项,而我们并不需要这些选项,因此要把这些选项去掉。所有的请求都应交于 gogs 服务来处理(包含静态文件,还有 .gitignore 这种类似于系统目录的文件),nginx 配置如下:

    # /usr/local/nginx/conf/vhost/domain.conf
    server
    {
        listen 80;
        server_name domain;
    
        location /
        {
            # 强制网站使用https访问
            return 301 https://$host$request_uri;
        }
    
        location ~ /.well-known
        {
            # 此处保留的原因是由于使用Lent's Encrypt证书 刷新证书时 
            # 服务器请求此域名下这个地址来验证 详细内容 请参见 参考资料
            allow all;
        }
    }
    server
    {
        listen 443 ssl http2;
        server_name domain;
        ssl on;
    
        # 此处省略ssl配置
    
        location /
        {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://127.0.0.1:3000$request_uri;
        }
    
        location ~ /.well-known
        {
            allow all;
        }
    }
  2. 修改 app.ini 文件,在[server]配置节,添加 HTTP_ADDR 其值为 127.0.0.1,仅允许本机访问。

    [server]
    HTTP_ADDR = 127.0.0.1
  3. 重启 nginxgogs

    service nginx restart
    systemctl restart gogs

参考资料

  1. CentOS6.X下Gogs安装与配置
  2. Gogs如何以守护进程形式运行
  3. Systemd 入门教程
  4. Gogs使用文档
  5. Certbot Webroot Plugin
Comments are closed.