最近在RK3399上部署了GIT服務器,本來想著部署一個GITLAB的,但是太大了,后來想想部署一個簡單的GITOLITE也滿足小團隊使用,
于是使用GITOLITE+GITWEB的方式,
常規安裝GITWEB
在Ubuntu下默認安裝gitweb 它會把apache2也安裝好,
- 修改/etc/gitweb.conf, 修改projectroot的引數
$projectroot = "/home/git/repositories";
然后直接重啟一下apache
> sudo apt install gitweb
> sudo a2enmod cgi
> sudo systemctl restart apache2
通過瀏覽器打開:
http://localhot/gitweb

問題:
如果倉庫的權限存在問題,比如使用/home/git gitolite或gitosis維護的倉庫,權限默認是700,這個時候,其他用戶沒有辦法查看,為了解決這個問題,有以下方法:
- 將現有的目錄權限修改為0755, 最好使用find命令查找到目錄修改
sudo su git
chmod -R 755 /home/git/repositories
- 修改GIT服務創建目錄的權限,
sudo su git
cd ~
cat .gitolite.rc
修改方法如下:

進階
- 如何將URL中的gitweb去掉!!!
- 如果能做成容器版本,那將方便好多,可以同時跑多個實體!!!
- 安全性問題,最好需要登錄才能訪問
第一個問題:
sudo vi sites-available/000-default.conf
將DocumentRoot 改為 /usr/share/gitweb
sudo systemctl restart apache2
重新打開即可,
第二問題
直接上Dockerfile
FROM ubuntu
MAINTAINER einsn
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y gitweb apache2
RUN a2enmod cgi
RUN sed -i 's#/var/www/html#/usr/share/gitweb#g' /etc/apache2/sites-available/000-default.conf
COPY apache-foreground /usr/sbin/
RUN chmod a+x /usr/sbin/apache-foreground
EXPOSE 80
CMD ["apache-foreground"]
里面用一個腳本檔案apache-foreground:
#!/bin/sh
set -e
# Apache gets grumpy about PID files pre-existing
rm -f /var/run/apache2/apache2.pid
exec apache2ctl -DFOREGROUND
執行build
docker build -t gitweb .
默認容器內的監聽的GIT目錄為 /var/lib/git 所以,使用-v選項可以指定本地監聽目錄,
看看能否正常運行
docker run -d -p8100:80 -v /home/einsn/work:/var/lib/git --name gitweb gitweb
安全,是比較重要
這樣一來,安全問題又出現了,需要增加一個安全驗證,準備在這個容器基礎上,創建了新的容器
創建一個檔案 digest.conf
<Location "/">
AuthType Digest
AuthName "Hello,gitweb"
AuthDigestDomain "/"
AuthDigestProvider file
AuthUserFile "/var/www/passwd.digest"
require valid-user
</Location>
創建一個密碼檔案,記住輸入的密碼,
htdigest -c passwd.digest "Hello,gitweb" einsn
再創建一個Dockerfile
FROM einsn/gitweb_arm64
MAINTAINER einsn
RUN cd /etc/apache2/mods-enabled && ln -s ../mods-available/auth_digest.load
RUN sed -i 's/#ServerName/ServerName/g' /etc/apache2/sites-available/000-default.conf
COPY digest.conf /etc/apache2/conf-enabled/
COPY passwd.digest /var/www/
EXPOSE 80
CMD ["apache-foreground"]
創建
docker build -t gitweb_digest .
我的運行腳本:(加上--restart保證一直可靠運行)
docker run -d -p8100:80 -v /home/git/repositories:/var/lib/git --restart always --name gitweb_all einsn/gitweb_arm64
通過docker化GITWEB,可以輕易的部署在不同的設備上,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14118.html
標籤:其他
上一篇:k8s~helm構建一個應用
