一、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

标签: none