Linux下使用Gogs搭建Git仓库详细教程

创作不易,如果觉得这篇文章对你有帮助,欢迎各位老铁点个赞呗,您的支持是我创作的最大动力!

1 前言

最近两年,越来越多的公司倾向于使用Git作为项目版本控制工具,相比较svn而言,还是会便利一些,尤其是Git强大的分支管理。这里笔者建议使用Gogs搭建轻量级的Git仓库,当然啦,如果服务器配置足够好,搭建GitLab也是不错的选择。

2 Git仓库有哪些

Git仓库一般是指远程仓库,而不是我们自己机器上的本地仓库,常见的Git仓库种类有:

3 为什么要搭建私有Git仓库

公司里,为了更好地进行团队协作,通常会划分不同的项目小组,每个小组,负责不同的项目。而项目多的时候,就需要有一个好用的项目版本控制工具,Git就是一个很好的项目版本控制工具。

一般来说,公司的项目对外都是保密的,所以需要有一个私有的项目管理工具,这时候Gogs就派上用场了,相比较GitLab,更加的轻量级,方便。

4 什么是Gogs

Gogs是一个使用Go语言写的,轻量级的Git代码版本控制仓库,可以利用该软件搭建一套公司内部的Git仓库环境,供公司内部,各开发部门各个项目小组使用。

5 搭建Git仓库(Gogs搭建)

5.1 环境要求

笔者这里,使用MySQL数据库,搭建Gogs仓库环境。

5.1.1 数据库(选择以下中的任意一项):

  • MySQL:版本 >= 5.7
  • PostgreSQL
  • TiDB(实验性支持,使用 MySQL 协议连接)
  • 或者 什么都不安装 直接使用 SQLite3

5.1.2 git(bash):

服务端和客户端均需版本 >= 1.8.3
Windows 系统建议使用最新版

5.1.3 SSH 服务器:

如果您只使用 HTTP/HTTPS 的话请忽略此项
如果您选择在 Windows 系统使用内置 SSH 服务器,请确保添加 ssh-keygen 到您的 %PATH% 环境变量中
推荐 Windows 系统使用 Cygwin OpenSSH 或 Copssh
Windows 系统 请确保 Bash 是默认的 Shell 程序,而不是 PowerShell

5.2 搭建Gogs步骤

5.2.1 Linux中安装一个MySQL

如果没有MySql环境的老铁们,可以参考我的博客:Linux下安装MySQL详细教程

把MySQL启动起来,并且在MySQL数据库上创建gogs数据库,不用创建表

5.2.2 Linux上安装Git

Gogs需要Linux安装了git,可以执行 git --version命令,看一下是否有git环境,如果提示-bash: git: command not found找不到命令,说明没有安装git。

这里为了简单,使用yum安装方式,执行以下命令:
yum install git -y
在这里插入图片描述
出现以上红框所示信息,说明git环境配置成功。

5.2.3 Linux安装gogs

官网给出了两种方式:二进制安装源码安装,笔者这里使用二进制安装。

二进制方式安装:
下载tar.gz包:https://dl.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz
在这里插入图片描述

下载Gogs包,把下载的tar.gz包上传到服务器,然后解压缩,解压缩之后就安装完成。
tar -zxvf gogs_0.11.91_linux_amd64.tar.gz -C /usr/local/

安装后的目录结构:
在这里插入图片描述

5.2.4 启动Gogs

  • 切换到安装目录
    使用命令: cd /usr/local/gogs

  • 启动
    使用命令(一次性启动):./gogs web > ./gogs.log
    也可以使用命令:nohup ./gogs web > ./gogs.log &
    nohup是把命令的启动日志默认输出到一个nohup.out文件

    启动时添加了一个重定向 > ./gogs.log,把日志信息重定向输出到./gogs.log,方便以后分析日志。

    通过gogs.log文件,可以查看启动日志,使用命令:
    cat gogs.log
    在这里插入图片描述

  • 检查是否启动成功
    使用命令:ps -ef | grep gogs
    在这里插入图片描述
    有gogs进程,说明启动Gogs成功。

5.2.5 第一次访问需要按向导配置一下

访问:http://ip:3000

