yum安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 配置yum源 vi /etc/yum.repos.d/tsinghua.repo
[gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1
# 缓存相关包 yum makecache
# 安装相关依赖 yum install curl policycoreutils-python openssh-server
# 安装gitlab-ce yum install gitlab-ce
# 配置 # 修改gitlab配置文件指定服务器ip和自定义端口: vim /etc/gitlab/gitlab.rb external_url='http://122.51.139.130' unicorn['port'] = 8888
|
启动
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 重置并启动GitLab gitlab-ctl reconfigure # 修改clone host地址 vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml 122.51.139.130 cat /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml gitlab-ctl restart
# 测试sshkey ssh -vT git@ip
# 用yum安装完gitLab,设置ssh key,在进行项目的clone git clone git@xxx/xxx.git #提示需要输入密码,这个密码并不是gitlab账户的密码,而是服务器git用户的密码。
|
question
1 2 3 4 5 6 7
| 最终决定登陆到gitlab服务器发现git用户为锁定状态,由于git账户是在安装gitlab时自动创建的,初始密码没有设置,用户锁定导致ssh连接不可用
解决: 1.首先切换到root用户: sudo su root 2.输入有root权限的当前账户的密码(如果你已经在root账户下 1 2两步忽略) 3.给git用户设置密码:passwd git 4.按提示输入两遍新密码即可
|
docker部署
镜像拉取与启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker pull gitlab/gitlab-ce #-i 以交互模式运行容器,通常与 -t 同时使用命令解释: #-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用 #-d 后台运行容器,并返回容器ID #-p 9980:80 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口 #-p 9922:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口 #-v /home/bq/docker/gitlab/etc:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/home/bq/docker/gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样 #--restart always 容器自启动 #--privileged=true 让容器获取宿主机root权限 #--name gitlab 设置容器名称为gitlab #gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID docker run \ -itd \ -p 9980:80 \ -p 9922:22 \ -v /home/bq/docker/gitlab/etc:/etc/gitlab \ -v /home/bq/docker/gitlab/log:/var/log/gitlab \ -v /home/bq/docker/gitlab/opt:/var/opt/gitlab \ --name gitlab \ gitlab/gitlab-ce
|
配置
1 2 3 4 5 6 7 8 9 10
| #进入容器 docker exec -it gitlab /bin/bash # 修改配置 vi /etc/gitlab/gitlab.rb # 配置生效 gitlab-ctl reconfigure # 重启gitlab gitlab-ctl restart # 退出容器 exit
|
关闭用户注册
1、使用root用户登录gitlab
2、点击【Admin Area】
3、点击【Settings】
4、点击Sign-in restrictions这一栏的【Expand】
5、取消勾选【Sign-up enabled】
6、保存修改
优化精简git仓库
清除垃圾文件(大量无用的mp3文件)
1
| git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.mp3' --prune-empty --tag-name-filter cat -- --all
|
提交到远程仓库(如GitHub, 我再次从git clone GitHub代码库会变小为1.3M)
1
| git push origin --force --all
|
必须回收垃圾,本地仓库才变小
1 2 3 4 5 6 7
| git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now rm -rf .git/refs/original git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now
|
example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #1.统计仓库精简前容量信息,造成最大的文件pack记录 #查看仓库容量信息: du -h --max-depth=1 #找出最大的3个文件的pack记录: git verify-pack -v .git/objects/pack/pack-*.idx |sort -k 3 n | tail -3 #2.通过blob id查询大文件的文件名 git rev-list --objects --all | grep blobid #3.查看该文件的所有提交记录 git log --branches -- zz/xx.zip 或 git log --pretty=oneline --branches -- zz/xx.zip #4.将该文件从历史记录的所有tree中移除,并用filter-branch命令重写所有commit才能将该文件从git历史中完全移除 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch zz/xx.zip' --prune-empty --tag-name-filter cat -- --all #5.依次执行以下命令,清理和回收空间 rm -rf .git/refs/original/ rm -rf .git/logs/ git gc gir prune git push origin --force --all
|
配置ssh key
打开本地git bash,使用如下命令生成ssh公钥和私钥对
1
| `ssh-keygen -t rsa -C 'xxx@xxx.com'` # 然后一路回车(-C 参数是你的邮箱地址)
|
1 2 3
| 打开~/.ssh/id_rsa.pub文件(~表示用户目录),复制其中的内容 打开gitlab,找到Profile Settings-->SSH Keys--->Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮 到此就完成了gitlab配置ssh key的所有步骤,可以使用ssh协议不需要输入密码进行代码的拉取以及提交等操作了
|
本地配置多个ssh key
大多数时候,我们的机器上会有很多的git host,比如公司gitlab、github、oschina等,那我们就需要在本地配置多个ssh key,使得不同的host能使用不同的ssh key ,做法如下(以公司gitlab和github为例):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| # 为公司生成一对秘钥ssh key ssh-keygen -t rsa -C 'yourEmail@xx.com' -f ~/.ssh/gitlab-rsa # 为github生成一对秘钥ssh key ssh-keygen -t rsa -C 'yourEmail2@xx.com' -f ~/.ssh/github-rsa # 在~/.ssh目录下新建名称为config的文件(无后缀名)。用于配置多个不同的host使用不同的ssh key,内容如下: # gitlab Host gitlab.com HostName gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_id-rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id-rsa # 配置文件参数 # Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件 # HostName : 要登录主机的主机名 # User : 登录名 # IdentityFile : 指明上面User对应的identityFile路径
# 按照上面的步骤分别往gitlab和github上添加生成的公钥gitlab_id-rsa.pub和github_id-rsa.pub # OK,大功告成,再次执行git命令验证是不是已经不需要再次验证权限了。 # 再次查看~/..ssh目录下的文件,会有gitlab_id-rsa、gitlab_id-rsa.pub和github_id-rsa、github_id-rsa.pub四个文件
|