1. gitlab概述
GitLab是一个基于Git的版本控制系统,在构建上与GitHub相似,本文将介绍如何在生产环境中搭建GitLab。
GitLab提供了很多强大的功能,如代码管理,代码审核,CI/CD集成等。
2. 系统环境需求
2.1 操作系统
GitLab支持以下操作系统:
Ubuntu
Debian
CentOS
RHEL
本文以CentOS 7为例。
2.2 硬件需求
以下硬件建议可实现100个用户,1000个项目的实例:
CPU: 4 cores
RAM: 8GB
硬盘: 20GB SSD
2.3 依赖关系
运行GitLab需要的依赖关系如下:
Openssh-server
PostgreSQL
Redis
Go语言
NGINX
下面将介绍这些依赖关系的安装过程。
3. GitLab安装
3.1 安装必要依赖
首先,要确保系统中没有安装冲突的软件。如果安装了其他的SSH或PostgreSQL软件,可以先进行卸载,以防止产生冲突。
3.2 安装Openssh-server
执行以下命令,安装Openssh-server:
sudo yum install -y openssh-server
3.3 安装PostgreSQL
执行以下命令,安装PostgreSQL:
sudo yum install -y postgresql-server postgresql-contrib
3.4 初始化PostgreSQL
执行以下命令,初始化PostgreSQL:
sudo postgresql-setup initdb
编辑配置文件/etc/postgresql/[version]/main/postgresql.conf,修改如下值,保存并退出:
listen_addresses = 'localhost'
port = 5432
然后编辑pg_hba.conf文件,添加以下行,保存并退出:
host all all 127.0.0.1/32 trust
启动PostgreSQL:
sudo systemctl start postgresql
3.5 安装Redis
执行以下命令,安装Redis:
sudo yum install -y redis
启动Redis:
sudo systemctl start redis
3.6 安装Golang
执行以下命令,安装Golang:
sudo yum install -y golang
3.7 安装GitLab
添加GitLab仓库:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
安装GitLab:
sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee
其中EXTERNAL_URL是GitLab的URL。执行上述命令后,GitLab将自动安装,默认情况下,GitLab将会安装在以下目录:
/opt/gitlab
3.8 配置GitLab
编辑配置文件/etc/gitlab/gitlab.rb,进行以下设置:
## Enable or disable automatic initialization of TLS in all newly created projects
# letsencrypt['auto_enabled'] = true
## Enable or disable OAUTH sign in for GitLab
# gitlab_rails['omniauth_enabled'] = true
## Configure the Docker registry settings
# registry_external_url 'https://registry.gitlab.example.com'
# gitlab_rails['registry_enabled'] = true
## Configure CI/CD settings
# gitlab_rails['unleash_enabled'] = true
## Configure Pages settings
# pages_external_url "http://pages.gitlab.example.com/"
# gitlab_rails['pages_enabled'] = true
## Configure object storage settings
# gitlab_rails['artifacts_object_store_enabled'] = true
# gitlab_rails['lfs_object_store_enabled'] = true
# gitlab_rails['uploads_object_store_enabled'] = true
## Configure other Settings
# gitlab_rails['version_check_enabled'] = true
# gitlab_rails['usage_ping_enabled'] = true
## Send GitLab info to GitLab
# usage_ping['enabled'] = true
## See a list of all settings:
# sudo gitlab-ctl show-config
## Make a copy of the configuration file and save it somewhere safe
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak
保存配置更改,并重新配置GitLab:
sudo gitlab-ctl reconfigure
3.9 启动和停止GitLab
GitLab在安装后,默认情况下会自动启动。如果需要手动启动或停止GitLab,可以使用以下命令:
## Start GitLab
sudo gitlab-ctl start
## Stop GitLab
sudo gitlab-ctl stop
## Restart GitLab
sudo gitlab-ctl restart
## Check GitLab status
sudo gitlab-ctl status
4. 配置NGINX
4.1 安装NGINX
执行以下命令,安装NGINX:
sudo yum install -y nginx
4.2 配置NGINX
编辑/etc/nginx/conf.d/gitlab.conf文件,添加以下内容:
upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}
server {
listen *:80;
server_name gitlab.example.com;
rewrite ^ https://$http_host$request_uri? permanent;
}
server {
listen *:443 ssl;
server_name gitlab.example.com;
ssl_certificate /etc/gitlab/ssl/gitlab.example.com.crt;
ssl_certificate_key /etc/gitlab/ssl/gitlab.example.com.key;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;
client_max_body_size 250m;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://gitlab-workhorse;
}
}
其中,gitlab.example.com是GitLab的URL,/etc/gitlab/ssl/gitlab.example.com.crt和/etc/gitlab/ssl/gitlab.example.com.key是SSL证书文件的路径。
重启NGINX:
sudo systemctl restart nginx
4.3 测试GitLab
现在可以通过浏览器访问https://example.com,并使用GitLab的默认用户名root和密码5iveL!fe登录GitLab。
5. 总结
本文介绍了在生产环境中搭建GitLab的过程,包括:安装必要的依赖,安装并配置GitLab,配置NGINX并测试GitLab。