1、准备一个CentOS7的服务器。保证80和443等端口已经打开。

2、官网有教程,网址。前部几部可以参考这个官网的教程,最后一步,下载安装的时候可以不按照这个教程,因为ssl官方默认用的是letsencrypt,请求证书的时候总是会报错。所以我们就不用官方默认的ssl。

3、这里从镜像下载rpm,地址。下载ce版本的最新的。下载之后安装rpm -i xxx

4、安装后不出意外的话,应该可以用ip地址进行访问了,这个时候,可以登录后设置root的密码。我们可以做个二级域名A记录解析,解析后就可以用域名访问了,只是现在是http,还不是https。

5、这里准备的是托管在华为云的域名。在华为云申请一个免费的证书,是DV(Basic)的,一年期。申请后通过DNS域名校验。一般几分钟就可以完成。校验成功后可以下载证书,下载的证书中用Nginx文件夹中的,把里面的两个证书文件放在/ect/gitlab/ssl/中,一般ssl文件夹是没有的,需要创建一下,注意文件夹的权限,有必要的话就修改一下权限。这两个证书名字也要修改。如果我们的域名是gitlab.aa.com(必须在域名解析那边做了A记录解析)。证书文件的名字就要变成gitlab.aa.com.crtgitlab.aa.com.key,需要注意一下。接下来就是修改gitlab.rb文件,主要修改的几个地方有:

# 这里填写https的域名
external_url 'https://gitlab.aa.com'
# 设置成false,注释掉好像还是会走申请letsencrypt的请求,然后就会报错
letsencrypt['enable'] = false
nginx['enable'] = true
nginx['redirect_http_to_https'] = true
# 其他的包括nginx端口80,ssl证书位置等,不需要修改,有默认值

6、然后执行,启动后需要等一会gitlab运行起来才能使用。

gitlab-ctl reconfigure
gitlab-ctl restart

7、发邮件的配置,这里使用的是阿里云的企业邮箱。服务器安全组开通465端口,然后参照官方的配置教程设置即可:官网配置教程

gitlab_rails['gitlab_email_from'] = 'username@your domain'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtpdm.aliyun.com"
gitlab_rails['smtp_port'] = 80
gitlab_rails['smtp_user_name'] = "username@your domain"
gitlab_rails['smtp_password'] = "password"
# 下面是域名,比如aa.com
gitlab_rails['smtp_domain'] = "your domain" 
gitlab_rails['smtp_authentication'] = "login"

然后同样的运行:

gitlab-ctl reconfigure
gitlab-ctl restart

可以测试一下看看是否可以发送成功,命令行:

gitlab-rails console
# 然后输入下面发送测试
Notify.test_email("发送给谁的邮箱地址","发送的标题","发送的内容").deliver_now