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

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tenable Blog
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

思有云 - IOIOX - LNMP

甲骨文云 Oracle Cloud 解决 ARM 服务器安装军哥 LNMP 环境的几个问题 - 思有云 支持本地,腾讯,阿里,七牛,又拍云对象存储的Lsky Pro图床安装教程 - 思有云 - IOIOX 宝塔面板一键安装LNMP和LAMP环境教程 - 思有云 - IOIOX 服务器一键安装LNMP和LAMP环境教程 - 思有云 - IOIOX
LNMP环境中使用Docker安装配置GitLab教程 - 思有云 - IOIOX
博主: Stille · 2019-04-24 · via 思有云 - IOIOX - LNMP

前言

本文将介绍在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 刀。

赞赏作者

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