最近在RK3399上部署了GIT服务器,原本想着部署一个GITLAB的,可是太大了,后来想一想部署一个简单的GITOLITE也知足小团队使用。
因而使用GITOLITE+GITWEB的方式。html
常规安装GITWEBgit
在Ubuntu下默认安装gitweb 它会把apache2也安装好。web
$projectroot = "/home/git/repositories";docker
而后直接重启一下apacheapache
> sudo apt install gitweb > sudo a2enmod cgi > sudo systemctl restart apache2
经过浏览器打开:
http://localhot/gitwebubuntu
问题:
若是仓库的权限存在问题,好比使用/home/git gitolite或gitosis维护的仓库,权限默认是700,这个时候,其余用户没有办法查看。为了解决这个问题。有如下方法:浏览器
sudo su git
chmod -R 755 /home/git/repositories安全
sudo su git
cd ~
cat .gitolite.rc服务器
修改方法以下:ide
进阶
第一个问题:
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,能够轻易的部署在不一样的设备上。