這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
參考文檔:http://wenku.baidu.com/link?url=R-Puaq3FWB_2KnTqSYhzoq9-cYCcBtg_Dqm1Gr_os35PYQz-f64ncvHLraTGQ6h8-vN7TiNj0Kp5nOU6aOPGEuFwsxmR2k3sgXnc9rvTUia
搭建服務:https://mynook.info/blog/post/host-your-own-git-server-using-gogs
gogs: https://github.com/gogits/gogs
安裝過程分為這些步驟:
- 建立使用者;
- 下載源碼編譯 / 下載先行編譯二進位打包;
- 運行安裝;
- 配置調整;
- 配置 nginx 反向 Proxy;
- 保持服務運行;
注意,這裡預設你已經安裝好了 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
運行安裝
首先建立好資料庫。在 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 指令碼。
本節內容於 2015年12月13日 修改:修正隨時間發生變化的事實。
在我寫這篇文章的時候,最新版本的服務指令碼似乎還有點問題,可以使用這個版本來代替。最新版本的服務指令碼已經可以正常使用,請在二進位下載的 scripts
檔案夾中找到對應你使用發行版的版本。將指令碼放在 /etc/init.d
中,檔案名稱為 gogs
,給予執行許可權並修改相關參數,以後就可以使用 sudo service gogs start
來啟動服務,或者其他子命令來方便地管理。