系统:centos7.4

一、安装配置必要的依赖

1、安装ssh

sudo yum install -y curl policycoreutils-pythonopenssh-server

2、ssh设置开机启动

sudo systemctl enable sshd

3、启动ssh

sudo systemctl start sshd

4、添加http服务到firewalld,pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效

sudo firewall-cmd --permanent --add-service=http

如果没有安装防火墙,则安装

gitlab 启动nginx gitlab开启https_linux

yum install firewalld systemd -y

开启防火墙

service firewalld  start

5、重启防火墙

sudo systemctl reload firewalld

6、接下来安装postfix以发送通知电子邮件。如果要使用其他解决方案发送电子邮件,请跳过此步骤,并在安装Gitlab后配置外部SMTP服务器

安装命令

sudo yum install postfix

7、设置postfix开机启动

sudo systemctl enable postfix

8、启动postfix

sudo systemctl start postfix

如果出现以下提示

gitlab 启动nginx gitlab开启https_linux_02

修改 /etc/postfix/main.cf的设置inet_protocols = ipv4和inet_interfaces = all 

vim /etc/postfix/main.cf

gitlab 启动nginx gitlab开启https_gitlab 启动nginx_03

二、添加Gitlab包存储库并安装包

1、添加gitlab镜像

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-11.0.1-ce.0.el7.x86_64.rpm/download.rpm

2、安装gitlab 安装命令

rpm -i gitlab-ce-11.0.1-ce.0.el7.x86_64.rpm

安装过程中,如果出现以下提示

gitlab 启动nginx gitlab开启https_linux_04

 执行以下命令,然后再执行gitlab安装命令

yum install policycoreutils-python

出现以下画面,则表示安装成功

gitlab 启动nginx gitlab开启https_gitlab 启动nginx_05

3、修改gitlab配置文件,指定服务器ip和自定义端口或者域名

vim  /etc/gitlab/gitlab.rb

gitlab 启动nginx gitlab开启https_gitlab 启动nginx_06

配置时区

gitlab_rails['time_zone'] = 'Asia/Shanghai'

4、执行配置

gitlab-ctl reconfigure

5、启动,如果出现如下界面就启动成功,则可以访问对应的域名或者IP地址

gitlab-ctl start

gitlab 启动nginx gitlab开启https_服务器_07

三、汉化 

1、安装git

yum install -y git

2、下载汉化包,其中v12.0.4-zh是版本,我的下载目录是root

git clone https://gitlab.com/xhang/gitlab.git -b v11.0.1-zh

 3、停止gitlab服务

gitlab-ctl stop

4、切换到gitlab汉化包所在的目录

cd /root/gitlab

5、比较汉化标签和原标签,导出 patch 用的 diff 文件到/root下 

git diff v11.0.1 v11.0.1-zh > ../11.0.1-zh.diff

6、回到/root目录

cd

7、安装patch

yum install patch -y

8、将12.0.4-zh.diff作为补丁更新到gitlab中

patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 12.0.4-zh.diff

出现如下直接回车,跳过,这是因为补丁中有一些较新的文件,但是我们安装的gitlab并没有这个文件存在 

gitlab 启动nginx gitlab开启https_https_08

9、启动gitlab

gitlab-ctl start

10、重新配置gitlab

gitlab-ctl reconfigure

四、从阿里云申请ssl证书

1、在阿里云申请免费ssl证书,并下载到本地

gitlab 启动nginx gitlab开启https_https_09

2、解压后,修改pem文件后缀为crt

3、上传crt文件和key到服务器上

gitlab 启动nginx gitlab开启https_https_10

五、nginx配置https 

第一种方案:内置Nginx配置Https

1、修改/etc/gitlab/gitlab.rb,共修改四处

#修改域名为https访问
external_url 'https://gitlab.example.com'

#http重定向到https
nginx['redirect_http_to_https'] = true

#证书地址
nginx['ssl_certificate'] = "/var/opt/gitlab/nginx/conf/cert/jh_ssl.crt"
nginx['ssl_certificate_key'] = "/var/opt/gitlab/nginx/conf/cert/jh_ssl.key"

第二种方案:外置nginx配置Https

1、/etc/gitlab/gitlab.rb 设置

设置外部访问地址

external_url 'https://git.example.com'

禁用内置的Nginx

nginx['enable'] = false

设置现有Nginx的用户名,根据服务器安装Nginx时创建的用户名

web_server['external_users'] = ['nginx-user']

 设置现有Nginx的受信代理

gitlab_rails['trusted_proxies'] = ['127.0.0.1']

2、执行配置生效命令和启动命令

gitlab-ctl reconfigure
gitlab-ctl start

3、在nginx目录新增文件名,例如:gitlab-nginx.conf,复制以下内容

 Workhorse 插槽的路径在 13.5 中从 更改
/var/opt/gitlab/workhorse/socket => /var/opt/gitlab/workhorse/sockets/socket。

upstream gitlab-workhorse {
  server unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;
}

server {
  listen 80;
  server_name git.example.com;
  server_tokens off;
  return 301 https://$http_host$request_uri;
  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;
}

server {
  listen 443 ssl;
  server_name git.example.com;
  server_tokens off;
  root /opt/gitlab/embedded/service/gitlab-rails/public;
  
  ssl on;
  ssl_certificate cert/git.example.com/git.example.com.pem;
  ssl_certificate_key cert/git.example.com/git.example.com.key;
  
  ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 5m;
  
  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;

  location / {
    client_max_body_size 0;
    gzip off;
    
    proxy_read_timeout      300;
    proxy_connect_timeout   300;
    proxy_redirect          off;

    proxy_http_version 1.1;

    proxy_set_header    Host                $http_host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-Ssl     on;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    proxy_pass http://gitlab-workhorse;
  }
}

其中修改几项

A、git.example.com替换成需要的使用的域名

B、ssl_certificate、ssl_certificate_key分别填上传到服务器的ssl文件地址

4、设置gitlab对应文件夹权限(每次执行配置生效命令)

chmod 777 -R /var/opt/gitlab/gitlab-workhorse

 5、启动nginx即可

cd /usr/local/nginx/sbin
./nginx -s reload

五、升级

我现在的版本是11.0.1,要等级到12.0.1,由于gitlab不能跨越大版本升级,要升级到当前大版本的最后一个版本才能到下一个大版本,现在我的升级路线 11.0.1 ---> 11.11.8 ---> 12.0.1(11.11.8是版本11中的最后一个版本)

1、备份数据

GitLab 12.2 或更高版本:

sudo gitlab-backup create

GitLab 12.1 及更早版本:

gitlab-rake gitlab:backup:create

在目录/var/opt/gitlab/backups/下会生成一个备份文件如:1537856454_gitlab_backup.tar,其中1537856454即为此次备份都版本号。

还原备份

gitlab-rake gitlab:backup:restore BACKUP=备份版本号

2、进入opt目录,下载11.11.8和12.0.1版本

wget --content-disposition https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm
wget --content-disposition https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.1-ce.0.el7.x86_64.rpm

3、关闭部分gitlab服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

如果是内置nginx的话,还需要关闭nginx

gitlab-ctl stop nginx

4、升级命令

先升级到11版本最高

rpm -Uvh gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm

升级到12版本

rpm -Uvh gitlab-ce-12.0.1-ce.0.el7.x86_64.rpm

5、配置生效和重启

gitlab-ctl reconfigure
gitlab-ctl restart

6、查看版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

如果有汉化的,参考第三点操作