详解gitlab生产环境的搭建方法

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。