Gogs 是一款极易搭建的自助 Git 服务。
Gogs项目旨在打造一个以最简便的方式搭建简单、稳定和可扩展的自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、macOS、Windows 以及 ARM 平台。
一、环境搭建
安装git以及数据库
1、安装git
yum安装即可,使用如下命令
yum install -y git
2、安装数据库
我使用的是mariadb10.0.33
安装方式:
CentOS7离线安装mariadb
二、安装gogs
1、下载gogs安装包
wget https://dl.gogs.io/0.11.86/gogs_0.11.86_linux_amd64.tar.gz
如果提示未找到wget命令,可以使用yum安装
yum install -y wget
2、解压
tar –xzvf gogs_0.11.86_linux_amd64.tar.gz
3、创建git用户
useradd git
4、将gogs安装包所有者改为git
chown -R git:git /home/gogs
三、在数据库上创建gogs用户并授予权限
1、root登录mariadb
mysql -uroot -p123456
2、创建gogs数据库
create database gogs default charset utf8 collate utf8_general_ci;
3、创建gogs用户并授予该用户gogs数据库的全部权限
GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'%' IDENTIFIED BY '123456';
4、刷新权限
flush privileges;
四、运行gos并设置开机自启
1、进入gogs安装路径
cd /home/gogs
2、运行gogs
#默认端口启动
su git
./gogs web
#指定端口启动
su git
./gogs web –port 3001
使用这种方法属于前天启动,会一直在前台运行,如果关闭终端会自动退出,所以要使用后台启动的方法。
3、设置开机自启
- 将gogs的启动脚本复制到/etc/init.d/路径下:
#gogs自己提供了默认的启动脚本,在gogs安装包的scripts/init/路径下,可以根据自己的操作系统选择不同的脚本
cp /home/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.134.159:3001
将自动进入如下安装界面:
2、按照要求填写相关信息,如果需要更改端口,在应用url填写实际的IP和端口即可
填写完毕之后点击确定,转入如下界面表示安装成功
六、 配置文件
前端页面安装gogs成功之后,会在安装包下生成配置文件app.ini,app.ini路径为gogs/custom/conf/app.ini
配置文件中的内容如下所示:
编辑配置文件保存之后,需要重启gogs才会生效
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