Gogs官方幫助文檔

環境要求

  • 數據庫(選擇如下一項):php

    • MySQL:版本 >= 5.7
    • PostgreSQL
    • MSSQL
    • TiDB(實驗性支持,使用 MySQL 協議鏈接)
    • 或者 什麼都不安裝 直接使用 SQLite3
  • githtml

    (bash):mysql

    • 服務端和客戶端均需版本 >= 1.7.1
    • Windows 系統建議使用最新版
  • SSH 服務器:linux

    • 若是您只使用 HTTP/HTTPS 的話請忽略此項
    • 若是您選擇在 Windows 系統使用內置 SSH 服務器,請確保添加 ssh-keygen 到您的 %PATH% 環境變量中
    • 推薦 Windows 系統使用 Cygwin OpenSSHCopssh
    • Windows 系統 請確保 Bash 是默認的 Shell 程序,而不是 PowerShell

安裝數據庫

請根據您的選擇進行安裝:git

注意事項 您可使用 etc/mysql.sql 來自動建立名爲 gogs 的數據庫。若是您選擇手動建立,請務必將編碼設置爲 utf8mb4github

安裝其它要求

Mac OS X

假設您已經安裝 Homebrewgolang

$ brew update
$ brew install git

Debian/Ubuntu

$ sudo apt-get update
$ sudo apt-get install git

Windows

下載並安裝 Gitweb

安裝 Gogs

二進制安裝

目前只提供最近發佈的小版本二進制下載,更多版本下載請前往 GitHub 查看。redis

全部的版本都支持 MySQLPostgreSQLMSSQLTiDB(使用 MySQL 協議)做爲數據庫,而且均使用構建標籤(build tags)cert 進行構建。須要注意的是,不一樣的版本的支持狀態有所不一樣,請根據實際的 Gogs 提示進行操做。sql

備註

  • mws 表示提供內置 Windows 服務支持,若是您使用 NSSM 請使用另一個版本。

如何使用下載好的壓縮包?

  1. 解壓壓縮包。
  2. 使用命令 cd 進入到剛剛建立的目錄。
  3. 執行命令 ./gogs web,而後,就沒有而後了。

安裝完成後可繼續參照 配置與運行

如何經過二進制升級?

  1. 下載最新版的壓縮包。
  2. 刪除當前的 templates 目錄。
  3. 解壓壓縮包並將全部內容複製粘貼到相應(當前)的位置。

源碼安裝

安裝依賴

基本依賴

安裝 Go 語言

若是您的系統已經安裝要求版本的 Go 語言,能夠跳過此小節。

下載

您能夠經過如下方式安裝 Go 語言到 /home/git/local/go 目錄:

sudo su - git
cd ~
# create a folder to install 'go'
mkdir local
# Download go (change go$VERSION.$OS-$ARCH.tar.gz to the latest release)
wget https://storage.googleapis.com/golang/go$VERSION.$OS-$ARCH.tar.gz
# expand it to ~/local
tar -C /home/git/local -xzf go$VERSION.$OS-$ARCH.tar.gz

設置環境

請設置和您系統環境對應的路徑:

sudo su - git
cd ~
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc
source $HOME/.bashrc

安裝 Gogs

經常使用的安裝方式:

# 下載並安裝依賴
$ go get -u github.com/gogs/gogs

# 構建主程序
$ cd $GOPATH/src/github.com/gogs/gogs
$ go build

構建 develop 分支版本

若是您想要安裝 develop(或其它)分支版本,則能夠經過如下命令:

$ mkdir -p $GOPATH/src/github.com/gogs
$ cd $GOPATH/src/github.com/gogs

# 請確保沒有使用 「https://github.com/gogs/gogs.git」
$ git clone --depth=1 -b develop https://github.com/gogs/gogs
$ cd gogs
$ go build

測試安裝

您能夠經過如下方式檢查 Gogs 是否能夠正常工做:

cd $GOPATH/src/github.com/gogs/gogs
./gogs web

若是您沒有發現任何錯誤信息,則可使用 Ctrl-C 來終止運行。

使用標籤構建

Gogs 默認並無支持一些功能,這些功能須要在構建時明確使用構建標籤(build tags)來支持。

目前使用標籤構建的功能以下:

  • sqlite3:SQLite3 數據庫支持
  • pam:PAM 受權認證支持
  • cert:生成自定義證書支持
  • miniwinsvc:Windows 服務內置支持(或者您可使用 NSSM 來建立服務)

例如,您須要支持以上全部功能,則須要先刪除 $GOPATH/pkg/{GOOS_GOARCH}/github.com/gogs/gogs 目錄,而後執行如下命令:

$ go get -u -tags "sqlite pam cert" github.com/gogs/gogs
$ cd $GOPATH/src/github.com/gogs/gogs
$ go build -tags "sqlite pam cert"

