Gogs安装配置手册

Gogs安装配置手册插图

一、适用范围及环境:

阿里云服务器操作系统:CentOS 7.4 ;

二、安装步骤:

1. 使用yum安装Git:

# sudo yum install git

2. 添加git用户:

# sudo useradd git

3. 查看CentOS内核版本,确定架构(x64、x86还是arm)

# uname -a

4. 下载与其对应的二进制安装包:

# wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_amd64.tar.gz

5. 将安装包解压至git用户目录下(/home/git)并修改其权限和所有者:

# sudo tar -xf gogs_0.11.66_linux_amd64.tar.gz -C /home/git
# sudo chmod -R 700 /home/git/gogs
# sudo chown -R git:git /home/git/gogs

6. 使用git用户运行gogs:

# sudo su - git -c "cd /home/git/gogs && ./gogs web &"

7. 添加启动项和守护进程:

# sudo ln -sf /home/git/gogs/scripts/systemd/gogs.service /usr/lib/systemd/
# sudo chmod u+x /home/git/gogs/scripts/systemd/gogs.service
# sudo ln -sf /home/git/gogs/scripts/init/centos/gogs /etc/init.d/
# sudo chmod u+x /home/git/gogs/scripts/init/centos/gogs
# sudo /sbin/chkconfig gogs on
# sudo service gogs restart

8. gogs监听了一个3000端口,通过这个端口我们可以访问gogs的web服务。访问http://ip:3000或者http://domain:3000就可以了,首次访问会引导我们安装。
按需求自行配置

 

项目 说明 示例
数据库类型 Gogs提供了多种数据库的选择,mysql、postgresql、mssql、sqlite3。
建议使用mysql和postgresql,我们这里选择mysql。
MySQL
数据库主机 填写数据库地址。
格式[ip:port] or [domain:port]
127.0.0.1:3306
Mysql.test.com:3306
数据库用户 填写数据库用户名。
建议不要使用root,新建一个用户,只授权给gogs的库
gogs
数据库用户密码 填写数据库密码,建议密码强度为高 m3j828rdJUY4
数据库名称 Gogs的数据库名称 gogs
应用名称 填写应用的名称,会显示在web页面上 GOGS代码管理平台
仓库根目录 填写仓库存放的路径。我们挂载了一个100G的硬盘,挂载点为/data /data/gogs/repositories
运行系统用户 运行gogs的用户
为了安全不建议使用root用户运行,用户必须要对仓库目录和运行目录有权限。
gogs
域名 填写域名,此域名会体现在ssh克隆地址上,请事先规划好 git.test.com
SSH 端口号 SSH 服务器的监听端口号,留空表示禁用 SSH 功能 2222

配置好了点击安装,如果没有报错安装成功。

注意:

1、如果在安装页面没有配置管理员帐号,那么安装完成后点击注册按钮注册用户,用户ID为1的用户即为管理员。

2、情特别注意权限问题,gogs目录、仓库目录、日志目录请给足权限。

三、Gogs配置

官方配置项

Gogs安装好了以后会在custom/conf/下面生成一个app.ini的配置文件,通过修改此文件我们可以对gogs进行配置。 详细配置项目如下:

1. 概况

名称 描述
APP_NAME 应用名称,可以改成您的组织或公司名称
RUN_USER 运行应用的用户名称,我们建议您使用 git,但如果您在个人计算机上运行 Gogs,请修改为您的系统用户名称。如果没有正确设置这个值,很可能导致您的应用崩溃
RUN_MODE 鉴于性能和其它考虑,建议在部署环境下修改为 prod 模式。在您完成安装操作时,该值也会被设置为 prod

2. 服务器(server)

