• 常见问题
    • 部署应用
      • 如果我已经有其它应用使用端口 3000 了怎么办?
      • 如何使用 NGINX 的反向代理?
        • 配置子路径
        • 为什么上传大文件时总是发生错误?
        • 如果我用的是 Apache 2 怎么配置子路径?
        • 有没有用 lighttpd 配置子路径的例子?
      • 如何使用 HTTPS?
      • 如何使用离线模式?
      • 如何使用自定义 robots.txt?
      • 如何以守护进程形式运行?
      • Systemd 服务
    • 管理权限
      • 如何成为管理员?
    • 仓库管理
      • 如何给予用户 Git 钩子权限?
    • 其它
      • 如何获取 Gogs 当前版本?

    常见问题

    部署应用

    如果我已经有其它应用使用端口 3000 了怎么办?

    您可以在您第一次启动 Gogs 的时候通过以下方式修改默认的监听端口:

    1. ./gogs web -port 3001

    该方法同样会在您填写安装页面时生效,因此请选择一个您希望以后一直给 Gogs 使用的端口号。

    如何使用 NGINX 的反向代理?

    nginx.conf 文件中,将下面的 server 部分增加至 http 分区内并重载配置:

    1. server {
    2. listen 80;
    3. server_name git.crystalnetwork.us;
    4. location / {
    5. proxy_pass http://localhost:3000;
    6. }
    7. }
    配置子路径

    如果您想要通过域名的子路径来访问 Gogs 实例,可以将 NGINX 的配置修改为以下形式(特别注意后缀 /):

    1. server {
    2. listen 80;
    3. server_name git.crystalnetwork.us;
    4. location /gogs/ {
    5. proxy_pass http://localhost:3000/;
    6. }
    7. }

    然后在配置文件中设置 [server] ROOT_URL = http://git.crystalnetwork.us/gogs/

    为什么上传大文件时总是发生错误?

    想要了解如何让 NGINX 支持大文件上传的讨论,可以查看 此贴 。一般 NGINX 会返回 413 错误,在配置文件中加入以下内容可以解决该问题:

    1. client_max_body_size 50m;
    如果我用的是 Apache 2 怎么配置子路径?

    可以尝试使用下面的配置模板:

    1. <VirtualHost *:443>
    2. ...
    3. <Proxy *>
    4. Order allow,deny
    5. Allow from all
    6. </Proxy>
    7. ProxyPass /git http://127.0.0.1:3000/
    8. ProxyPassReverse /git http://127.0.0.1:3000/
    9. </VirtualHost>
    有没有用 lighttpd 配置子路径的例子?

    可以尝试使用下面的配置模板:

    1. server.modules += ( "mod_proxy_backend_http" )
    2. $HTTP["url"] =~ "^/gogs" {
    3. proxy-core.protocol = "http"
    4. proxy-core.backends = ( "localhost:3000" )
    5. proxy-core.rewrite-request = (
    6. "_uri" => ( "^/gogs/?(.*)" => "/$1" ),
    7. "Host" => ( ".*" => "localhost:3000" ),
    8. )
    9. }

    如何使用 HTTPS?

    custom/conf/app.ini 文件中修改下列配置选项(以下仅为示例):

    1. [server]
    2. PROTOCOL = https
    3. ROOT_URL = https://try.gogs.io/
    4. CERT_FILE = custom/https/cert.pem
    5. KEY_FILE = custom/https/key.pem

    如果您想要使用自签名的 HTTPS,则可以使用下列命令来生成所需文件(需要使用构建标签 cert 或直接从官方下载二进制):

    1. $ ./gogs cert -ca=true -duration=8760h0m0s -host=myhost.example.com

    如何使用离线模式?

    如果您需要将 Gogs 运行于内网环境下,只需将 custom/conf/app.ini 文件中的配置选项 server -> OFFLINE_MODE 修改为 true 即可。

    如何使用自定义 robots.txt?

    custom 目录下创建 robots.txt 文件即可。

    如何以守护进程形式运行?

    Gogs 拥有一些由第三方提供的脚本来支持以守护进程形式运行:

    • init.d/centos
    • init.d/debian
    • 下小节中的 Systemd 服务

    Systemd 服务

    在 GitHub 上的 Gogs 仓库有一个 systemd 服务模版文件,您需要做出一定的修改才能够使用它:

    1. 更新 UserGroupWorkingDirectoryExecStartEnvironment 为相对应的值。其中 WorkingDirectory 为您的 Gogs 实际安装路径根目录。
    2. [可选] 如果您 Gogs 安装示例使用 MySQL/MariaDBPostgreSQLRedismemcached,请去掉相应 After 属性的注释。

    当您完成修改后,请将文件保存至 /etc/systemd/system/gogs.service,然后通过 sudo systemctl enable gogs 命令激活,最后执行 sudo systemctl start gogs

    您可以通过 sudo systemctl status gogs -lsudo journalctl -b -u gogs 命令检查 Gogs 的运行状态。

    管理权限

    如何成为管理员?

    1. 当用户注册时 ID = 1 则会自动成为管理员,无需邮箱验证。
    2. 默认管理员登录 Admin -> Users 面板并设置其它人员为管理员。
    3. 通过安装页面注册的用户会自动成为管理员。

    仓库管理

    如何给予用户 Git 钩子权限?

    由于这是一个 可能损坏您系统的高级权限,您必须在用户管理面板(/admin/users/:userid)为您完全信任的用户单独开启。

    其它

    如何获取 Gogs 当前版本?

    纯文本形式的 Gogs 版本存储在文件 templates/.VERSION 中。