安裝完成後可繼續參照 配置與運行

包管理安裝

如下均爲第三方提供,後果自負!

Packager.io

  • 當前支持 Ubuntu 14.04 + 16.04 + 18.0四、CentOS 6 + 7 和 Debian 8 + 9 + 10 版本。
  • 能夠從 packager.io 獲取到相應包管理資源(該工具的自定義配置文件有時會放置在 /etc/default/gogs)。

Arch Linux

能能夠到 Arch Linux Wiki entry 查看完整說明。

配置與運行

配置文件

默認配置文件

默認配置都保存在 conf/app.ini,您 永遠不須要 編輯它。該文件從 v0.6.0 版本開始被嵌入到二進制中。

自定義配置文件

那麼,在不容許修改默認配置文件 conf/app.ini 的狀況下,怎麼才能自定義配置呢?很簡單,只要建立 custom/conf/app.ini 就能夠!在 custom/conf/app.ini 文件中修改相應選項的值便可。

例如,須要改變倉庫根目錄的路徑:

[repository]
ROOT = /home/jiahuachen/gogs-repositories

固然,您也能夠修改數據庫配置:

[database]
PASSWD = root

爲何要這麼作?

乍一看,這麼作有些複雜,可是這麼作能夠有效地保護您的自定義配置不被破壞:

  • 從二進制安裝的用戶,能夠直接替換二進制及其它文件而不至於從新編寫自定義配置。
  • 從源碼安裝的用戶,能夠避免因爲版本管理系統致使的文件修改衝突。

運行 Gogs 服務

開發者模式

  • 您須要在 custom/conf/app.ini 文件中將選項 security -> INSTALL_LOCK 的值設置爲 true

  • 您可使用超能的 make 命令:

    $ make
    $ ./gogs web

部署模式

腳本均放置在 scripts 目錄,但請在倉庫根目錄執行它們

  • Gogs 支持多種方式的啓動:
    • 普通:只需執行 ./gogs web
    • 守護進程:詳見 scripts 文件夾
  • 而後訪問 /install 來完成首次運行的配置工做

配置文件手冊

本手冊會詳盡地描述有關 Gogs 配置文件的選項,幫助您更好地理解和使用 Gogs。

請記住,任何修改都是發生在 custom/conf/app.ini 自定義配置文件中,該文件的具體位置與您的設置有關。

完整的默認設置能夠經過 app.ini 文件查看。若是您看到相似 %(X)s 字符,這是由 ini 提供的遞歸取值的特性。

概覽

名稱 描述
APP_NAME 應用名稱,能夠改爲您的組織或公司名稱
RUN_USER 運行應用的用戶名稱,咱們建議您使用 git,但若是您在我的計算機上運行 Gogs,請修改成您的系統用戶名稱。若是沒有正確設置這個值,極可能致使您的應用崩潰
RUN_MODE 鑑於性能和其它考慮,建議在部署環境下修改成 prod 模式。在您完成安裝操做時,該值也會被設置爲 prod

服務器 (server)

名稱 描述
PROTOCOL httphttps
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 未登陸用戶的默認首頁,能夠是 homeexplore(探索頁)

倉庫 (repository)

名稱 描述
ROOT 用戶倉庫存儲根目錄,必須爲絕對路徑,默認爲 ~/<user name>/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 激活該選項來啓用本地路徑遷移倉庫功能。啓動後默認只有管理員可使用,普通用戶必須經由管理員受權
ENABLE_RAW_FILE_RENDER_MODE 激活該選項來啓用在查看原始數據時對頁面進行真實渲染,例如渲染實際的 HTML 頁面,有潛在安全隱患

倉庫 - 編輯器 (repository.editor)

名稱 描述
LINE_WRAP_EXTENSIONS 須要顯示爲行包裝的文件名後綴,經過逗號分隔。若是是無後綴名的文件,則單獨放置一個逗號,例如:.txt,

倉庫 - 文件上傳 (repository.upload)

名稱 描述
ENABLED 激活該選項來啓用倉庫文件上傳功能
TEMP_PATH 文件上傳的臨時存放目錄
ALLOWED_TYPES 容許上傳的文件類型(例如:」image/jpeg|image/png」),留空表示容許上傳任意類型的文件
FILE_MAX_SIZE 單個上傳的文件的最大致積,以 MB 爲單位
MAX_FILES 單次同時上傳的最多文件個數

版本發佈 - 附件 (release.attachment)

