1.下载
极狐gitlab官网
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
2.安装
不自定义密码,默认密码路径 /etc/gitlab/initial_root_password
sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="<http://gitlab.example.com:80>" yum install -y gitlab-jh
3.更改配置[可选]
配置文档
配置文件路径 :/etc/gitlab/gitlab.rb
# 外网克隆项目的url:如http://192.168.56.100:8090/test/hello-word.git
# GitLab监听端口,可选,默认80
EXTERNAL_URL='http://192.168.56.100:8090'
4.修改其他配置
vi /etc/gitlab/gitlab.rb
# 在gitlab创建项目时候http地址的host(不用添加端口)
external_url 'http://xx.xx.xx.xx'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.56.100' //和上一个IP输入的一样
gitlab_rails['gitlab_shell_ssh_port'] = 8022 // 此端口是run时22端口映射的8022端口
# 修改配置后运行,使 gitlab.rb 中的更改生效,会自动生成/var/opt/gitlab/gitlab-rails/etc/gitlab.yml和修改/var/opt/gitlab/nginx/conf/gitlab-http.conf文件
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
tips :不要在 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml 中编辑生成的文件,因为它会在下一次 gitlab-ctl reconfigure 运行时被覆盖。
二.Nginx反向代理GitLab
http 反向代理配置,用于 http 克隆和 web 访问:
server {
listen 443 ssl;
server_name 192.168.56.100;
ssl_certificate cert/git.baidu.com.pem;
ssl_certificate_key cert/git.baidu.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_redirect http:// https://;
proxy_set_header Host $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_pass http://192.168.56.100:8090;
}
}
server {
listen 8090;
server_name 192.168.56.100;
location / {
proxy_redirect http:// https://;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.56.100:8090;
}
}
tcp 反向代理,用于 ssh 克隆:
upstream GITLAB {
hash $remote_addr consistent;
server 192.168.56.100:22;
}
server {
# 这样页面上的克隆地址就会是这里配置的地址,ssh 端口使用 8022是到时候 nginx 上面会使用的端口,gitlab 本身还是 22 的 ssh 端口。
listen 8022;
proxy_connect_timeout 30s;
proxy_timeout 300s;
proxy_pass GITLAB;
}