Gogs 搭建整理笔记
in Server with 0 comment
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
The article has been posted for too long and comments have been automatically closed.