名稱 描述
ENABLED 激活該選項來啓用版本發佈附件功能
PATH 存放附件的路徑
ALLOWED_TYPES 容許上傳的 MIME 類型,例如 「image/jpeg|image/png」,使用 */* 容許全部類型的文件
MAX_SIZE 最大容許上傳的附件體積,單位爲 MB,例如 32
MAX_FILES 最大容許一次性上傳的附件個數,例如 10

Markdown (markdown)

名稱 描述
ENABLE_HARD_LINE_BREAK 指示是否啓用硬性換行擴展
CUSTOM_URL_SCHEMES 容許被解析爲連接的自定義 URL 方案,例如 git(用於 git://)和magnet(用於 magnet://
FILE_EXTENSIONS 須要被渲染爲 Markdown 格式的文件名後綴,經過逗號分隔。若是是無後綴名的文件,則單獨放置一個逗號,例如:.markdown,

Smartypants (smartypants)

名稱 描述
ENABLED 指示是否啓用 Smartypants 擴展

HTTP (http)

名稱 描述
ACCESS_CONTROL_ALLOW_ORIGIN 頭信息 Access-Control-Allow-Origin 的自定義值,默認爲空,即不響應此頭信息

數據庫 (database)

名稱 描述
DB_TYPE 數據庫類型,能夠是 mysqlpostgresmssqlsqlite3
HOST 數據庫主機地址與端口
NAME 數據庫名稱
USER 數據庫用戶名
PASSWD 數據庫用戶密碼
SSL_MODE 僅限 PostgreSQL 使用
PATH 僅限 SQLite3 使用,數據庫文件路徑

應用管理 (admin)

名稱 描述
DISABLE_REGULAR_ORG_CREATION 激活該選項來禁止普通用戶(非管理員)建立組織

安全 (security)

名稱 描述
INSTALL_LOCK 用於指示是否容許訪問安裝頁面(該頁面能夠設置管理員賬號,所以該選項很是重要)
SECRET_KEY 全局的加密密鑰,務必修改該值以確保您的服務器安全(會在每次安裝時自動生成隨機字符串)
LOGIN_REMEMBER_DAYS 記住登陸的天數
COOKIE_USERNAME 記錄用戶名的 Cookie 名稱
COOKIE_REMEMBER_NAME 記錄用戶自動登陸信息的 Cookie 名稱
REVERSE_PROXY_AUTHENTICATION_USER 反向代理認證用戶的 Header 字段名

服務 (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 激活該選項以在用戶註冊時要求輸入驗證碼

Web 鉤子 (webhook)

名稱 描述
TYPES 啓動的 Web 鉤子類型,能夠是 gogsslackdiscorddingtalk
QUEUE_LENGTH Web鉤子隊列長度,若是發現部分Webhook未能成功觸發,可考慮增長該值
DELIVER_TIMEOUT 發送通知的超時時間,以秒爲單位
SKIP_TLS_VERIFY 指示是否容許向具備非信任證書的地址發送通知
PAGING_NUM Web 鉤子歷史頁面每頁顯示記錄條數

郵件 (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 協議

緩存 (cache)

名稱 描述
ADAPTER 緩存引擎適配器,能夠爲 memoryredismemcache。若是您使用 redismemcache,請確保使用 -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

會話 (session)

名稱 描述
PROVIDER Session 引擎提供者,能夠是 memoryfileredismysql
PROVIDER_CONFIG 若是提供者爲 file,則爲文件根目錄;若是爲其它提供者,則爲主機地址和端口號
COOKIE_SECURE 激活該選項以要求全部 session 操做均經過 HTTPS
GC_INTERVAL_TIME GC 週期,單位爲秒

圖片 (picture)

名稱 描述
AVATAR_UPLOAD_PATH 存放用戶上傳頭像的目錄
GRAVATAR_SOURCE 能夠是 gravatarduoshuo 或任何 URL,例如:http://cn.gravatar.com/avatar/
DISABLE_GRAVATAR 激活該選項來僅使用本地頭像
ENABLE_FEDERATED_AVATAR 激活該選項來啓用 Federated 頭像服務(http://www.libravatar.org),當 Gravatar 被禁用時此選項沒法生效

附件 (attachment)

名稱 描述
ENABLED 激活該選項以容許用戶上傳附件
PATH 存放附件的路徑
ALLOWED_TYPES 容許上傳的 MIME 類型,例如 「image/jpeg|image/png」,使用 */* 容許全部類型的文件
MAX_SIZE 最大容許上傳的附件體積,單位爲 MB,例如 4
MAX_FILES 最大容許一次性上傳的附件個數,例如 5

時間 (time)

名稱 描述
FORMAT 指定日期的輸出格式,默認爲 RFC1123,其它可選的格式爲 ANSIC、UnixDate、RubyDate、RFC82二、RFC822Z、RFC850、RFC112三、RFC1123Z、RFC333九、RFC3339Nano、Kitchen、Stamp、StampMilli、StampMicro 和 StampNano。訪問 http://golang.org/pkg/time/#pkg-constants 查看詳情

