当前位置:首页 > 群晖专栏 > 运维部署 > 正文内容

LNMP环境中使用Docker安装配置GitLab教程

admin6年前 (2019-04-24)运维部署80

前言

本文将介绍在CentOS已部署LNMP环境下,使用Docker安装GitLab,并配置SSL证书HTTPS访问.




前提环境

  • Linux服务器一台,本文以CentOS7为例.

  • LNMP环境,很多需要安装GitLab的服务器都已经安装过LNMP环境.

  • Docker环境

安装GitLab

SSH登录服务器并拉取镜像

docker pull gitlab/gitlab-ce

1.jpg
启动容器

docker run --detach --hostname gitlab.ioiox.com --publish 444:443 --publish 81:80 --publish 23:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab 84a0020a3b4b
  • hostname:指定容器绑定域名,请提前规划好.

  • publish:为容器内80/443/22/映射到服务器81/444/23/端口

  • name:容器名

  • volume:挂载数据卷,容器内部数据映射到外部存储空间.

  • 84a0020a3b4b:拉取下来的GitLab官方镜像ID

容器外部存储空间容器内部存储空间用途
/srv/gitlab/config/etc/gitlab存储GitLab配置文件
/srv/gitlab/logs/var/log/gitlab存储日志
/srv/gitlab/data/var/opt/gitlab存储应用数据

查看已启动的容器信息

docker ps -a

2.jpg

配置SMTP


提前准备好SMTP服务器信息,本文以阿里云企业邮箱为例.

配置SMTP邮件服务器

进入容器内部

docker exec -it gitlab /bin/bash

编辑gitlab.rb配置文件

vi /etc/gitlab/gitlab.rb

在配置文件中内加入以下代码

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@ioiox.com"
gitlab_rails['smtp_password'] = "xxxxxxx"
gitlab_rails['smtp_domain'] = "ioiox.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "gitlab@ioiox.com"
  • gitlab_rails['smtp_address']:为SMTP服务器地址

  • gitlab_rails['smtp_port']:为SMTP服务器端口

  • gitlab_rails['smtp_user_name']:用户名即你的邮箱地址

  • gitlab_rails['smtp_password']:邮箱密码

  • gitlab_rails['smtp_domain']:你的邮箱域名

  • gitlab_rails['smtp_tls']:你的加密协议

  • gitlab_rails['gitlab_email_from']:发件人邮件,同用户名邮件地址

3.jpg
重新加载GitLab配置

gitlab-ctl reconfigure

测试邮件发送

gitlab-rails console
Notify.test_email('你自己的邮箱@ioiox.com', 'Message Subject Test', 'Message Body Test').deliver_now

测试成功
4.jpg

配置Web


部分GitLab安装在已经存在LNMP环境的服务器中,Nginx占用了80/443端口,需要配置Nginx反向代理来使用域名访问GitLab.
建议使用80和443两种方式中的一种.

配置80端口


如需配置443端口HTTPS协议,请跳过本章,查看下一章.

配置Nginx

编辑Nginx配置文件,添加以下配置.

upstream  git{
    # 域名对应 gitlab配置中的 external_url,即启动容器命令中的hostname.
    # 端口对应 gitlab配置中的 nginx['listen_port']即启动容器命令中为80分配的81端口.
    server  gitlab.ioiox.com:81;
}

server{
    listen 80;
    # 以下域名为外部访问的域名
    server_name gitlab.ioiox.com;

    location / {
        # 设置 git 版本库里的文件大小,根据实际使用情况自行更改.
        client_max_body_size 50m;

        proxy_redirect off;
        #以下确保 gitlab中项目的 url 是域名而不是 http//git,不可缺少.
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 反向代理到 GitLab 内置的 Nginx
        proxy_pass http://git;
        index index.html index.htm;
    }
}

检查并重启Nginx

  • 检查Nginx配置无误

  • 重启Nginx

  • 使用域名访问GitLab

5.jpg

配置443端口


如需配置80端口HTTP协议,请跳过本章,查看上一章.

准备证书

准备好域名的SSL证书,并重命名为域名形式,方便识别:

gitlab.ioiox.com.crt
gitlab.ioiox.com.key

