theboyaply

学,就硬学!

  • Home
  • Archives
  • Java
  • Maven
  • Docker
  • Kubernetes
  • JavaScript
  • ES6
  • Vue
  • 踩坑记录
  • noted

  • 搜索
element ui vue wsimport webservice npm mysql redis node nginx nfs ftp es6 开发工具 vscode 前端 javascript springboot 常见问题 tomcat oracle jenkins maven k8s Linux gitlab docker java

centos7搭建gitlab私有仓库

发表于 2020-03-06 | 分类于 踩坑记录 | 0 | 阅读次数 518
  • 介绍
  • docker中安装gitlab
    • 准备
    • 安装docker
    • 安装gitlab
    • 设置gitlab的git地址
    • 配置gitlab邮件服务
  • centos 上安装gitlab
    • 机器信息
    • 前置依赖
    • 下载 gitlab rpm 安装包
    • 安装配置 gitlab
    • 开放8888端口
    • 查看错误日志
    • 邮件服务配置
  • gitlab 常见问题
    • gitlab常用命令
    • 禁止注册功能
    • 切换中文
    • Import urlis blocked

介绍

近几天访问 GitHub 加载太慢,因此心血来潮准备搭建一个自己的代码托管仓库(Gitlab)

docker中安装gitlab

准备

centos服务器一台,确保网络畅通。安装之前最好能更新一下 yum 源。

yum update -y

安装docker

  1. 安装docker。我们使用阿里云官方提供的dockers安装方式。>Docker CE 镜像源站<
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start 
# (或者) systemctl start docker
# Step 5: 设置Docker开机启动(可选)
sudo systemctl enable docker
# Step 6: 关闭开机启动
sudo systemctl disable docker

注意:其他注意事项在下面的注释中
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
# 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。
# yum list docker-ce-selinux- --showduplicates | sort -r
# sudo yum -y install docker-ce-selinux-[VERSION]

# 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令
# 经典网络:
# sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
# VPC网络:
# sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
  1. 设置镜像加速器。同样也使用阿里云提供的加速方式。>官方镜像加速<

    通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["<your accelerate address>"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

安装gitlab

gitlab有汉化版的,有需要的可以选择汉化版的镜像进行安装(>汉化版gitlab<),汉化版的安装方式和原版安装方式一样。

这里我们使用原版镜像安装。

==拉取镜像==

# 拉取gitlab镜像 可先使用 docker search gitlab 搜索一下
docker pull gitlab/gitlab-ce

# Using default tag: latest
# latest: Pulling from gitlab/gitlab-ce
# fe703b657a32: Pull complete 
# f9df1fafd224: Pull complete 
# a645a4b887f9: Pull complete 
# 57db7fe0b522: Pull complete 
# 0a4b36a7e931: Pull complete 
# 38d84da06c3b: Pull complete 
# c7b836a13c8d: Pull complete 
# 386adf1ba197: Pull complete 
# 46fd1f50a1fb: Pull complete 
# 05974e78692a: Pull complete 
# Digest: sha256:ec7be7237e66512dc668cb1af9bb3b0221cfb7fc29c791812435ab8dfcd9766e
# Status: Downloaded newer image for gitlab/gitlab-ce:latest

# 拉取完成可使用如下命令查看所有镜像
docker images

==创建挂载数据卷==

拉取完之后我们在宿主机上创建三个文件夹,用于挂载gitab数据。

# /dockerDir这个路径随意,主要的是/gitlab/* 这三个目录
mkdir /dockerDir/gitlab/etc
mkdir /dockerDir/gitlab/logs
mkdir /dockerDir/gitlab/data

==启动gitlab容器==

以下是本次用到的启动命令。>查看更多命令<

docker run \
--detach \
--publish 80:80 \      # 映射宿主机80端口到容器中80端口
--publish 443:443 \    # 映射https端口, 可不配
--publish 22:22 \      # 映射22端口, 可不配
--name gitlab \        # 容器名称
--restart always \     # 总是重启服务
--hostname 192.168.x.x \       # 宿主机的ip, 如果映射了域名也可直接写域名(个人建议使用ip)
-v /dockerDir/gitlab/etc:/etc/gitlab \         # 挂载gitlab的配置文件
-v /dockerDir/gitlab/logs:/var/log/gitlab \    # 挂载gitlab的日志文件
-v /dockerDir/gitlab/data:/var/opt/gitlab \    # 挂载gitlab的数据
--privileged=true \    # 在容器中能以root身份执行操作
gitlab/gitlab-ce       # 需要运行的镜像

# 启动后使用如下命令查看运行中的容器
docker ps
# 查看所有容器,包括未运行的
docker ps -a

刚启动就使用 docker ps 查看容器,可能会看到 gitlab 容器的 status 为 (healthy starting),等待一会儿后就会变成 (healthy)。这时我们可以直接访问 宿主机IP+容器80端口映射的外部端口即可(这里我们映射的宿主机端口也是80)。比如:192.168.x.x:8080

==访问gitlab==

启动好之后访问gitlab,会转到设置密码页面,我们输入密码后会转到登录界面,默认的账户是root。

gitlab_set_pwd

设置gitlab的git地址

我们知道,使用 http方式拉取仓库代码时,会提供给我们一个http地址,然后使用 git clone http://xxx的方式拉取代码,现在我们需要做的就是设置这个http地址。

编辑 /dockerDir/gitlab/data/gitlab-rails/etc/gitlab.yml 文件,将其中的host改为gitlab的ip或域名,port改为gitlab的端口即可。(当然如果host和ip已经是你需要的值,就无需改动了)

gitlab_git_url

然后进入容器重启gitlab。

# 进入容器
docker exec -it gitlab /bin/bash
# 重启容器
gitlab-ctl restart

配置gitlab邮件服务

  1. 配置gitlab发送邮件功能

gitlab中很多地方都用到了邮件功能,因此将邮件功能配置好还是很有必要的一件事。本次我们使用QQ邮件服务来配置。>查看更多邮箱配置<

使用QQ邮箱前,需要先开启SMTP服务才行。>开启SMTP服务<

编辑 /dockerDir/gitlab/etc/gitlab.rb文件,在Email Settings处添加如下配置:

### Email Settings
# ......
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'xxx@qq.com'
gitlab_rails['gitlab_email_display_name'] = '发送邮件人名称?'
gitlab_rails['gitlab_email_reply_to'] = 'xxx@qq.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "发送邮件人名称?"
gitlab_rails['smtp_password'] = "从QQ邮箱获取的授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

然后进入容器刷新gitlab配置:

# 进入容器
docker exec -it gitlab /bin/bash
# 刷新gitlab配置
gitlab-ctl reconfigure

# 配置刷新完成后,直接在容器内测试邮件服务
# 进入邮件控制台
gitlab-rails console
# 发送测试邮件
Notify.test_email('receive@qq.com', 'Test Subject', 'Test Body').deliver_now

如果接收到了邮件,那么邮件服务配置完成(如果没有接收到邮件,可以重新检查配置或查看邮件是否在垃圾箱里)。

  1. gitlab的用户想要能够接收到邮件,还需要设置用户自己的邮件,具体步骤可在gitlab的个人设置里配置。

centos 上安装gitlab

上面介绍了使用 docker 安装 gitlab,下面介绍在 centos 中使用 rpm 包安装的方式。

PS:以下操作方式在离线环境中也适用。

机器信息

[root@localhost ~]# uname -a
Linux localhost 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

前置依赖

这种方式安装需要依赖另一些程序,这里先列出来:

# rpm -ivh policycoreutils-python-2.5-33.el7.x86_64.rpm
[root@localhost ~]# rpm  -qa | grep policycoreutils-python
policycoreutils-python-2.5-33.el7.x86_64

[root@localhost ~]# rpm  -qa | grep openssh
openssh-clients-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64

[root@localhost ~]# rpm  -qa | grep postfix
postfix-2.10.1-7.el7.x86_64

# rpm -ivh audit-libs-python-2.8.5-4.el7.x86_64.rpm
[root@localhost ~]# rpm  -qa | grep audit-libs-python
audit-libs-python-2.8.5-4.el7.x86_64

# rpm -ivh checkpolicy-2.5-8.el7.x86_64.rpm
[root@localhost ~]# rpm  -qa | grep checkpolicy
checkpolicy-2.5-8.el7.x86_64

# rpm -ivh libcgroup-0.41-21.el7.x86_64.rpm
[root@localhost ~]# rpm  -qa | grep libcgroup
libcgroup-0.41-21.el7.x86_64
libcgroup-tools-0.41-21.el7.x86_64

# rpm -ivh libsemanage-python-2.5-14.el7.x86_64.rpm
[root@localhost ~]# rpm  -qa | grep libsemanage-python
libsemanage-python-2.5-14.el7.x86_64

# rpm -ivh python-IPy-0.75-6.el7.noarch.rpm
[root@localhost ~]# rpm  -qa | grep python-IPy
python-IPy-0.75-6.el7.noarch

# rpm -ivh setools-libs-3.3.8-4.el7.x86_64.rpm
[root@localhost ~]# rpm  -qa | grep setools-libs
setools-libs-3.3.8-4.el7.x86_64

PS:本人在安装 gitlab 之前,以上依赖均已安装好,后续安装 gitlab 也很顺利。如若你在安装时提示缺少依赖,直接按照提示将缺少的依赖安装即可。

rpm 包下载地址:http://rpm.pbone.net

直接搜索需要的 rpm 包,下载后安装即可。

下载 gitlab rpm 安装包

官方下载地址:https://packages.gitlab.com/gitlab/gitlab-ce

清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum

选择el/7版本,EL7 软件包用于在Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x的安装。

本次我选择的是:gitlab-ce-12.1.17-ce.0.el7.x86_64.rpm 版本。

安装配置 gitlab

下载好之后直接安装:

rpm -ivh gitlab-ce-12.1.17-ce.0.el7.x86_64.rpm

修改 ip 地址及端口:

[root@localhost ~]# vim /etc/gitlab/gitlan.rb
# 访问 gitlab 的 ip 和端口
external_url 'http://192.168.19.110:8888'

# 修改or添加这个配置,不能和上面的external_url端口一样
unicorn['port'] = 9999

加载 gitlab 配置并重新启动:

[root@localhost ~]# gitlab-ctl reconfigure
....
[root@localhost ~]# gitlab-ctl restart
....

开放8888端口

# 开放服务器8888端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=8888/tcp --permanent

# 重新加载防火墙
[root@localhost ~]# firewall-cmd --reload

# 查看所有已开放的端口
[root@localhost ~]# firewall-cmd --zone=public --list-ports

查看错误日志

如果在启动过程中报错,或者访问 gitlab 一直是502。

# 查看gitlab运行日志
[root@localhost ~]# gitlab-ctl tail 

# 或者进入gitlab相关文件夹查看日志文件,比如查看unicorn的日志
[root@localhost ~]# less /var/log/gitlab/unicorn/unicorn_stderr.log
......
Errno::EADDRINUSE: Address already in use - bind(2) for 127.0.0.1:8080
......

以上错误信息表示 unicorn 默认的8080端口已被占用,上面配置的 unicorn['port'] = 9999 是我修改后的端口。

查看日志信息发现问题后,做响应的处理后重新加载gitlab配置并重启。

邮件服务配置

这个和上面 docker 方式中介绍的配置步骤一样。

gitlab 常见问题

gitlab常用命令

# 重新应用gitlab的配置
gitlab-ctl reconfigure
 
# 重启gitlab服务
gitlab-ctl restart
 
# 查看gitlab运行状态
gitlab-ctl status
 
#停止gitlab服务
gitlab-ctl stop
 
# 查看gitlab运行日志
gitlab-ctl tail

禁止注册功能

点击页面上方的 扳手图标(Admin area) -->> Settings -->> General -->> Sign-up restrictions,去掉勾选的允许注册即可。

切换中文

点击右上角用户头像 -->> Settings -->> Preferences -->> Localozation,切换到中文后保存,重新登录生效。

Import urlis blocked

gitlab-error1

问题场景:新搭建了一个 gitlab 服务,想着把另一个git仓库的代码同步过来。于是新建一个项目:

新建项目 -->> Import project -->> Repo by URL ,填写好相关信息后,保存报错。

解决方案:

点击页面上方的 扳手图标(Admin area) -->> Settings -->> Network -->> Outbound requests,勾上 "Allow requests to the local network from hooks and services" 保存即可。

-- end --

# docker # gitlab # Linux
java基础十(this关键字)
ngrok搭建内网穿透服务
  • 文章目录
  • 站点概览
theboyaply

theboyaply

好记性不如烂笔头

184 日志
13 分类
27 标签
Github E-mail
Creative Commons
0%
© 2019 — 2023 theboyaply
由 Halo 强力驱动
|
主题 - NexT.Gemini
湘ICP备19009291号

湘公网安备 43312402001034号