新聞中心
在單位中,通常都標配了git服務器用來管理代碼。對于家庭或者小辦公室,這種方式有點不經(jīng)濟。當然如果是開源項目就簡單了,剛剛被微軟收購的github是理想選擇。但如果沒有打算開源,我今天的話題可能對你有用。我就屬于喜歡在家中干活的那一類,以前常年開著一臺電腦做下載,最近改了這個壞習慣。但是沒有了長期開機的設備,也就沒有了git server。趁著周末,把一臺老的路由器改了改,當成git server來用,感覺效果爆棚,不能不安利給大家。

從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站設計制作、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設計、域名與空間、虛擬主機、網(wǎng)絡營銷、VI設計、 網(wǎng)站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。
硬件
一臺能夠安裝OpenWRT(或者Linux系統(tǒng)的)路由器,我用的是一臺老設備,Netgear WND3700V1。 視你日常工作量大小,準備一個空間足夠的U盤,最好是高速的,當然這個高速是指能匹配路由器USB口的標準就足夠。
系統(tǒng)軟件
成文時,OpenWRT的版本是18.06.0,其它版本應當也可以,OpenWRT挺早就支持git軟件包了。下載地址在:http://downloads.openwrt.org/。也可能是我的問題,但至少看起來,這樣一個純技術(shù)網(wǎng)站,不FQ已經(jīng)下載不到了。 因為各家路由設備的硬件復雜性,雖然都是同樣的OpenWRT,不同的路由器仍然要下載自己硬件對應的版本。如果之前沒有安裝過OpenWRT的話,建議你在https://openwrt.org/toh/views/toh_fwdownload查詢OpenWRT支持的設備列表,確認自己應當使用的版本。 OpenWRT的安裝這里不講,請參考官方相關(guān)文檔。通常都是在自己路由器的管理界面使用軟件更新功能,選擇下載的固件文件,上傳隨后升級。 接著請根據(jù)自己家里網(wǎng)絡的情況,配置上網(wǎng)設置各項目,保證基本路由功能工作正常。
管理路由器
OpenWRT18.06.0的默認管理方式是使用ssh,方法:ssh root@[IP地址]。根據(jù)路由器的FLASH大小,比較小的FLASH是默認沒有WEB GUI界面的,比如我用的這臺。所幸大多情況下使用命令行配置路由器效率更高,而且有些工作是使用GUI界面做不到的。 OpenWRT的默認賬戶用戶名是root,沒有密碼,正常情況下第一次登陸會要求你修改密碼。在一個連接公網(wǎng)的環(huán)境中,請盡早登陸修改密碼。
配置鏡像源
如果你不用FQ就能訪問官方的源服務器的話,請?zhí)^這一節(jié)內(nèi)容。
OpenWRT使用opkg工具來管理擴展包。因為前面所說的原因,需要配置使用鏡像源來保證所需軟件包的安裝。 中間碰到一個小麻煩是國外的鏡像服務器,基本都使用了https協(xié)議,OpenWRT不能直接支持。國內(nèi)的鏡像大多倒是http協(xié)議,但鏡像中又缺乏一些驅(qū)動包,無法驅(qū)動U盤。 所以如果找不到更好的完整源的話,只好把變更源這樣一件小事分成兩步來做。 opkg的源配置文件路徑為:/etc/opkg/distfeeds.conf,首先做一個備份,然后你可以使用你喜歡的編輯工具修改,我通常都是vi。 把distfeeds.conf文件的內(nèi)容修改為:
src/gz openwrt_core http://openwrt.proxy.ustclug.org/releases/18.06.0/targets/ar71xx/generic/packages
src/gz openwrt_kmods https://downloads.lede-project.urown.net/snapshots/targets/ar71xx/generic/kmods/4.9.117-1-e017c397f3c6ba06dc921b136a63fb36
src/gz openwrt_base http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/base
src/gz openwrt_luci http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/luci
src/gz openwrt_packages http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/packages
src/gz openwrt_routing http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/routing
src/gz openwrt_telephony http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/telephony
這里面使用了兩個源,分別是:http://openwrt.proxy.ustclug.org和https://downloads.lede-project.urown.net。
接著在OpenWRT命令使用opkg update命令,只要網(wǎng)絡沒有問題,可以完成源目錄包的更新,當然在https的那個源會報錯,先不用管。
通常的情況下,每次進行包安裝工作之前進行一次opkg update就夠了,這是下載軟件源中的所有目錄索引到本地。路由器關(guān)機、或者云端的源內(nèi)容發(fā)生了變化才需要重新執(zhí)行。
隨后安裝https協(xié)議所需的軟件包:
opkg install libustream-openssl ca-bundle ca-certificates
接著再做一次opkg update,這一次,應當所有的源都可以拿到目錄包了。 如果你有更好的http源,配置https訪問這一步可以省略。
至此,opkg包管理工具算配置完成。喜歡使用GUI界面的話,這時候可以使用下面命令安裝:
opkg update
opkg install luci
安裝U盤并設置自動加載
如果只是當做私有云盤使用,U盤的格式可以隨意。但如果打算用作git倉庫以及用以彌補路由器可憐的FLASH存儲,則必須使用Linux專有格式,比如EXT4。所以準備用在路由器上的U盤你要提前做好備份,因為后面的安裝會重新格式化U盤。 首先是安裝加載U盤所需的各項驅(qū)動和相關(guān)支持工具:
#假設你已經(jīng)做過opkg udpate
opkg install block-mount e2fsprogs kmod-fs-ext4 kmod-usb3 kmod-usb2 kmod-usb-storage
隨后使用ext4格式,重新初始化U盤:
#注意這一步會清掉U盤上現(xiàn)有的所有內(nèi)容
mkfs.ext4 /dev/sda1
接著將U盤設置為路由器啟動后自動加載:
block detect > /etc/config/fstab
uci set fstab.@mount[0].enabled='1' && uci set fstab.@global[0].check_fs='1' && uci commit
/sbin/block mount && service fstab enable
這時候可以使用mount命令檢查一下U盤是否加載成功(不需要重啟),如果輸出信息中,通常是在最后一行,如果有類似下面信息表示U盤加載成功了:
/dev/sda1 on /mnt/sda1 type ext4 (rw,relatime,data=ordered)
在我實驗的時候,有一個U盤無論如何無法自動加載成功,猜測同U盤型號或者具體硬件及OpenWRT版本的支持有關(guān)系。就不去深究原因了,碰到這種情況可以使用啟動腳本的方式解決,首先執(zhí)行一次mkdir /mnt/sda1,然后在/etc/rc.local文件最后一行增加:
mount /dev/sda1 /mnt/sda1
以后重啟將會自動加載U盤。
安裝git工具包
這一步對于新款路由器實在不是事兒,使用opkg一條命令就搞定:
opkg install git
對于我這款老路由器來講是個大麻煩,因為這款WND3700這款路由器只有4M的FLASH,相當于硬盤的存儲空間。而git軟件包壓縮之后是4.3M,完全盛不下。 這時候剛才安裝的EXT4格式的U盤就起作用了,我使用手工安裝的方式把git安裝到U盤上,這樣多大的軟件包都不算問題了。 首先下載git軟件包:
cd /mnt/sda1/
wget http://openwrt.proxy.ustclug.org/releases/18.06.0/packages/mips_24kc/packages/git_2.16.3-1_mips_24kc.ipk
注意下載路徑是跟你所使用的路由器版本有關(guān)的,比如上面的下載地址表示OpernWRT18.06.0版本,跑在mips_24kc的芯片上。根據(jù)這些信息,你要尋找自己路由器可用的軟件包,平常這件事情是由opkg幫你做的。 下載完成后,手工解壓取出文件:
tar xzvf git_2.16.3-1_mips_24kc.ipk
#上面的解壓完成通常會出來3個文件,我們只使用其中的data.tar.gz文件。
mkdir ipks
cd ipks
tar xzvf ../data.tar.gz
cd ..
# 刪除3個解壓出的臨時文件
rm control.tar.gz data.tar.gz debian-binary
所有的文件都保存在/mnt/sda1/ipks/usr路徑下,我們還需要手工完成安裝,才能夠運行:
ln -s /mnt/sda1/ipks/usr/bin/git /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-receive-pack /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-upload-archive /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-shell /usr/bin/
ln -s /mnt/sda1/ipks/usr/bin/git-upload-pack /usr/bin/
ln -s /mnt/sda1/ipks/usr/lib/git-core/ /usr/lib/
ln -s /mnt/sda1/ipks/usr/share/git-core/ /usr/share/
此時git已經(jīng)可以使用了。接下來我們建立工作目錄:
mkdir /mnt/sda1/prjs
ln -s /mnt/sda1/prjs/ /
/prjs目錄是我們的主要存儲目錄。因為路由器只有一個root賬號,也就不用考慮額外的權(quán)限問題。 今后所有的git倉庫,都可以在/prjs路徑下另外建目錄來保存。我們來建立一個測試倉庫來驗證工作是否正常:
mkdir /prjs/test
cd /prjs/test
git init --bare
好了,至此路由器上的所有準備都已經(jīng)完成。今后增加新的git倉庫,使用新的倉庫名稱,重復上面最后一個建立test倉庫的操作就可以。
測試路由器上的git倉庫
回到我們的工作電腦上,隨意建立一個工作目錄,測試路由器上的git倉庫是否工作正常,下面假設我們路由器的IP地址為192.168.1.1,請修改成自己路由器的正確地址。
mkdir testgit
cd testgit
git init .
echo "test information" > abc.txt
echo "測試信息" > abc1.txt
git add .
git commit -m "something new"
git remote add origin root@192.168.1.1:/prjs/test/
git push --set-upstream origin master
最后的git push執(zhí)行后,需要輸入路由器root賬號密碼,隨后如果顯示類似下面信息,就表示成功了:
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 231 bytes | 231.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To root@192.168.1.1:/prjs/test/
570db28..5ab2627 master -> master
自動驗證
如果不希望每次git push都輸入路由器密碼,可以把自己電腦的公鑰存儲到路由器備案,以后就不需要輸入密碼了,首先拷貝公鑰到路由器:
scp ~/.ssh/id_rsa.pub root@192.168.1.1:~/
接著在路由器上執(zhí)行:
cat id_rsa.pub >> /etc/dropbear/authorized_keys
可以使用ssh來測試是否生效,ssh root@192.168.1.1之后,如果不再要求輸入密碼直接登錄了路由器,表示自動驗證生效了。
當前標題:如何將路由器改裝成git服務器?
轉(zhuǎn)載注明:http://www.5511xx.com/article/ccsjesj.html


咨詢
建站咨詢
