LNMP环境中使用Docker安装配置GitLab教程
前言
本文将介绍在CentOS已部署LNMP环境下,使用Docker安装GitLab,并配置SSL证书HTTPS访问.
前提环境
Linux服务器一台,本文以CentOS7为例.
LNMP环境,很多需要安装GitLab的服务器都已经安装过LNMP环境.
Docker环境
安装GitLab
SSH登录服务器并拉取镜像
docker pull gitlab/gitlab-ce
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
查看已启动的容器信息
docker ps -a
配置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']:发件人邮件,同用户名邮件地址
gitlab-ctl reconfigure
测试邮件发送
gitlab-rails console Notify.test_email('你自己的邮箱@ioiox.com', 'Message Subject Test', 'Message Body Test').deliver_now
配置Web
建议使用80和443两种方式中的一种.
配置80端口
配置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
配置443端口
准备证书
准备好域名的SSL证书,并重命名为域名形式,方便识别:
gitlab.ioiox.com.key
GitLab默认证书路径为容器内的`/etc/gitlab/ssl
启动容器命令中挂载的外部路径为/srv/gitlab/config/
我们在/srv/gitlab/confg/
中创建ssl
文件夹,并将2个证书文件拷贝至此.
配置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
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
检查Nginx配置无误
重启Nginx
使用域名访问GitLab强制跳转到HTTPS安全链接
结语
关于GitLab更多使用技巧请参考以下链接:
本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面