访问时,有可能访问不到,如果是阿里云服务,需要配置安全组:
在这里插入图片描述

如果你的服务器或者虚拟机开启了防火墙,需要开放3000端口:

  • 开启多个防火墙端口
    firewall-cmd --zone=public --add-port=8080-8088/tcp --permanent

  • 重新加载防火墙配置
    firewall-cmd --reload

第一次访问时,需要配置Gogs:http://ip:3000/install,可以按向导,根据公司实际需求,配置即可。
在这里插入图片描述
在这里插入图片描述

注意:要保证MySQL服务启动成功了

至此,简单的Git仓库环境-Gogs就安装完成了,童鞋们,可以去玩耍了。
在这里插入图片描述

6 懒人-设置systemctl启动

  • 设置systemctl启动原因
    每次使用 nohup ./gogs web & 进行后台启动比较麻烦,不仅需要进入安装目录,还得敲这么麻烦的命令。配置使用systemctl方式启动gogs,可以很方便的在任何目录下执行启动。

  • 设置systemctl启动
    这里,博主使用官方的启动脚本gogs.service(这里gogs.service脚本文件在你的gogs安装目录下),使用以下命令,把启动脚本复制到Linux system目录下
    cp /usr/local/gogs/scripts/systemd/gogs.service /usr/lib/systemd/system/

    然后就可以很方便的在任何目录下启动和停止Gogs服务了。

    使用命令启动服务
    systemctl start gogs.service
    或者
    systemctl start gogs
    或者
    service gogs start

    使用命令查看服务状态
    systemctl status gogs.service

    使用命令停止服务
    systemctl stop gogs.service

    设置永久启动(不建议使用,前提要启动mysql):systemctl enable gogs.service

  • 说明:
    如果不能正常启动,把/usr/lib/systemd/system/gogs.service里的配置文件进行修改
    使用命令:vim /usr/lib/systemd/system/gogs.service

    修改前文件内容:

    Description=Gogs
    After=syslog.target
    After=network.target
    After=mariadb.service mysqld.service postgresql.service memcached.service redis.service
    
    [Service]
    # Modify these two values and uncomment them if you have
    # repos with lots of files and get an HTTP error 500 because
    # of that
    ###
    #LimitMEMLOCK=infinity
    #LimitNOFILE=65535
    Type=simple
    User=git
    Group=git
    WorkingDirectory=/usr/local/gogs
    ExecStart=/usr/local/gogs web
    Restart=always
    Environment=USER=root HOME=/usr/local/gogs
    
    # Some distributions may not support these hardening directives. If you cannot start the service due
    # to an unknown option, comment out the ones not supported by your version of systemd.
    # ProtectSystem=full
    # PrivateDevices=yes
    # PrivateTmp=yes
    # NoNewPrivileges=true
    
    [Install]
    WantedBy=multi-user.target
    
    

    修改部分如下:
    在这里插入图片描述

    修改后文件内容:

    [Unit]
    Description=Gogs
    After=syslog.target
    After=network.target
    After=mariadb.service mysqld.service postgresql.service memcached.service redis.service
    
    [Service]
    # Modify these two values and uncomment them if you have
    # repos with lots of files and get an HTTP error 500 because
    # of that
    ###
    #LimitMEMLOCK=infinity
    #LimitNOFILE=65535
    Type=simple
    User=root
    Group=root
    WorkingDirectory=/usr/local/gogs
    ExecStart=/usr/local/gogs web
    Restart=always
    Environment=USER=root HOME=/usr/local/gogs
    
    # Some distributions may not support these hardening directives. If you cannot start the service due
    # to an unknown option, comment out the ones not supported by your version of systemd.
    # ProtectSystem=full
    # PrivateDevices=yes
    # PrivateTmp=yes
    # NoNewPrivileges=true
    
    [Install]
    WantedBy=multi-user.target
    

    更改成功后,使用systemctl daemon-reload重新加载即可启动成功。

    启动成功界面,如下图所示:
    在这里插入图片描述

    参考资料:Gogs官网

写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!

如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!

猜你喜欢

转载自blog.csdn.net/smilehappiness/article/details/106268795