使用 Gogs 搭建自己的 Git 服務器


安裝過程分為這些步驟:

  • 新建用戶;
  • 下載源碼編譯 / 下載預編譯二進制打包;
  • 運行安裝;
  • 配置調整;
  • 配置 nginx 反向代理;
  • 保持服務運行;

注意,這里默認你已經安裝好了 MySQL 服務器和 nginx,如果沒有,請自行查找如何安裝和配置這些依賴。當然你也可以使用 SQLite 數據庫。

新建用戶

Gogs 默認以 git 用戶運行(你應該也不會想一個能修改 ssh 配置的程序以 root 用戶運行吧?)。
運行 sudo adduser git 新建好 git 用戶。
su git 以 git 用戶登錄,到 git 用戶的主目錄中新建好 .ssh 文件夾。

下載解包

我使用的是預編譯的二進制包。需要從源碼編譯的話,請參考一般 Go 語言項目的編譯。下載后解包到你喜歡的地方,例如 /usr/share/gogs/ 或者 /home/git/gogs/ 。文件夾的內容如下。

$ ls /home/git/gogs/
custom  data  gogs  LICENSE  log  public  README.md  README_ZH.md  scripts  templates

運行安裝

首先建立好數據庫。

在安裝完mysql之后,我們還需要創建一個數據庫,將之取名為gogs,

CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON gogs.* TO ‘root’@‘localhost’;
FLUSH PRIVILEGES;

在 Gogs 目錄的 scripts/mysql.sql 文件是數據庫初始化文件。執行 mysql -u root -p < scripts/mysql.sql (需要輸入密碼)即可初始化好數據庫。

然后登錄 MySQL 創建一個新用戶 gogs,並將數據庫 gogs 的所有權限都賦予該用戶。

$ mysql -u root -p
> # (輸入密碼)
> create user 'gogs'@'localhost' identified by '密碼';
> grant all privileges on gogs.* to 'gogs'@'localhost';
> flush privileges;
> exit;

運行 gogs web 把 Gogs 運行起來,然后訪問 http://服務器IP:3000/ 來進行安裝,填寫好表單之后提交就可以了。

需要注意的是, 0.6.9.0903 Beta 版本有個 bug,允許在關閉注冊的情況下不添加管理員,這樣安裝完成之后將沒有任何用戶可以登錄。所以請務必在安裝界面指定一個管理員帳號。

配置調整

配置文件位於 Gogs 目錄的 custom/conf/app.ini ,是 INI 格式的文本文件。詳細的配置解釋和默認值請參考 官方文檔 ,其中關鍵的配置大概是下面這些。

  • RUN_USER 默認是 git ,指定 Gogs 以哪個用戶運行
  • ROOT 所有倉庫的存儲根路徑
  • PROTOCOL 如果你使用 nginx 反代的話請使用 http ,如果直接裸跑對外服務的話隨意
  • DOMAIN 域名。會影響 SSH clone 地址
  • ROOT_URL 完整的根路徑,會影響訪問時頁面上鏈接的指向,以及 HTTP clone 的地址
  • HTTP_ADDR 監聽地址,使用 nginx 的話建議 127.0.0.1 ,否則 0.0.0.0 也可以
  • HTTP_PORT 監聽端口,默認 3000
  • INSTALL_LOCK 鎖定安裝頁面
  • Mailer 相關的選項

其中,Mailer 可以使用 Mailgun 的免費郵件發送服務,將 Mailgun 的 SMTP 配置填入到配置中就好。

nginx 反代

/etc/nginx/sites-available 中新建一個文件,把以下內容寫入文件中。

server {
    server_name 域名或IP;
    listen 80; # 或者 443,如果你使用 HTTPS 的話
    # ssl on; 是否啟用加密連接
    # 如果你使用 HTTPS,還需要填寫 ssl_certificate 和 ssl_certificate_key
    location / { # 如果你希望通過子路徑訪問,此處修改為子路徑,注意以 / 開頭並以 / 結束
        proxy_pass http://127.0.0.1:3000/;
    }
}

 

然后進入 /etc/nginx/sites-enabled 中,執行 ln -s ../sites-available/配置文件名 啟用這個配置文件。

最后重啟 nginx 就好了,Ubuntu 下是 sudo service nginx restart

服務腳本

此處的服務腳本是針對 Debian 系的 init 腳本。

其他地方處理辦法:

gogs提供多重方式進行安裝,比較常用的有兩種。一個是二進制安裝,另一個是通過源代碼安裝。

然后切換到解壓得到的目錄之后,直接運行 ./gogs web 即可在服務器上運行gogs服務了。

./gogs -h 得到更多的命令行參數說明。

nohup gogs/gogs web > log/gogs_web.log 2>&1 &

啟動gogs服務之后,首次運行會讓你進行相關的配置。

主要分為3個配置項,

一是數據庫的配置,包括數據庫地址及密碼;

二是服務的應用配置,包括域名,路徑等等;

三是可選郵件服務和管理員配置。

配置文件手冊 :https://gogs.io/docs/advanced/configuration_cheat_sheet

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM