本地服务器安装gitlab,并使用域名访问
一、centos系统安装
下载centos系统镜像
制作启动盘
使用UltraISO制作启动盘;安装完UltraISO之后打开iso镜像位置并选择打开;打开后点击顶部启动->刻录光盘映像
安装centos系统
无法进入安装图形界面解决办法
查看启动盘符命令为“blkid”
选择启动项页面中点击“e”进入编辑启动项页面,
把地址改为启动盘的盘符后,
按下“ctrl+x”保存后,
输入“reboot”重启进入安装图形页面
更新系统及安装相应插件
更新系统:
sudo yum update
安装网络工具:
sudo yum install net-tools
安装文本编辑器:
sudo yum install vim
防火墙
启动防火墙:
sudo systemctl start firewalld
设置启动时自动运行:
sudo systemctl enable firewalld
打开端口:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
关闭端口:
sudo firewall-cmd --reload
安装ssh服务
安装ssh服务命令:
sudo yum install openssh-server
启动ssh服务命令:
sudo systemctl start sshd
设置系统启动项命令:
sudo systemctl enable sshd
二、gitlab安装
添加gitlab软件包仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
安装gitlab
sudo EXTERNAL_URL="实例公网 IP 地址" yum install -y gitlab-ce
三、配置nginx,实现本地服务器域名访问gitlab
1、修改配置文件gitlab.yml:
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
# 修改内容如下
gitlab:
host: git.xxx.com
port: 443
https: true
ssh_host: git.xxx.com
# 我这里使用的是 HTTPS 的,所以端口使用 443 并开启了 https,配置 ssh 地址。
# git.xxx.com 是你自己解析到域名
2、修改配置文件 gitlab.rb:
vim /etc/gitlab/gitlab.rb
# 配置域名地址 git.xxx.com 是你自己解析到域名
external_url 'https://git.xxx.com'
# 配置 ssh 地址
gitlab_rails['gitlab_ssh_host'] = 'git.xxx.com'
# Nginx 授信地址 192.168.100.100是局域网内提供公网服务到某台器的内网IP地址
gitlab_rails['trusted_proxies'] = ['192.168.100.100']
# SSH 端口
gitlab_rails['gitlab_shell_ssh_port'] = 10022
# 服务监听方式
gitlab_workhorse['listen_network'] = "tcp"
# 服务监听地址
gitlab_workhorse['listen_addr'] = "0.0.0.0:10080"
# 禁用自带的 nginx
nginx['enable'] = false
## 修改这些配置之后达到的效果:
## gitlab自带的nginx关闭了,换成了监听tcp10080端口,这样就能使用前置nginx反向代理该端口。
配置了域名地址和ssh地址端口,这样页面上的克隆地址就会是这里配置的地址,ssh端口使用10022是到
时候nginx上面会使用的端口,gitlab 本身还是 22 的 ssh 端口。
3、重启gitlab配置
gitlab-ctl reconfigure
gitlab-ctl restart
4、配置nginx:
nginx -> server
# http 反向代理配置,用于 http 克隆和 web 访问:
server {
listen 443 ssl;
# git.xxx.com 是你自己解析到域名
server_name git.xxx.com;
# cert/git.xxx.com.pem和cert/git.xxx.com.key 是你自己生存的绑定域名的ssl证书,存放在Nginx安装目录下的cert目录下
ssl_certificate cert/git.xxx.com.pem;
ssl_certificate_key cert/git.xxx.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.100.121:10080;
#192.168.100.121是安装GitLab服务的服务器IP地址
#注意,反向代理一定需要配置:proxy_set_header X-Forwarded-Ssl on; 否则会出现登录422 的问题!
}
}
5、tcp反向代理,用于ssh克隆:
nginx -> http之前
# 注意TCP代理配置在nginx.conf文件中的位置和HTTP代理配置的位置不一样,具体是stream {}和http {}在nginx.conf文件中的位置属于并列的级别。
stream {
upstream GITLAB {
hash $remote_addr consistent;
# 192.168.100.121是安装GitLab服务的服务器IP地址
server 192.168.100.121:22;
}
server {
# 监听外网访问端口
listen 10022;
proxy_connect_timeout 30s;
proxy_timeout 300s;
proxy_pass GITLAB;
}
}
6、完整nginx配置文件
nginx.conf
## 注意TCP代理配置在nginx.conf文件中的位置和HTTP代理配置的位置不一样,具体是stream {}和http {}在nginx.conf文件中的位置属于并列的级别。
stream {
upstream GITLAB {
hash $remote_addr consistent;
# 192.168.100.121是安装GitLab服务的服务器IP地址
server 192.168.100.121:22;
}
server {
# 监听外网访问端口
listen 10022;
proxy_connect_timeout 30s;
proxy_timeout 300s;
proxy_pass GITLAB;
}
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
## http 反向代理配置,用于 http 克隆和 web 访问:
server {
listen 443 ssl;
# git.xxx.com 是你自己解析到域名
server_name git.xxx.com;
# cert/git.xxx.com.pem和cert/git.xxx.com.key 是你自己生存的绑定域名的ssl证书,存放在Nginx安装目录下的cert目录下
ssl_certificate cert/git.xxx.com.pem;
ssl_certificate_key cert/git.xxx.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.100.121:10080;
#192.168.100.121是安装GitLab服务的服务器IP地址
#注意,反向代理一定需要配置:proxy_set_header X-Forwarded-Ssl on; 否则会出现登录422 的问题!
}
}
server {
listen 80;
# git.xxx.com 是你自己解析到域名
server_name git.xxx.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
}
7、重启nginx,并访问域名
sudo nginx -s reload