gitlab服务部署

gitlab是在软件开发过程管理中比较有影响力的开源产品,其基于ruby等实现,而现在一般的部署基本上也是基于docker镜像,因此只需拉取编译好的docker镜像环境,然后采用正确的启动脚本启动,配置一些属性项,就可以部署gitlab服务了。

gitlab服务可以提供几个有代表性的功能:1、代码仓库管理,可以按group,subgroup来组织project,有master,maintainer,developer,reporter等角色,方便比较大的平台和组织中不同小组和个人的仓库访问范围和权限管理。2、管理issue,milestone等,将issue和代码的review以及提交等想结合,管理项目进度,可视化项目完成项和待完成项,以便更合理的管理项目进度;3、支持和其他Devops工具和服务集成,如jekins等,后续如有机会也将进一步学习实践并给与介绍。

下面介绍一下部署步骤,希望能对有关读者有用,如有问题,欢迎大家反馈更正。

下面是启动的脚本示例供参考:

 docker run --detach \
  --hostname ip_of_the_host \
  --publish 8443:8443 --publish 8081:8081 \
  --name gitlab \
  --restart always \
  --volume /path/to/host/gitlab/etc:/etc/gitlab \
  --volume /path/to/host/gitlab/log:/var/log/gitlab \
  --volume /path/to/host/gitlab/data:/var/opt/gitlab \
  beginor/gitlab-ce:11.3.0-ce.0

进入docker容器,编辑/etc/gitlab/gitlab.rb文件,然后更新如下的配置项

gitlab_workhorse['enable'] = true
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "0.0.0.0:8081"
gitlab_workhorse['auth_backend'] = "http://localhost:8888"

### Advanced settings
unicorn['listen'] = '0.0.0.0'
unicorn['port'] = 8888

nginx['enable'] = false
nginx['listen_port'] = 8081

然后在docker容器里执行如下的两个命令启动服务。


gitlab-ctl reconfigure
gitlab-ctl start

这里将gitlab容器内部的nginx服务关闭,可以通过宿主机上的nginx的反向代理服务(proxy_pass)进行访问。如在宿主机的/etc/nginx/conf.d目录下,建立gitlab.conf文件,里边的配置方式示例如下:

server {
    listen 443 ssl http2;
    server_name www.kindlytree.com;
    ssl_certificate /etc/nginx/conf.d/cert/yourdomain.com.pem;
    ssl_certificate_key /etc/nginx/conf.d/cert/yourdomain.com.key;
    ssl_session_cache shared:SSL:2m;
    ssl_session_timeout 4h;
    ssl_protocols TLSv1.1 TLSv1.2;
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers  on;
    ssl_buffer_size 16k;
    resolver 127.0.0.1 valid=300s;
    resolver_timeout 5s;
    location / {
        client_max_body_size 10m;
        proxy_buffer_size 64k;
        proxy_buffers 32 32k;
        proxy_busy_buffers_size 128k;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8081;
        proxy_redirect off;
    }
}

其中上述的ssl_certificate 和ssl_certificate_key 需要在去购买SSL证书,这样就可以启动https协议服务了。然后在宿主机上重新加载配置文件,通过命令nginx -s reload就可以更新nginx服务配置,进而可以访问gitlab服务了。


by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *