Linux环境gitlab多种部署方式及具体使用

一、GitLab的介绍

GitLab是一个基于Git 的代码托管和DevOps平台,提供代码管理、CI/CD、项目管理等功能,支持团队协作开发。可自托管或使用云端服务,是GitHub的竞品之一。

二、相同产品比较

  • GitLab:功能全面,适合自研或国际化团队,但国内访问可能较慢。

  • 云效:阿里云用户首选,深度集成云服务,适合国内企业。

  • Coding:腾讯云生态友好,适合国内敏捷开发团队。

三、安装方式一(以centos7.9为例)

1.安装依赖

sudo yum install -y curl policycoreutils-python openssh-server postfix

sudo systemctl enable postfix

sudo systemctl start postfix

2.添加官方仓库

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

3.安装GitLab-ce社区版

sudo EXTERNAL_URL="http://你的服务器IP" yum install -y gitlab-ce

4.配置访问ip端口以及默认用户邮箱(可选配)

修改root用户邮箱这段配置按邮箱设置中的SMTP服务开启后自然知道该怎么填写

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"

gitlab_rails['smtp_port'] = 465

gitlab_rails['smtp_user_name'] = "xxxx@xx.com"

gitlab_rails['smtp_password'] = "password"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['smtp_enable_starttls_auto'] = true

gitlab_rails['smtp_tls'] = true

gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'

gitlab_rails['smtp_domain'] = "exmail.qq.com"

配置完成后

gitlab-ctl reconfigure

gitlab-ctl restart

5.配置并启动

sudo gitlab-ctl reconfigure # 初始化配置

sudo gitlab-ctl start # 启动服务

6.访问

http://你的服务ip:端口

默认root用户登录,登录密码:cat /etc/gitlab/initial_root_password

注意!!!

如果说服务器中启动了防火墙,请在防火墙中开放此端口

检查防火墙状态:systemctl status firewalld

查看开放的端口:firewall-cmd --list-ports

开发8080端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent

如果使用的是阿里云、华为云、AWS等云厂商的服务器,请在控制台中把改端口开放(按22端口开放方式即可)

四、安装方式二(以centos7.9为例)

使用docker run、docker-compose方式安装GitLab

如果这里还不会安装docker的请点击查看我单独写的安装docker

Docker的安装使用以及常见的网络问题-CSDN博客

1.Dockerfile方式安装

#拉取gitlab镜像

docker pull gitlab/gitlab-ce:latest

2.创建gitlab数据目录

sudo mkdir -p /srv/gitlab/{config,logs,data}

3.启动gitlab

sudo docker run --detach \

--hostname gitlab.example.com \ # 替换为你的域名或IP

--publish 443:443 --publish 80:80 --publish 22:22 \ # 映射HTTP/HTTPS/SSH端口

--name gitlab \

--restart always \

--volume /srv/gitlab/config:/etc/gitlab \

--volume /srv/gitlab/logs:/var/log/gitlab \

--volume /srv/gitlab/data:/var/opt/gitlab \

gitlab/gitlab-ce:latest

4.查看root默认密码

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

5.访问

默认使用root用户登录

http://服务器ip:端口

五、安装方式三(以centos7.9为例)

1.docker compose方式下载

创建docker-compose.yaml文件 编写yaml文件中访问方式以及root用户的初始化密码

复制代码
version: '3.8'

services:
  redis:
    image: redis:6.2
    container_name: gitlab-redis
    restart: always
    volumes:
      - redis-data:/data
    command: --loglevel warning
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - gitlab-network

  postgresql:
    image: postgres:14
    container_name: gitlab-postgresql
    restart: always
    environment:
      POSTGRES_USER: gitlab
      POSTGRES_PASSWORD: gitlab_password
      POSTGRES_DB: gitlabhq_production
      POSTGRES_SHARED_BUFFERS: 512MB
    volumes:
      - postgresql-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U gitlab -d gitlabhq_production"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - gitlab-network

  gitlab:
    image: gitlab/gitlab-ce:14.6.1-ce.0
    container_name: gitlab-ce
    restart: always
    hostname: aa.bb.com
    depends_on:
      redis:
        condition: service_healthy
      postgresql:
        condition: service_healthy
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://aa.bb.com'
        nginx['ssl_certificate'] = "/etc/gitlab/ssl/aa.bb.com.crt"
        nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/aa.bb.com.key"
        nginx['redirect_http_to_https'] = true  # 确保启用HTTP到HTTPS的重定向
        puma['port'] = 8080
        puma['worker_processes'] = 2
        sidekiq['max_concurrency'] = 2
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
        gitlab_rails['db_adapter'] = 'postgresql'
        gitlab_rails['db_host'] = 'postgresql'
        gitlab_rails['db_port'] = 5432
        gitlab_rails['db_database'] = 'gitlabhq_production'
        gitlab_rails['db_username'] = 'gitlab'
        gitlab_rails['db_password'] = 'gitlab_password'
        gitlab_rails['redis_host'] = 'redis'
        gitlab_rails['redis_port'] = 6379
        gitlab_rails['initial_root_password'] = aabb123456'
        gitlab_rails['default_locale'] = 'zh_CN'
        letsencrypt['enable'] = false
    volumes:
      - gitlab-config:/etc/gitlab
      - gitlab-logs:/var/log/gitlab
      - gitlab-data:/var/opt/gitlab
      - ./ssl/:/etc/gitlab/ssl  # SSL证书目录

    ports:
      - "80:80"
      - "443:443"
      - "2222:22"
    shm_size: '256m'
    networks:
      - gitlab-network

  gitlab-runner:
    image: gitlab/gitlab-runner:alpine
    container_name: gitlab-runner
    restart: always
    depends_on:
      - gitlab
    volumes:
      - gitlab-runner-config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - gitlab-network

volumes:
  redis-data:
  postgresql-data:
  gitlab-config:
  gitlab-logs:
  gitlab-data:
  gitlab-runner-config:

networks:
  gitlab-network:
    name: gitlab-network

2.访问

编写完后在当前文件下使用docker copmose up -d 后台启动 ,启动后使用docker ps 观察 gitlab-ce 以及gitlab-runner 的状态,gitlab-ce成功启动后使用root初始化密码登录

3.创建项目启动runner

这个使用你会发现即使是登录成功了,但是gitlab-runner 依旧在报错,这时候你需要在runner中使用一个key启动一个runner在宿主机中单独重启一下git-runner(创建的前提是已经有projects来绑定该runner)

相关推荐
探云抛雾؁ۣۖ17 分钟前
云计算---k8s运维~创建pod与pod的安全策略
运维·kubernetes·云计算
mjy_11122 分钟前
Linux下的软件编程——文件IO
java·linux·运维
奥格列的魔法拖鞋~37 分钟前
Mac配置服务器工具Royal TSX
运维·服务器·royal tsx
失因2 小时前
Web 服务详解:HTTP 与 HTTPS 配置
linux·运维·前端·http·https
cpsvps_net2 小时前
容器安全扫描工具在海外云服务器环境的集成方法
运维·服务器·安全
hl04063 小时前
GitLab CI + Docker 自动构建前端项目并部署 — 完整流程文档
ci/cd·docker·gitlab
skywalk81633 小时前
vagrant和itamae怎么配合使用? (放弃)
运维·前端·ruby·vagrant
孙克旭_3 小时前
day073-Jenkins消息通知与pipline流水线
linux·运维·jenkins
mohesashou3 小时前
云原生作业(nginx)
运维·nginx