系统: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
如果没有安装防火墙,则安装
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
如果出现以下提示
修改 /etc/postfix/main.cf的设置inet_protocols = ipv4和inet_interfaces = all
vim /etc/postfix/main.cf
二、添加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安装命令
yum install policycoreutils-python
出现以下画面,则表示安装成功
3、修改gitlab配置文件,指定服务器ip和自定义端口或者域名
vim /etc/gitlab/gitlab.rb
配置时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
4、执行配置
gitlab-ctl reconfigure
5、启动,如果出现如下界面就启动成功,则可以访问对应的域名或者IP地址
gitlab-ctl start
三、汉化
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并没有这个文件存在
9、启动gitlab
gitlab-ctl start
10、重新配置gitlab
gitlab-ctl reconfigure
四、从阿里云申请ssl证书
1、在阿里云申请免费ssl证书,并下载到本地
2、解压后,修改pem文件后缀为crt
3、上传crt文件和key到服务器上
五、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
如果有汉化的,参考第三点操作