星星博客 »  > 

linux centos安装gitlab及配置防坑指南

Linux Centos安装gitlab及配置防坑指南

  • Linux Centos7/8安装gitlab及配置防坑指南
    • 镜像安装
      • 下载rpm包
    • yum安装
      • 配置yum源
      • 更新本地yum缓存
      • 清理缓存
      • yum安装
    • 修改gitlab配置
      • 修改时区
      • 配置访问地址(域名或IP都可以)
      • 修改unicorn port,默认8080,避免端口冲突
      • 修改nginx监听端口,默认监听80端口和系统原生nginx监听端口冲突
    • 重新编译gitlab
    • 重启gitlab
    • 注意点!
    • gitlab常用命令
    • 防火墙永久开放端口命令

Linux Centos7/8安装gitlab及配置防坑指南

镜像安装

下载rpm包

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/gitlab-ce-13.11.0-ce.0.el8.x86_64.rpm
安装gitlab
rpm -i gitlab-ce-13.11.0-ce.0.el8.x86_64.rpm

yum安装

配置yum源

vi /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

更新本地yum缓存

yum makecache

清理缓存

yum clean all

yum安装

yum install -y gitlab-ce

在这里插入图片描述

修改gitlab配置

vi /etc/gitlab/gitlab.rb

修改时区

gitlab_rails['time_zone'] = 'Asia/Shanghai'

配置访问地址(域名或IP都可以)

external_url 'http://gitlab.example.com'

或者

external_url 'http://47.111.xxx.14x'

修改unicorn port,默认8080,避免端口冲突

unicorn['port'] = 8066

修改nginx监听端口,默认监听80端口和系统原生nginx监听端口冲突

nginx['listen_port'] = 8081

重新编译gitlab

gitlab-ctl reconfigure

重新编译后会更新gitlab的nginx配置,比如nginx监听的端口号
查看gitlab-http.conf

vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
server {
  listen *:8081; #执行gitlab-ctl reconfigure命令后自动更新监听端口(不要手动改)


  server_name gitlab.example.com;
  server_tokens off; ## Don't show the nginx version number, a security best practice

  ## Increase this if you want to upload large attachments
  ## Or if you want to accept large git objects over http
  client_max_body_size 0;


  ## Real IP Module Config
  ## http://nginx.org/en/docs/http/ngx_http_realip_module.html

  ## HSTS Config
  ## https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/
  add_header Strict-Transport-Security "max-age=31536000";

重启gitlab

gitlab-ctl restart
ok: run: alertmanager: (pid 129368) 1s
ok: run: gitaly: (pid 129382) 0s
ok: run: gitlab-exporter: (pid 129410) 0s
ok: run: gitlab-workhorse: (pid 129412) 0s
ok: run: grafana: (pid 129421) 1s
ok: run: logrotate: (pid 129435) 0s
ok: run: nginx: (pid 129479) 0s
ok: run: node-exporter: (pid 129525) 1s
ok: run: postgres-exporter: (pid 129536) 0s
ok: run: postgresql: (pid 129547) 1s
ok: run: prometheus: (pid 129558) 0s
ok: run: puma: (pid 129571) 0s
ok: run: redis: (pid 129576) 1s
ok: run: redis-exporter: (pid 129585) 0s
ok: run: sidekiq: (pid 129593) 0s

现在gitlab已启动,可以通过IP加端口号来访问(http://47.111.xxx.14x:8081)
在这里插入图片描述
如果gitlab配的访问域名,因为gitlab监听的是非80端口,所以想要通过域名直接访问需要在系统原生nginx下创建vhost并配置反向代理

server
    {
        listen 80;
        #listen [::]:80;
        server_name gitlab.example.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/gitlab.example.com;

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        #include proxy-pass-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
	        proxy_pass http://47.111.xxx.14x:8081; # 图片资源反向代理
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
	        proxy_pass http://47.111.xxx.14x:8081; # 静态资源反射代理
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
           deny all;
        }		

        access_log  /home/wwwlogs/gitlab.example.com.log;
	
	location / {
	    index index.html index.php; # 请求入口文件
            root  /home/wwwroot/gitlab.example.com/; # 请求的目录
	        proxy_pass http://47.111.xxx.14x:8081; #反向代理到8081端口
        }
    }

重启Nginx,通过域名访问
在这里插入图片描述

注意点!

  1. 如果域名访问gitlab页面空白,F12打开页面调试发现css和js报404,这是因为静态资源反向代理没有配置或者配置错误,请参考上面的配置代码。
  2. 静态资源反向代理配置好了页面就可以正常显示了,如果图片头像无法正常显示请检查图片资源反向代理是否配置或正确配置,请参考上面的配置代码。
  3. 如果通过IP访问要提前开放对应端口,通过域名无法访问需要先检查80端口是否已开放(注意细节,细节很重要!)
  4. 如果配置的gitlab监听端口(这里是8081)其他配置都没有问题,但就是无法正常访问gitlab,可能该端口正在被其他程序占用,请更换其他监听端口。

gitlab常用命令

修改配置后的编译初始化

gitlab-ctl reconfigure

启动

gitlab-ctl start

停止

gitlab-ctl stop

重启

gitlab-ctl restart

开机自启动

systemctl enable gitlab-runsvdir.service

禁止开机自启动

systemctl disable gitlab-runsvdir.service

防火墙永久开放端口命令

firewall-cmd --zone=public --add-port=端口号/tcp --permanent
详解:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
使配置生效:
firewall-cmd --reload
查询指定端口是否开启成功:
firewall-cmd --query-port=端口号/tcp

开放8081端口

firewall-cmd --zone=public --add-port=8081/tcp --permanent
 firewall-cmd --reload
firewall-cmd --query-port=8081/tcp
yes

相关文章