CentOS7.x搭建Gogs

Gogs 是一款极易搭建的自助 Git 服务。
Gogs项目旨在打造一个以最简便的方式搭建简单、稳定和可扩展的自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、macOS、Windows 以及 ARM 平台。

一、环境搭建

安装git以及数据库

1、安装git

yum安装即可,使用如下命令

1
yum install -y git

2、安装数据库
我使用的是mysql5.7.29
《安装mysql5.29脚本》(密码:iwgw)

二、安装gogs

1
2
3
4
5
6
7
8
9
10
#下载gogs安装包
wget https://dl.gogs.io/0.11.86/gogs_0.11.86_linux_amd64.tar.gz
#如果提示未找到wget命令,可以使用yum安装
yum install -y wget
#解压
tar -xzvf gogs_0.11.86_linux_amd64.tar.gz
#创建git用户
useradd  git
#将gogs安装包所有者改为git
chown -R git:git /gogs

三、在数据库上创建gogs用户并授予权限

1
2
3
4
5
6
7
8
#root登录mysql
mysql -uroot -p密码
#创建gogs数据库
create database gogs default charset utf8 collate utf8_general_ci;
#创建gogs用户并授予该用户gogs数据库的全部权限
GRANT ALL PRIVILEGES ON gogs.* TO  'gogs'@'%' IDENTIFIED BY '123456';
#刷新权限
flush privileges;

四、运行gos并设置开机自启

1
2
3
4
5
6
7
8
9
#进入gogs安装路径
cd /gogs
#运行gogs
#默认端口启动
su git  
./gogs web
#指定端口启动
su git  
./gogs web –port 3001

使用这种方法属于前天启动,会一直在前台运行,如果关闭终端会自动退出,所以要使用后台启动的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#设置开机自启
#将gogs的启动脚本复制到/etc/init.d/路径下:
#gogs自己提供了默认的启动脚本,在gogs安装包的scripts/init/路径下,可以根据自己的操作系统选择不同的脚本
cp /gogs/scripts/init/centos/gogs /etc/rc.d/init.d/
#编辑启动脚本
vim /etc/init.d/gogs
#修改启动脚本的GOGS_HOME和GOGS_USER,它们分别是gogs的安装路径和gogs的启动用户,例如我将GOGS_HOME 改为/home/gogs,GOGS_USER改为git
#进入/etc/init.d路径
cd /etc/init.d
#给启动脚本赋予可执行权限
chmod +x gogs
测试启动脚本
#启动gogs
service gogs start
#关闭gogs
service gogs stop
#重启gogs
service gogs restart
#将gogs设置为开机自启动
chkconfig gogs on
#检查是否加入成功
chkconfig --list gogs

看到如下内容说明生效在这里插入图片描述

五、前端安装gogs

如果默认3000端口已经被其他端口占用的话,使用后台启动的方式是无法正常启动的,因为在未进行前端安装的情况下,后台启动无法指定端口,只能在前端安装gogs之后才会生成相应的配置文件。所以在需要制定端口后台启动之前,需要前台启动,并在前端页面进行程序安装。
1、在浏览器输入IP+指定端口
如:http://192.168.0.159:3000
将自动进入如下安装界面:
在这里插入图片描述
2、按照要求填写相关信息,如果需要更改端口,在应用url填写实际的IP和端口即可
在这里插入图片描述
填写完毕之后点击确定,转入如下界面表示安装成功
在这里插入图片描述

六、 配置文件

前端页面安装gogs成功之后,会在安装包下生成配置文件app.ini,app.ini路径为gogs/custom/conf/app.ini
在这里插入图片描述
配置文件中的内容如下所示:
在这里插入图片描述
编辑配置文件保存之后,需要重启gogs才会生效

1
service gogs restart

在这里插入图片描述

配置文件各参数释义

1、 概述:

APP_NAME:应用名称,可以改组织或公司名称
RUN_USER:运行应用的用户名称。如果没有正确设置这个值,很可能导致应用崩溃。
RUN_MODE:默认值为prod,鉴于性能和其他考虑,建议不修改为其他值。

2、 服务器 (server)

PROTOCOL:协议,选择http或者https
DOMAIN:服务器域名
ROOT_URL:公开的完整 URL 路径
HTTP_ADDR:应用 HTTP 监听地址
HTTP_PORT:应用 HTTP 监听端口号
LOCAL_ROOT_URL:用于 Gogs 工作进程(如:SSH)回访应用的本地(DMZ)URL,一般情况下要保持默认值,除非SSH 服务器节点与 HTTP 并不是同一个节点入口
DISABLE_SSH:当 SSH 功能不可用时可以禁用
START_SSH_SERVER:启用该选项来启动内置 SSH 服务器
SSH_DOMAIN:允许公用网络访问 SSH 的域名
SSH_PORT:SSH 端口号,默认为22,如果SSH的端口号不是22的话更改为实际端口号
SSH_LISTEN_HOST:内置 SSH 服务器监听的地址
SSH_LISTEN_PORT:内置 SSH 服务器监听的端口
SSH_ROOT_PATH: SSH 根目录,一般为 ~/.ssh,但必须填写为 /home/git/.ssh
SSH_KEY_TEST_PATH:用于测试 SSH 公钥的临时目录
SSH_KEYGEN_PATH:ssh-keygen 程序的路径,默认为 ssh-keygen 即通过系统路径查找
MINIMUM_KEY_SIZE_CHECK:指定不同类型的公钥的最小密钥大小
DISABLE_ROUTER_LOG:激活该选项来禁止打印路由日志
CERT_FILE:HTTPS 授权文件路径
KEY_FILE:HTTPS 的密钥文件路径
STATIC_ROOT_PATH:模板文件和静态文件的上级目录,默认为应用二进制所在的位置
APP_DATA_PATH:应用内部数据的存放目录
LANDING_PAGE:设置未登录用户的默认首页,可以是 home 或 explore(发现页)

