centos7下安装gitlab

尝试通过两种方式搭建gitlab,直接安装和docker安装。

首先是官网的安装方式:https://about.gitlab.com/installation/#centos-7

然后我们需要安装的是社区版(免费版本)

参考下面两篇教程、文档:
GitLab的安装及使用教程
https://packages.gitlab.com/gitlab/gitlab-ce/install

  1. 首先按官网提示先安装依赖,然后执行下面命令添加yum源,选择gitlab-ce社区版
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  1. 更新本地yum缓存
sudo yum makecache
  1. 安装gitlab-ce
sudo yum install -y gitlab-ce

安装成功后会有以下图标:
gitlab安装完成
  1. 启动gitlab:gitlab-ctl start,默认8080端口,设置端口需要修改配置vi /etc/gitlab/gitlab.rbexternal_url设置域名和端口号,没有域名则设置ip
#GitLab常用命令
sudo gitlab-ctl start    # 启动所有 gitlab 组件;
sudo gitlab-ctl stop        # 停止所有 gitlab 组件;
sudo gitlab-ctl restart        # 重启所有 gitlab 组件;
sudo gitlab-ctl status        # 查看服务状态;
sudo gitlab-ctl reconfigure        # 启动服务;
sudo vim /etc/gitlab/gitlab.rb        # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab;
sudo gitlab-ctl tail        # 查看日志;
  1. 输入ip:端口号域名:端口号后访问,如果出现502-Whoops, GitLab is taking too much time to respond,则说明端口被占用,默认是8080端口,第一次访问需要直接修改root密码
    端口被占用

    这里修改的external_url会影响到后面创建工程的git远程服务器地址,假如我修改为localhost
    external_url 'http://localhost:8099',则出现下图的情况,最好还是填自己的域名或者直接ip地址。
    错误的域名

每次修改配置文件/etc/gitlab/gitlab.rb后需要gitlab-ctl reconfigure才能生效

上传代码到gitlab

  1. 到gitlab上随便注册一个账号并登录,然后创建了一个test项目仓库
  2. 本地安装了git,到项目根目录下打开Git Bash,并执行git init创建本地仓库
    git init

    创建了之后项目文件夹根目录会出现.git的隐藏文件夹,这个就是我们的本地仓库,需要脱离版本控制的话可以直接删除这个.git文件夹
  3. 接下来可以尝试创建一个文件touch text.txt并写入hello world,然后执行git add添加到暂存区,进而git commit到本地版本库(这里可以发现在windows下使用的git bash跟linux下命令一样)
    提交代码到本地仓库
  4. 然后需要提交到gitlab远程仓库,首先复制git项目地址
    gitlab上获取地址

    然后git remote add命令添加我们的gitlab远程仓库
    远程仓库地址
  5. 然后尝试git push提交代码,这里弹出框要求输入用户名和密码,输入之后就可以提交成功,然后到gitlab上也可以看到提交记录
    http方式需要用户名密码
  6. 上面是通过http方式提交,一般需要配置SSH Keys使用ssh方式,使用ssh-keygen生成密钥文件id_rsa.pub(在c盘-》用户-》用户名-》.ssh目录下)
#使用ssh-keygen生成密钥文件id_rsa.pub
ssh-keygen -t rsa -C "youremail@example.com"
#获取密钥
cat ~/.ssh/id_rsa.pub

7.将密钥全部复制粘贴到gitlab下的settings->ssh keys中即可配置成功,然后就可以到gitlab项目中选择ssh地址

ssh方式地址

8.删除旧的远程仓库地址,并配置新的ssh方式的地址即可
修改远程仓库地址

9.还有个强制提交的问题,假如我们的远程仓库已经存在文件,那么可以先pull合并到本地仓库才能提交,或者是加-f参数强制提交,但是gitlab会报错
强制提交报错

强制提交需要放开限制,选择unprotect
放开限制

Docker安装gitlab

  1. 根据官网的docker安装方式我们找到docker获取giblab-ce镜像的命令
docker pull gitlab/gitlab-ce
gitlab-ce镜像
  1. 直接docker run创建和启动容器,然后直接访问ip:端口号就可以打开了gitlab页面了
docker run -d -p 8078:80 --name mygitlab gitlab/gitlab-ce

容器80端口映射到宿主机8078端口,dockerfile上也可以看到容器是80端口EXPOSE 443 80 22

docker运行gitlab

  1. 可以加-v指定数据卷,宿主机上可以方便修改配置文件
cd ~
#可以考虑把配置文件放到一个文件夹里边统一管理
mkdir gitlab
cd ~/gitlab
#启动gitlab容器后,拷贝容器中的默认配置文件到当前文件夹
docker container cp mygitlab:/etc/gitlab . && mv gitlab config
docker container cp mygitlab:/var/opt/gitlab . && mv gitlab data
docker container cp mygitlab:/var/log/gitlab . && mv gitlab logs
#先删除旧的容器
docker rm mygitlab
#创建新的容器,指定使用当前目录下的配置目录作为数据卷
docker run -d -p 8078:80 --name mygitlab \
-v $PWD/config:/etc/gitlab \
-v $PWD/data:/var/opt/gitlab \
-v $PWD/logs:/var/log/gitlab \
gitlab/gitlab-ce

但是启动后报错:

添加数据卷后启动报错

并且在下方发现,可能由于权限问题导致容器启动失败时需要去执行的命令
权限问题导致

在Stack Overflow上也搜索到相关报错问题:
https://stackoverflow.com/questions/39480989/moving-location-of-dockerized-gitlab-data-volumes
需要修改权限:根据Stack Overflow上的提示我们需要添加--restart always让容器报错也不会自动关闭,并修改文件权限后重启即可

#添加--restart always,容器报错后不自动关闭
docker run -d -p 8078:80 --name mygitlab --restart always \
-v $PWD/config:/etc/gitlab \
-v $PWD/data:/var/opt/gitlab \
-v $PWD/logs:/var/log/gitlab \
gitlab/gitlab-ce
#修改文件权限
docker exec -it mygitlab /bin/bash -c "chown -R git /var/opt/gitlab/gitlab-rails/uploads && find /var/opt/gitlab/gitlab-rails/uploads -type f -exec chmod 0644 {} \; && find /var/opt/gitlab/gitlab-rails/uploads -type d -not -path /var/opt/gitlab/gitlab-rails/uploads -exec chmod 0700 {} \;"
docker exec -it mygitlab /bin/bash -c 'update-permissions'
#重启容器
docker restart mygitlab

gitlab 官方推荐是4g内存,2g内存也可以跑,内存占用比较高。个人使用的话可以用,但没必要。感觉还是github或是开源中国的码云好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容

  • 1. sudo yum install openssh-server 2. sudo yum install po...
    maybe520阅读 744评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,561评论 18 139
  • 一.docker 是什么: 2.安装docker 系统:ubuntu16.04 使用脚本自动安装 Docker 官...
    Black_Sun阅读 2,100评论 0 2
  • 张老师的算法课插播的题外话很有趣,能让人思考一小会儿。 我们生存或者说生活的地方确实不完美,只是还凑合,老师举例说...
    xiaoyuer阅读 215评论 0 1
  • 开学第一天我走进教室,站上讲台,叽叽喳喳声戛然而止——毕竟开学第一天,学生们都还巴望着给新老师留个好印象。看大家安...
    影月琥阅读 976评论 9 23