赞
踩
1、本情况适用于小型团队, 无运维人员或者兼职运维的人员的团队作为一个参考方案,尽可能降低运维需求,降低因长时间导致的难维护,无法维护的服务出现的可能性。
2、gitlab相对gogs对资源要求较高,所以在环境资源较为拮据的情况下建议使用gogs创建,此篇文章加入威联通主要针对的arm处理器,基于arm的威联通具备性价比高,维护简易,本身自带数据安全存储,是一个极佳的承载git服务环境的设备,当然并不是无缺点, 威联通的arm只有gogs镜像可以使用,不过仍然建议优先考虑此方案
使用低成本的阿里云也是一个不错的方案,阿里云服务器建议:阿里云
2、此外,本人尽可能的通俗易懂,算是苦力活,无技术含量,勿喷
3、如有错误请指出不胜感激
2020.4.13:修复了威联通的命令, 完善了执行流程,目前可以直接制作成脚本执行
#!/bin/bash #分割线以前是工具与docker的安装, 已存在docker环境可以忽略 yum install -y wget yum install -y nfs-utils yum install -y vim yum update #下载并安装docker-ce wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo mv docker-ce.repo /etc/yum.repos.d/ yum clean all yum install -y docker-ce systemctl start docker systemctl enable docker #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #添加自启动挂载 echo [nfs服务器地址]:[数据存储路径] /mnt/xfs/ nfs >> /etc/fstab #创建文件夹并且生效 mkdir /mnt/xfs mount -a #此处的run-gitlab便是下面另一个脚本, 脚本主要就是判断和启动docker #此处的拷贝路径可自己编辑,可将其同git-lab一同放入数据服务器上, #新装机器执行此批命令后自动将相关脚本拷贝至本地,之后便可无损启动 cp /mnt/xfs/data/gitlab/run-gitlab.sh ./ cp /mnt/xfs/data/gitlab/gitlab-ce.img ./ #此处为加载文件到镜像目录, 后面是文件名,随服务更改 docker load < gitlab-ce.img ./run-gitlab.sh #将脚本添加在开机启动,下次启动,执行下面脚本,启动docker echo ./root/run-gitlab.sh & >> /etc/rc.local #rc加权限 chmod +x /etc/rc.d/rc.local
run-gitlab.sh
#!/bin/bash export docker_name="gitlab" export nfs_path="/mnt/xfs/data/gitlab" num=`sudo docker ps -a|grep "$docker_name"|wc -l` img=`sudo docker images|grep "$docker_name"|wc -l` #判断是否存在容器 if [ 0 -eq $num ];then { #gitlan的数据总共有三个位置,将其挂载在nfs服务器上面 #gitlab需要删除log里面的文件,来保证新的容器不出错 rm -rf $nfs_path/log/* chmod -R 777 $nfs_path/* docker run -d --name $docker_name -p 10180:80 -p 10122:22 \ -v $nfs_path/data:/var/opt/gitlab \ -v $nfs_path/log/:/var/log/gitlab \ -v $nfs_path/etc/:/etc/gitlab \ gitlab/gitlab-ce } else { docker start $docker_name } fi
gogs与gitlab的启动方式一样, 以上的脚本可以直接修改使用,区别在于,gogs的数据在容器中的/data下,且,在新启动docker 用旧的数据的时候,要对部分文件删除并且更改权限
#!/bin/bash export docker_name="gogs" export nfs_path="/mnt/xfs/data/gogs" num=`sudo docker ps -a|grep "$docker_name"|wc -l` img=`sudo docker images|grep "$docker_name"|wc -l` #判断是否存在容器 if [ 0 -eq $num ];then { #gogs需要删除gogs/git/下的一个隐藏文件,然后重新给与权限。此外gogs的端口不同web端口在3000位置 rm -rf $nfs_path/gogs/git/.gitconfig rm -rf $nfs_path/gogs/gogs/log chmod -R 777 $nfs_path/* docker run -p 10022:22 -p 10080:3000 \ -v $nfs_path/gogs/:/data \ --name gogs \ gogs/gogs } else { docker start $docker_name } fi
#!/bin/bash #!/bin/bash #删除之前的日志,否则会报错 rm -rf /share/Public/data/gogs/gogs/log docker pull gogs/gogs-rpi docker run -d -p 10022:22 -p 10080:3000 \ -v /share/Public/data/gogs/:/data \ --name gogs \ gogs/gogs-rpi #arm版本gogs名称为gogs-rpi #等待5s,执行docker运行完毕后的清理于权限,若出现端口访问失效, 手动执行 sleep 5 rm -rf /share/Public/data/gogs/git/.gitconfig chmod -R 777 /share/Public/data/gogs
创建后进入控制台,可以看到控制台多出一个项目,点击名字,设置开启自启动就可以
1、威联通的原厂的控制台是有bug的(0923版本) ,挂载路径与实际路径是有出入, 所以创建的操作尽可能用脚本创建,创建成功后可以再通过控制台设置自启动,或者通过其他方式实现自启动
2、除了被共享的文件外,部分目录在nas重启后会被删除,谨慎选择数据目录
方案可以选择服务器阿里云
以上列举了一种服务的高可用性,实际情况例如 ,论坛网站, 社区,云服务,等 绝大多数web应用,在借助docker下,均可以通过此实现高可用转移,且数据存储直观明了,转移时候直接脚本数据拷贝即可,无需重新部署
本人还有wiki的x86与arm版本,论坛等其他的脚本感兴趣可以问本人索要
威联通是一个傻瓜化几乎可以达到免维护的一个设备,若用量小本人极力推荐威联通docker部署
以上方案可以,通过网络以及存储性能的优化来提高可用性,具体操作这里不细讲。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。