3、 仓库 (repository)

ROOT:用户仓库存储根目录,必须为绝对路径,默认为 ~//gogs-repositories
SCRIPT_TYPE:系统脚本类型,一般情况下均为 bash
ANSI_CHARSET:当遇到无法识别的字符集时使用的默认字符集
FORCE_PRIVATE:强制要求所有新建的仓库都是私有的
MAX_CREATION_LIMIT:全局默认的每个用户可创建仓库上限,-1 表示无限制
PREFERRED_LICENSES:建议用户首选的授权类型
DISABLE_HTTP_GIT:激活该选项来禁止用户通过 HTTP 对 Git 仓库进行交互操作,即用户只能通过 SSH 操作
ENABLE_LOCAL_PATH_MIGRATION:激活该选项来启用本地路径迁移仓库功能。启动后默认只有管理员可以使用,普通用户必须经由管理员授权

4、 数据库 (database)

DB_TYPE:数据库类型,可以是 mysql、postgres、mssql 或 sqlite3
HOST:数据库主机地址与端口
NAME:数据库名称
USER:数据库用户名
PASSWD:数据库用户密码

5、 安全 (security)

INSTALL_LOCK :用于指示是否允许访问安装页面(该页面可以设置管理员帐号,因此该选项非常重要)
SECRET_KEY:全局的加密密钥,务必修改该值以确保您的服务器安全(会在每次安装时自动生成随机字符串)
LOGIN_REMEMBER_DAYS:记录登录的天数
COOKIE_USERNAME:记录用户名的 Cookie 名称
COOKIE_REMEMBER_NAM:记录用户自动登录信息的 Cookie 名称

6、 服务 (service)

ACTIVE_CODE_LIVE_MINUTES:激活码的有效期,单位为分钟
RESET_PASSWD_CODE_LIVE_MINUTES:重置密码的有效期,单位为分钟
REGISTER_EMAIL_CONFIRM :激活该选项来要求注册用户必须验证邮箱,要求已启用 Mailer
DISABLE_REGISTRATION:激活该选项来禁止用户注册功能,只能由管理员创建帐号
SHOW_REGISTRATION_BUTTON:用于指示是否显示注册按钮
REQUIRE_SIGNIN_VIEW:激活该选项来要求用户必须登录才能浏览任何页面
ENABLE_CACHE_AVATAR:激活该选项来缓存 Gravatar 的头像
ENABLE_NOTIFY_MAIL :激活该选项来发送通知邮件给关注者,例如创建 issue 时,要求已启用 Mailer
ENABLE_REVERSE_PROXY_AUTHENTICATION:激活该选项来开启反向代理用户认证,请从 https://github.com/gogits/gogs/issues/165 了解更多信息
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION:激活该选项来开启反向代理用户认证的自动注册功能
DISABLE_MINIMUM_KEY_SIZE_CHECK :激活该选项来禁止检查响应类型的密钥最小长度
ENABLE_CAPTCHA :激活该选项以在用户注册时要求输入验证码

7、 Web 钩子 (webhook)

TYPES:启动的 Web 钩子类型,可以是 gogs、slack 或 discord
DELIVER_TIMEOUT:发送通知的超时时间,以秒为单位
SKIP_TLS_VERIFY:指示是否允许向具有非信任证书的地址发送通知
PAGING_NUM:Web 钩子历史页面每页显示记录条数

8、 缓存 (cache)

ADAPTER 缓存引擎适配器,可以为 momery、redis 或 memcache。如果使用的是redis 或 memcache,要确保使用 -tags 选项重新构建所有依赖,例如:go build -tags=‘redis’
INTERVAL 仅限内存缓存使用,GC 周期,单位为秒
HOST 仅限 redis 和 memcache 使用,配置主机地址和端口号

9、 会话 (session)

PROVIDER Session:引擎提供者,可以是 memory、file、redis 或 mysql
PROVIDER_CONFIG:如果提供者为 file,则为文件根目录;如果为其它提供者,则为主机地址和端口号
COOKIE_SECURE:激活该选项以要求所有 session 操作均通过 HTTPS
GC_INTERVAL_TIME GC:周期,单位为秒

10、 日志 (log)

ROOT_PATH:日志文件的根目录
MODE:日志记录模式,默认为 console。如果想要开启多模式,请使用逗号分割,例如:“console, file”
LEVEL 基本日志级别,默认为 Trace