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.2container_name: gitlab-redisrestart: alwaysvolumes:- redis-data:/datacommand: --loglevel warninghealthcheck:test: ["CMD", "redis-cli", "ping"]interval: 5stimeout: 5sretries: 5networks:- gitlab-networkpostgresql:image: postgres:14container_name: gitlab-postgresqlrestart: alwaysenvironment:POSTGRES_USER: gitlabPOSTGRES_PASSWORD: gitlab_passwordPOSTGRES_DB: gitlabhq_productionPOSTGRES_SHARED_BUFFERS: 512MBvolumes:- postgresql-data:/var/lib/postgresql/datahealthcheck:test: ["CMD-SHELL", "pg_isready -U gitlab -d gitlabhq_production"]interval: 5stimeout: 5sretries: 5networks:- gitlab-networkgitlab:image: gitlab/gitlab-ce:14.6.1-ce.0container_name: gitlab-cerestart: alwayshostname: aa.bb.comdepends_on:redis:condition: service_healthypostgresql:condition: service_healthyenvironment: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'] = 8080puma['worker_processes'] = 2sidekiq['max_concurrency'] = 2gitlab_rails['gitlab_shell_ssh_port'] = 2222gitlab_rails['db_adapter'] = 'postgresql'gitlab_rails['db_host'] = 'postgresql'gitlab_rails['db_port'] = 5432gitlab_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'] = 6379gitlab_rails['initial_root_password'] = aabb123456'gitlab_rails['default_locale'] = 'zh_CN'letsencrypt['enable'] = falsevolumes:- 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-networkgitlab-runner:image: gitlab/gitlab-runner:alpinecontainer_name: gitlab-runnerrestart: alwaysdepends_on:- gitlabvolumes:- gitlab-runner-config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.socknetworks:- gitlab-networkvolumes: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)