惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

思有云 - IOIOX - CentOS

CentOS 7 挂载腾讯云COS对象存储教程 - 思有云 CentOS 7 从Python2.7.5升级到Python2.7.16版本教程 - 思有云 支持本地,腾讯,阿里,七牛,又拍云对象存储的Lsky Pro图床安装教程 - 思有云 - IOIOX OLAINDEX另一个OneDrive目录索引应用部署教程 - 思有云 - IOIOX CentOS使用OneIndex部署OneDrive免费网盘教程 - 思有云 - IOIOX 一键安装脚本为CentOS 7 添加Swap交换分区 - 思有云 服务器安装ServerStatus监控探针教程 - 思有云 - IOIOX 群晖Virtual Machine Manager套件安装CentOS虚拟机 - 思有云
LNMP环境中使用Docker安装配置GitLab教程 - 思有云 - IOIOX
博主: Stille · 2019-04-24 · via 思有云 - IOIOX - CentOS

前言

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

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.


前提环境

  • 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官方文档

晚高峰稳定 4K 的 IPLC 机场 解锁各流媒体 支持 ChatGPT. 晚高峰稳定 4K 的 IPLC 机场 解锁各流媒体 支持 ChatGPT. RedteaGO - 最划算的大陆漫游 eSim 流量卡,原生境外 IP,注册就送 3 刀。
RedteaGO - 最划算的大陆漫游 eSim 流量卡,原生境外 IP,注册就送 3 刀。

赞赏作者

如果喜欢我的文章,觉得对你有帮助,请随意赞赏!