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)

相关推荐
小白考证进阶中2 小时前
终于赶在考试券过期前把Oracle OCP证书考下来了!
运维·数据库·oracle·dba·开闭原则·数据库管理员
keep__go3 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql
Doris_LMS3 小时前
Git的强软硬回退(三)
运维·服务器·数据库·git·idea
瓜酷月..3 小时前
GIT(了解)
git
(Charon)4 小时前
基于 epoll 的高并发服务器原理与实现(对比 select 和 poll)
运维·服务器
Jtti4 小时前
在 Debian 系统上清理缓存的方式和具体操作方法
运维·缓存·debian
伐尘4 小时前
【mac】如何在 macOS 终端中高效查找文件:五种实用方法
运维·macos
zzu123zsw6 小时前
第15章 Jenkins最佳实践
运维·jenkins
万物得其道者成6 小时前
Cursor + 云效 DevOps MCP
运维·devops
wanhengidc6 小时前
云手机运行是否消耗自身流量?
运维·科技·安全·游戏·智能手机