名称 描述
PROTOCOL http 或 https
DOMAIN 服务器域名
ROOT_URL 公开的完整 URL 路径
HTTP_ADDR 应用 HTTP 监听地址
HTTP_PORT 应用 HTTP 监听端口号
UNIX_SOCKET_PERMISSION Unix 套接字文件的权限
LOCAL_ROOT_URL 用于 Gogs 工作进程(如:SSH)回访应用的本地(DMZ)URL,一般情况下请保持默认值,除非您的 SSH 服务器节点与 HTTP 并不是同一个节点入口
DISABLE_SSH 当 SSH 功能不可用时可以禁用
START_SSH_SERVER 启用该选项来启动内置 SSH 服务器
SSH_DOMAIN 允许公用网络访问 SSH 的域名
SSH_PORT SSH端口号,如果不为 22 的话可以在此修改
SSH_LISTEN_HOST 内置 SSH 服务器监听的地址
SSH_LISTEN_PORT 内置 SSH 服务器监听的端口
SSH_ROOT_PATH SSH 根目录,一般为 ~/.ssh,但必须填写为 /home/git/.ssh
REWRITE_AUTHORIZED_KEYS_AT_START 激活该选项以在应用启动时自动重写 authorized_keys 文件,该选项在使用内置 SSH 服务器时将会被自动禁用
SSH_KEY_TEST_PATH 用于测试 SSH 公钥的临时目录
SSH_KEYGEN_PATH ssh-keygen 程序的路径,默认为 ssh-keygen 即通过系统路径查找
MINIMUM_KEY_SIZE_CHECK 指定不同类型的公钥的最小密钥大小
OFFLINE_MODE 激活该选项来禁止从 CDN 获取静态资源,同时 Gravatar 服务也将被自动禁用
DISABLE_ROUTER_LOG 激活该选项来禁止打印路由日志
CERT_FILE HTTPS授权文件路径
KEY_FILE HTTPS 的密钥文件路径
STATIC_ROOT_PATH 模板文件和静态文件的上级目录,默认为应用二进制所在的位置
APP_DATA_PATH 应用内部数据的存放目录
ENABLE_GZIP 激活该选项来启用应用级别 GZIP 支持
LANDING_PAGE 未登录用户的默认首页,可以是 home 或 explore(探索页)

3. 仓库(repository)

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

4. 仓库-编辑器(repository.editor)

名称 描述
LINE_WRAP_EXTENSIONS 需要显示为行包装的文件名后缀,通过逗号分隔。如果是无后缀名的文件,则单独放置一个逗号,例如:.txt,

5. 仓库-文件上传(repository.upload)

名称 描述
ENABLED 激活该选项来启用仓库文件上传功能
TEMP_PATH 文件上传的临时存放目录
ALLOWED_TYPES 允许上传的文件类型(例如:”image/jpeg|image/png”),留空表示允许上传任意类型的文件
FILE_MAX_SIZE 单个上传的文件的最大体积,以 MB 为单位
MAX_FILES 单次同时上传的最多文件个数

6. 版本发布-附件(release.attachment)

名称 描述
ENABLED 激活该选项来启用仓库文件上传功能
PATH 存放附件的路径
ALLOWED_TYPES 允许上传的 MIME 类型,例如 “image/jpeg|image/png”,使用 / 允许所有类型的文件
MAX_SIZE 最大允许上传的附件体积,单位为 MB,例如 32
MAX_FILES 最大允许一次性上传的附件个数,例如 10

7. Markdown(markdown)

