說起 git,廣大 IT 人士應該都不陌生,無論是公司裡用於管理代碼的 Gitlab,或者是同性交友平臺(劃掉)github,我們平時多多少少都會有接觸。Git 是一款出色的項目管理軟件,來自於天才少年 Linus Torvalds,他在創造出 Linux kernel 之後,開發了 git,用於管理 Linux kernel 的源碼。從此以後,越來越多的項目開始使用git作為自己的版本管理工具。
github作為全世界最大的交友平臺,不止託管了許多優秀的項目源碼,還有相當一部分開源的資料可以供我們免費下載,比如:中國科學技術大學計算機學院的課程資源(https://github.com/ustcwpz/USTC-CS-Courses-Resource)
或者是一些奇奇怪怪的知識(杭州買房攻略:https://github.com/houshanren/hangzhou_house_knowledge)
你以為github是這樣的
但實際上他是這樣的
或者是這樣的
我們日常工作生活中,涉及到寫代碼或者是寫文之類的工作時,使用 git 可以很方便的管理我們的創作內容,下面給大家簡單介紹一下如何在自己家中搭建一個 Gitlab 服務器。
首先,我們要保證 git 服務器的穩定,7*24在線,性能要足夠支撐穩定運行,現規劃兩種方案:路由器和樹莓派。因為我家中的路由器性能略差,因此我選擇了這款樹莓派4b(2G rom版)。作為最新一代樹莓派,它繼承了樹莓派家族便攜、開源、接口豐富的特點,並且性能相對於樹莓派3b+有較大升級,也是家用服務器的不二之選。
(這個角度看樹莓派居然有種別樣的美感)
接下來介紹樹莓派安裝gitlab的相關內容:
1、訪問gitlab官網(https://packages.gitlab.com/gitlab),獲取gitlab-ce包的相關信息。因為gitlab做了樹莓派的相關支持,可以直接通過官網wget下載對應版本。這裡我使用最新版本12.8.6作為gitlab服務器。
根據右側的提示,我們可以添加相關遠程倉庫,並使用 apt-get 包管理工具進行在線下載安裝。
在我本地添加完相關倉庫地址後,apt-get 還是安裝失敗,所以我選擇直接下載對應 deb 包,由於該包較大,使用 wget 嘗試多次後依然失敗,建議直接使用某雷下載 download.deb 包進行安裝。
installing...
2、安裝成功後工作:
安裝 deb 包耗時5分鐘左右,安裝完成後,因為 gitlab 使用的80端口被樹莓派自帶的 apache 服務佔用,所以需要先停止 apache 服務,再進行 gitlab 的部署。
3、這時,我們就可以運行gitlab-ctl reconfigure命令,來初始化gitlab服務器了。
(約十分鐘左右)
提示完成以後,可以通過在局域網內使用樹莓派ip+80端口訪問 Gitlab 界面,至此,gitlab的安裝工作基本完成。
進入Gitlab管理界面,來創建一個十分 niubility 的項目(捂臉逃
4、現在我們在本地局域網內就能方便的使用git服務了,如果我們想更加愉快地在異地管理自己的項目,接下來給大家介紹一款實用工具:花生殼。
在花生殼開放平臺https://open.oray.com/ 看到了花生殼開放了面向開發者的 phtunnel 嵌入式解決方案。相對於傳統的 pc 客戶端映射內網服務,對於git服務是個更加合適的選擇,於是我將 phtunnel 嵌入了自己的樹莓派。
首先登陸開發者平臺 https://open.oray.com/ 申請開發者權限,這裡不再贅述,申請成功後拿到了屬於自己的 APPID 和 APPKEY。
然後就可以去下載樹莓派額 sdk 來進行嵌入了,打開壓縮包以後看到下列四個包:
雖然我本地的設備是aarch64,但是樹莓派官網下載的 Raspbian Buster 安裝完成後是32位的,這裡我選擇了armv8版的包。
按照幫助文檔嘗試運行,目前比較正常,掃碼後使用調試賬號登錄,提示登錄成功,域名狀態變為online。
通過本地管理接口也可以獲取到賬號信息。
現在phtunnel的依然是前臺運行狀態,綁定完賬號信息之後,重新啟動,加上 -d 參數,使程序後臺運行,這次啟動後程序會使用之前的配置文件,無需再次綁定,本地管理接口調用也驗證了這個猜想。 添加一個到本地80端口的映射,就可以從外網訪問到 niubility 項目了。
5、克隆到本地
點擊clone後獲取地址:http://raspi.git.com/root/niubility_project.git,我們需要把前面的域名改為花生殼的映射域名:http://thedim.qicp.vip/root/niubility_project.git,就可以 git clone 了。
使用git clone命令克隆項目以後,在項目目錄下使用 git remote -v 來查看當前克隆的項目路徑。此時 git remote -v重的信息已經變成了花生殼映射的地址。後續再繼續進行git操作的時候,就不需要單獨配置host或者是其他操作了。
修改本地文件並 push:
6、製作開機啟動 這裡我們使用 systemd 來守護進程。systemd 即system daemon,是一個系統級的系統與服務管理器。在新版的 Linux 發行版中,代替了systemV,成為更主流的守護方式。
這裡我們編寫一個簡單的phtunnel.service文件,使phtunnel可以進行開機啟動,文件內容如下:
[Unit] Description=Start phtunnel program
[Service] Type=simple ExecStart=/usr/bin/phtunnel -l /var/log/phtunnel.log -c /etc/phtunnel.json -r -i <填入APPID> -k <填入APPKEY> RemainAfterExit=no Restart=always
[Install] WantedBy=network-online.target
將該service文件放置於 /lib/systemd/system/ 目錄下,創建一個service文件,
使用systemctl命令即可管理systemd啟動文件。常用的管理命令如下
systemctl enable phtunnel #創建一個軟連接,將phtunnel.service加入相應的target中,設置開機啟動。
systemctl start phtunnel #啟動phtunnel服務。
systemctl status phtunnel #查看phtunnel服務當前運行狀態。
systemctl restart phtunnel #重啟phtunnel服務。
至此,我們的“微型·假裝有公網ip版·Git服務器”就搭建完成了,又能開心地跟小夥伴們玩(zhuang)耍(bi)了。
花生殼PHTunnel採用C語言實現,最小約80KB,能輕鬆實現高性能反向代理應用,支持TCP、UDP、HTTP、HTTPS協議,端到端的TLS加密通信,黑白名單防黑驗證等;覆蓋Windows、Linux、樹莓派、Mac、安卓等主流操作系統。
作為花生殼內網穿透的核心組件,花生殼PHTunnel可以集成嵌入到各種網絡和智能IoT設備中,無需公網IP,只要有網就能輕鬆穿透各種複雜的路由和防火牆,實現外網訪問內網的各種應用。
後續:我們可以使用 Gitlab + phtunnel 的 docker 鏡像來更方便的創建一個 Gitlab 服務(相關鏡像:gitlab/gitlab-ce:latest,bestoray/phtunnel:latest),兩個鏡像均已支持 arm 平臺。或者可以將 Gitlab 和 phtunnel 服務打包進一個自己的鏡像。現在搭建的git只支持http訪問,後續添加https映射的方法需要繼續研究。手上的另一臺樹莓派設備,是樹莓派 zero W,相對於樹莓派4b要更加小巧,後面會嘗試將這部分剩餘計算力充分利用起來,搭建一些有趣的個人網站。這部分相關內容,我們下期再詳細介紹。