GitLab默认证书路径为容器内的`/etc/gitlab/ssl
启动容器命令中挂载的外部路径为/srv/gitlab/config/
我们在/srv/gitlab/confg/中创建ssl文件夹,并将2个证书文件拷贝至此.
6.jpg

配置gitlab.rb

进入容器内部

docker exec -it gitlab /bin/bash

编辑gitlab.rb配置文件

vi /etc/gitlab/gitlab.rb

在配置文件中加入以下代码

nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.ioiox.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.ioiox.com.key"
external_url "https://gitlab.ioiox.com"
nginx['redirect_http_to_https'] = true
由于是容器配置文件,注意证书路径需使用内部路径,external_url指向HTTPS的域名,并开启强制跳转HTTPS.

7.jpg
重新加载gitlab配置

gitlab-ctl reconfigure

配置Nginx

编辑Nginx配置文件,添加以下配置.

upstream  git{
    # 域名对应 gitlab配置中的 external_url,即启动容器命令中的hostname.
    # 端口对应 gitlab配置中的 nginx['listen_port']即启动容器命令中为443分配的444端口.
    server  gitlab.ioiox.com:444;
}

server{
    listen 443;
    # 以下域名为外部访问的域名
    server_name gitlab.ioiox.com;
    ssl on;
    ssl_certificate /srv/gitlab/config/ssl/gitlab.ioiox.com.crt;
    ssl_certificate_key /srv/gitlab/config/ssl/gitlab.ioiox.com.key;

    location / {
        # 设置 git 版本库里的文件大小,根据实际使用情况自行更改.
        client_max_body_size 50m;

        proxy_redirect off;
        #以下确保 gitlab中项目的 url 是域名而不是 https//git,不可缺少.
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 反向代理到 gitlab 内置的 Nginx
        proxy_pass https://git;
        index index.html index.htm;
    }
}

server{
    listen 80;
    # 同时配置80端口HTTP强制跳转到443端口HTTPS
    server_name gitlab.ioiox.com;
    return 301 https://gitlab.ioiox.com$request_uri;

}
注意Nginx的证书配置路径应为容器外的外部地址.同时配置80端口HTTP强制跳转到443端口HTTPS.

检查并重启Nginx

  • 检查Nginx配置无误

  • 重启Nginx

  • 使用域名访问GitLab强制跳转到HTTPS安全链接

8.jpg


结语

关于GitLab更多使用技巧请参考以下链接:

GitLab官方文档

本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面

扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=224

标签: 运维部署
分享给朋友:

相关文章

服务器安装ServerStatus监控探针教程

服务器安装ServerStatus监控探针教程

前言本文将介绍在服务器上安装ServerStatus来监控多台服务器的运行状态的教程.ServerStatus-Toyo版是一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针~,该云监控(云探针)ServerStatus-Toyo项...

OneDrive多网盘挂载程序CuteOne安装配置教程

OneDrive多网盘挂载程序CuteOne安装配置教程

前言本文将详细介绍OneDrive网盘程序CuteOne的安装流程CuteOne是一款OneDrive多网盘挂载程序。多盘负载、在线查看、在线上传、下载、多盘同步、主从同步、在线分享、文件夹权限管理、 会员功能、等级制度、付费查看、密码查看...

docker compose 部署迁移 Chevereto 图床程序教程

docker compose 部署迁移 Chevereto 图床程序教程

前言Chevereto 是目前最流行的图床之一.其颜值高,功能多,扩展性强,安装方便并提供了免费和付费版本满足了各种需求.由于近期沉迷于 docker 环境,于是决定尝试使用 docker compose 安装部署,并迁移现有的图...

Watchtower - 自动更新 Docker 镜像与容器

Watchtower - 自动更新 Docker 镜像与容器

前言在早前部署Awesome TTRSS时,作者在docker-compose里配置了Watchtower,于是找到 Github 官方项目研究了下,根据官方文档简单整理了一下常用参数以备用.Watchtower 是一款实现自动化...

甲骨文云 Oracle Cloud 免费 ARM 实例关于引导卷扩容 yum docker BBR 等相关解决方案

甲骨文云 Oracle Cloud 免费 ARM 实例关于引导卷扩容 yum docker BBR 等相关解决方案

前言最近甲骨文云 Oracle Cloud 良心的推出了永久免费的 ARM 实例,竟然给出了最多 4 核 24G 内存 4G 带宽的配置.羊毛党怎么会轻易错过.在折腾了一天后,整理和总结了一些大家常用会需要了解的信息和解决方案.由于甲骨文的...

Docker Compose 部署监控系统 Prometheus + Grafana + Node Exporter + Cadvisor

Docker Compose 部署监控系统 Prometheus + Grafana + Node Exporter + Cadvisor

前言Prometheus + Grafana + Node Exporter + Cadvisor是一款开源的服务器系统状态监控平台系统,用于管理和存储各服务器的实时信息数据,方便监控和排查服务器故障.博主经过一段时间的安装,配置,测试也基...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。