名称 描述
ENABLE_HARD_LINE_BREAK 指示是否启用硬性换行扩展
CUSTOM_URL_SCHEMES 允许被解析为链接的自定义 URL 方案,例如 git(用于 git://)和magnet(用于 magnet://)
FILE_EXTENSIONS 需要被渲染为 Markdown 格式的文件名后缀,通过逗号分隔。如果是无后缀名的文件,则单独放置一个逗号,例如:.markdown,

8. Smartypants (smartypants)

名称 描述
ENABLED 指示是否启用 Smartypants 扩展

9. HTTP (http)

名称 描述
ACCESS_CONTROL_ALLOW_ORIGIN 头信息 Access-Control-Allow-Origin 的自定义值,默认为空,即不响应此头信息

10. 数据库 (database)

名称 描述
DB_TYPE 数据库类型,可以是 mysql、postgres、mssql 或 sqlite3
HOST 数据库主机地址与端口
NAME 数据库名称
USER 数据库用户名
PASSWD 数据库用户密码
SSL_MODE 仅限 PostgreSQL 使用
PATH 仅限 SQLite3 使用,数据库文件路径

11. 应用管理 (admin)

名称 描述
DISABLE_REGULAR_ORG_CREATION 激活该选项来禁止普通用户(非管理员)创建组织

12. 安全 (security)

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

13. 服务(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 激活该选项来开启反向代理用户认证,请从 #165了解更多信息
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION 激活该选项来开启反向代理用户认证的自动注册功能
DISABLE_MINIMUM_KEY_SIZE_CHECK 激活该选项来禁止检查响应类型的密钥最小长度
ENABLE_CAPTCHA 激活该选项以在用户注册时要求输入验证码

14. Web 钩子(webhook)

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

15. 邮件(mailer)

名称 描述
ENABLED 启用该选项以激活邮件服务
SUBJECT_PREFIX 邮件标题的前缀
HOST SMTP 主机地址与端口
DISABLE_HELO 禁用 HELO 操作
HELO_HOSTNAME HELO 操作的自定义主机名
SKIP_VERIFY 不验证自签发证书的有效性
FROM 邮箱的来自地址,遵循 RFC 5322规范,可以是一个单纯的邮箱地址或者 "名字" email@example.com 的形式
USER 邮箱用户名
PASSWD 邮箱密码
USE_PLAIN_TEXT 使用 text/plain 作为邮件内容格式

备注:Gogs 仅支持使用 STARTTLS 的 SMTP 协议
16. 缓存(cache)

名称 描述
ADAPTER 缓存引擎适配器,可以为 momery、redis 或 memcache。如果您使用 redis 或 memcache,请确保使用 -tags 选项重新构建所有依赖,例如:go build -tags='redis'
INTERVAL 仅限内存缓存使用,GC 周期,单位为秒
HOST 仅限 redis 和 memcache 使用,主机地址和端口号
Redis:network=tcp,addr=127.0.0.1:6379,password=macaron,db=0,pool_size=100,idle_timeout=180
Memache:127.0.0.1:9090;127.0.0.1:9091

17. 会话(session)

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

18. 图片(picture)

名称 描述
AVATAR_UPLOAD_PATH 存放用户上传头像的目录
GRAVATAR_SOURCE 可以是 gravatar、duoshuo 或任何 URL,例如:http://cn.gravatar.com/avatar/
DISABLE_GRAVATAR 激活该选项来仅使用本地头像
ENABLE_FEDERATED_AVATAR 激活该选项来启用 Federated 头像服务(http://www.libravatar.org),当Gravatar 被禁用时此选项无法生效

19. 附件(attachment)

名称 描述
ENABLED 激活该选项以允许用户上传附件
PATH 存放附件的路径
ALLOWED_TYPES 允许上传的 MIME 类型,例如 “image/jpeg|image/png”,使用 / 允许所有类型的文件
MAX_SIZE 最大允许上传的附件体积,单位为 MB,例如 4
MAX_FILES 最大允许一次性上传的附件个数,例如 5

20. 时间(time)

名称 描述
FORMAT 指定日期的输出格式,默认为 RFC1123,其它可选的格式为 ANSIC、UnixDate、RubyDate、RFC822、RFC822Z、RFC850、RFC1123、RFC1123Z、RFC3339、RFC3339Nano、Kitchen、|Stamp、StampMilli、StampMicro 和 StampNano。访问 http://golang.org/pkg/time/#pkg-constants 查看详情

21. 日志(log)

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

22. 日志 - 控制台(log.console)

名称 描述
LEVEL 控制台日志级别,留空则继承父值

23. 日志 - 文件(log.file)

名称 描述
LEVEL 控制台日志级别,留空则继承父值
LOG_ROTATE 激活该选项以启用日志文件自转
DAILY_ROTATE 激活该选项以进行日常自转
MAX_SIZE_SHIFT 自转需要达到的最大文件体积,使用位左移,默认为 28 即 1 << 28,表示 256MB
MAX_LINES 自转需要达到的最大文件行数,默认为 1000000
MAX_DAYS 保留自转文件的最长期限,默认为 7 天后删除

24. 日志 - Slack(log.slack)

名称 描述
LEVEL 控制台日志级别,留空则继承父值
URL Slack Web 钩子 URL

25. Cron(cron)

名称 描述
ENABLED 激活该选项以允许周期性运行 Cron 任务
RUN_AT_START 激活该选项以允许在启动时执行 Cron 任务

26. Cron - 更新镜像(cron.update_mirrors)

名称 描述
SCHEDULE 定时更新仓库镜像的 Cron 语法,例如:@every 1h

27. Cron - 仓库健康检查(cron.repo_health_check)

名称 描述
SCHEDULE 定时进行仓库健康检查的 Cron 语法,例如:@every 24h
TIMEOUT 仓库健康检查超时的定义语法,例如:60s
ARGS git fsck 命令的参数,例如:--unreachable --tags

28. Cron - 仓库统计检查(cron.check_repo_stats)

名称 描述
RUN_AT_START 激活该选项以在启动时执行仓库统计检查
SCHEDULE 定时进行仓库统计检查的 Cron 语法,例如:@every 24h

29. Cron - 仓库归档清理(cron.repo_archive_cleanup)

名称 描述
RUN_AT_START 激活该选项以在启动时执行仓库归档清理
SCHEDULE 定时进行仓库归档清理的 Cron 语法,例如:@every 24h
OLDER_THAN 仓库归档的文件有效期,过期的归档将被清理,例如:24h

30. Git(git)

名称 描述
DISABLE_DIFF_HIGHLIGHT 激活该选项以禁用行内差异高亮
MAX_GIT_DIFF_LINES 差异对比页面单个文件显示的最大行数
MAX_GIT_DIFF_LINE_CHARACTERS 差异对比页面单行显示的最大字符数
MAX_GIT_DIFF_FILES 差异对比页面文件显示的最多个数
GC_ARGS git gc 命令的参数,例如:--aggressive --auto

31. Git - 超时(git.timeout)

名称 描述
MIGRATE 仓库迁移操作超时,默认为 600 秒
MIRROR 仓库镜像同步操作超时,默认为 300 秒
CLONE 仓库克隆操作超时,默认为 300 秒
PULL 仓库拉取操作超时,默认为 300 秒
GC 仓库垃圾回收操作超时,默认为 60 秒

32. UI(ui)

名称 描述
EXPLORE_PAGING_NUM 探索页面每页显示仓库的数量
ISSUE_PAGING_NUM 每页显示工单(Issue)的数量(应用到所有以列表形式显示工单的页面) 300 秒
FEED_MAX_COMMIT_NUM 一条最新活动中显示代码提交(Commit)的最大数量
THEME_COLOR_META_TAG 被用于 Android >= 5.0 版本 “theme-color” 标记的值,无效的值将被忽略并使用默认值(查看详情)
MAX_DISPLAY_FILE_SIZE 显示到页面的最大文件体积(Byte)

UI - Admin(ui.admin)

名称 描述
USER_PAGING_NUM 用户管理页面每页显示记录条数
REPO_PAGING_NUM 仓库管理页面每页显示记录条数
NOTICE_PAGING_NUM 系统提示管理页面每页显示记录条数
ORG_PAGING_NUM 组织管理页面每页显示记录条数

33. 其他(other)

名称 描述
SHOW_FOOTER_BRANDING 激活该选项以在页脚显示 Gogs 推广信息
SHOW_FOOTER_VERSION 激活该选项以在页脚显示 Gogs 版本信息
SHOW_FOOTER_TEMPLATE_LOAD_TIME 激活该选项以在页脚显示 Gogs 模板加载时间

按照如上配置项目修改配置文件,重启后生效。

ps -aux        //完整的显示当前用户的所有进程
ps -ef|grep <进程名>    //查看并筛选 跟进程名有关的进程,该进程名可以是进程的全部或者部分。
kil -9 pid       //关闭进程

我们使用如下配置:

APP_NAME = GOGS代码托管平台
RUN_USER = gogs
RUN_MODE = prod

[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gogs
USER = gogs
PASSWD = gogs@123
SSL_MODE = disable
PATH = data/gogs.db
[admin]
DISABLE_REGULAR_ORG_CREATION = true

[repository]
ROOT = /data/gogs/repositories
MAX_CREATION_LIMIT = 0
ENABLE_LOCAL_PATH_MIGRATION = true
FORCE_PRIVATE = true
DISABLE_HTTP_GIT = false

[server]
DOMAIN = git.example.com
HTTP_PORT = 3000
ROOT_URL = https://git.example.com/
DISABLE_SSH = false
SSH_PORT = 2222
START_SSH_SERVER = true
OFFLINE_MODE = false
ENABLE_GZIP = true

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = true
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false

[picture]
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = false

[session]
PROVIDER = file

[log]
MODE = file
LEVEL = Trace
ROOT_PATH = /data/gogs/logs

[security]
INSTALL_LOCK = true
SECRET_KEY = QSL4Bv87UrgzZsK
LOGIN_REMEMBER_DAYS = true
COOKIE_USERNAME = true
COOKIE_REMEMBER_NAME = true
REVERSE_PROXY_AUTHENTICATION_USER = true

[webhook]
TYPES = gogs
DELIVER_TIMEOUT = 300
SKIP_TLS_VERIFY = true
PAGING_NUM = true

[cron]
ENABLED = true

四、 使用约定

权限规定
Gogs代码托管平台用于企业内部的代码管理,不对外,为了更好的管理我们约定如下:

服务配置:

  1. 禁止用户注册。
  2. 禁止创建仓库,只允许超级管理员能创建。
  3. 不允许需要用户名和昵称(通过需要页面实现)

代码库管理:

  1. 所有代码库都在一个组织下。
  2. 禁止对组织授权,组织内只有超级管理员。
  3. 对需要权限的开发者,添加到协作者中,默认可写权限(可写权限包含了读写)。
  4. 分支管理中默认分支为master。
  5. 开启对maste的分支保护,开启通过合并请求提交代码。
  6. 开启对master的分支保护,开启限制推送代码成员,仅允许小组负责人推送到master。

代码发布:

  1. 发布前,负责人需要提交合并到master,并且负责对代码冲突解决和代码评审。
  2. 涉及到版本更迭需要负责人打标签。
  3. 无论是测试或是正式环境,只发布master分支的代码或者tag标签。

 

gogs的配置基本完成,如果想了解更多信息,还请移步《Gogs官方配置手册文件》

 

参考文档:

《CentOS7下gogs安装总结》

点赞 1

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。

相关推荐

Linux使用 history 查看命令执行时间方案

在linux下,有时我们需要知道有些命令执行后,运行大概花费了多少时间,这个时候我们就需要用到以下命令: # export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # history 所以,可以在某些命令执行完毕之后,打一些不痛不痒的命令,例如:# ls ,这样就可以在使用历 ...

vi/vim 不正常退出产生的swp文件如何处理

在使用Linux的操作系统中,当我们在非正常关闭vi/vim编辑器时会生成一个.swp文件,可能就会出现类似以下报错,而且每次使用都会有该提示: “.bash_profile.swp” already exists! [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit: 产生以上报错的原因大致分 ...

linux修改文件权限遭遇Operation not permitted

当想给文件夹赋予777权限,然后你看到以下提示: [root@server wwwroot]# chmod -R 777 wenjian chmod: changing permissions of ‘wenjian/.user.ini’: Operation not permitted 心情(/ □ \)…… 是 user.ini 这个文件不允许修改导致的报错。 解决起来也也很容易 ...

Linux下mysql远程连接出现Error 1130问题

解决该问题有以下两个方法 1、改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%” mysql -u root -pvmware mysql>use mysq ...

微信扫一扫,分享到朋友圈

Gogs安装配置手册