日誌 (log)

名稱 描述
ROOT_PATH 日誌文件的根目錄
MODE 日誌記錄模式,默認爲 console。若是想要開啓多模式,請使用逗號分割,例如:"console, file"
LEVEL 基本日誌級別,默認爲 Trace

日誌 - 控制檯 (log.console)

名稱 描述
LEVEL 控制檯日誌級別,留空則繼承父值

日誌 - 文件 (log.file)

名稱 描述
LEVEL 文件日誌級別,留空則繼承父值
LOG_ROTATE 激活該選項以啓用日誌文件自轉
DAILY_ROTATE 激活該選項以進行平常自轉
MAX_SIZE_SHIFT 自轉須要達到的最大文件體積,使用位左移,默認爲 28 即 1 << 28,表示 256MB
MAX_LINES 自轉須要達到的最大文件行數,默認爲 1000000
MAX_DAYS 保留自轉文件的最長期限,默認爲 7 天后刪除

日誌 - Slack (log.slack)

名稱 描述
LEVEL Slack 日誌級別,留空則繼承父值
URL Slack Web 鉤子 URL

日誌 - Discord (log.discord)

名稱 描述
LEVEL Discord 日誌級別,留空則繼承父值
URL Discord Web 鉤子 URL
USERNAME 在 Web 鉤子中顯示的用戶名

Cron (cron)

名稱 描述
ENABLED 激活該選項以容許週期性運行 Cron 任務
RUN_AT_START 激活該選項以容許在啓動時執行 Cron 任務

Cron - 更新鏡像 (cron.update_mirrors)

名稱 描述
SCHEDULE 定時更新倉庫鏡像的 Cron 語法,例如:@every 1h

Cron - 倉庫健康檢查 (cron.repo_health_check)

名稱 描述
SCHEDULE 定時進行倉庫健康檢查的 Cron 語法,例如:@every 24h
TIMEOUT 倉庫健康檢查超時的定義語法,例如:60s
ARGS git fsck 命令的參數,例如:--unreachable --tags

Cron - 倉庫統計檢查 (cron.check_repo_stats)

名稱 描述
RUN_AT_START 激活該選項以在啓動時執行倉庫統計檢查
SCHEDULE 定時進行倉庫統計檢查的 Cron 語法,例如:@every 24h

Cron - 倉庫歸檔清理 (cron.repo_archive_cleanup)

名稱 描述
RUN_AT_START 激活該選項以在啓動時執行倉庫歸檔清理
SCHEDULE 定時進行倉庫歸檔清理的 Cron 語法,例如:@every 24h
OLDER_THAN 倉庫歸檔的文件有效期,過時的歸檔將被清理,例如:24h

Git (git)

名稱 描述
DISABLE_DIFF_HIGHLIGHT 激活該選項以禁用行內差別高亮
MAX_GIT_DIFF_LINES 差別對比頁面單個文件顯示的最大行數
MAX_GIT_DIFF_LINE_CHARACTERS 差別對比頁面單行顯示的最大字符數
MAX_GIT_DIFF_FILES 差別對比頁面文件顯示的最多個數
GC_ARGS git gc 命令的參數,例如:--aggressive --auto

Git - 超時 (git.timeout)

名稱 描述
MIGRATE 倉庫遷移操做超時,默認爲 600
MIRROR 倉庫鏡像同步操做超時,默認爲 300
CLONE 倉庫克隆操做超時,默認爲 300
PULL 倉庫拉取操做超時,默認爲 300
GC 倉庫垃圾回收操做超時,默認爲 60

UI (ui)

名稱 描述
EXPLORE_PAGING_NUM 探索頁面每頁顯示倉庫的數量
ISSUE_PAGING_NUM 每頁顯示工單(Issue)的數量(應用到全部以列表形式顯示工單的頁面)
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 組織管理頁面每頁顯示記錄條數

Prometheus (prometheus)

名稱 描述
ENABLED 激活該選項以啓用 Prometheus 監控信息,默認爲 true
ENABLE_BASIC_AUTH 激活該選項以啓用 HTTP 基本認證保護監控信息數據,默認爲 false
BASIC_AUTH_USERNAME HTTP 基本認證的用戶名
BASIC_AUTH_PASSWORD HTTP 基本認證的密碼

其餘 (other)

名稱 描述
SHOW_FOOTER_BRANDING 激活該選項以在頁腳顯示 Gogs 推廣信息
SHOW_FOOTER_VERSION 激活該選項以在頁腳顯示 Gogs 版本信息
SHOW_FOOTER_TEMPLATE_LOAD_TIME 激活該選項以在頁腳顯示 Gogs 模板加載時間
相關文章
相關標籤/搜索