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

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

參考文檔: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 來啟動服務,或者其他子命令來方便地管理。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.