gitlab功能比较庞大,所占用资源也不少,建议放在资源好一点的服务器,虚拟机运行4GB+,遇到问题可直接看最后面,可能会有所帮助html
最终的目的是使用二级域名,直接映射过去linux
# 本地资源
192.168.204.138 -> 服务器
二级域名 gitlab.vm.com -> 192.168.204.138 (此处是本机作了个hosts)
# 映射关系
服务器中:7080 -> gitlab-docker:80
服务器中:7443 -> gitlab-docker:443 (后面没有使用)
服务器中:7022 -> gitlab-docker:22 (用于ssh连方式)
# 访问关系
192.168.204.138:7080 -> gitlab-docker
gitlab.vm.com:7080 -> gitlab-docker
# 最终使用nginx作一层反向代理
gitlab.vm.com -> gitlab-docker
复制代码
curl https://get.docker.com/ > install-docker.sh # 下载安装脚本
sh install-docker.sh # 执行安装脚本
# 修改docker阿里源(此处是个人docker源,能够去阿里云免费获取本身专属的加速器源)
vim /etc/docker/daemon.json
# daemon.json
{
"registry-mirrors": ["https://brnzp166.mirror.aliyuncs.com"]
}
复制代码
设置开机自启动systemctl enable docker
nginx
# 下载docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 赋予权限
chmod +x /usr/local/bin/docker-compose
复制代码
因为是docker镜像运行, 因此咱们须要把gitlab的配置, 数据, 日志存到容器外面, 即将其挂载到宿主机。git
mkdir -p /home/software/gitlab/etc
mkdir -p /home/software/gitlab/logs
mkdir -p /home/software/gitlab/data
复制代码
因为使用了docker-compose帮助咱们部署,因此不须要进行拉取镜像等,他会自动帮咱们执行docker
找一个目录存放docker-compose.yml
文件,这里使用/home/software/gitlab
目录shell
cd /home/software/gitlab
vim docker-compose.yml
复制代码
# docker-compose.yml
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: unless-stopped
hostname: 'gitlab.vm.com' # 最终暴露出去的host
environment:
GITLAB_OMNIBUS_CONFIG: |
# 外部能够访问到gitlab的url
external_url 'http://gitlab.vm.com'
# ssh相关(注意可能会和ssh链接工具端口冲突)
gitlab_rails['gitlab_ssh_host'] = 'gitlab.vm.com'
gitlab_rails['gitlab_shell_ssh_port'] = 7022
# email相关
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com" # smtp服务器地址
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "123456@163.com" # 发送邮件的邮箱
gitlab_rails['smtp_password'] = "受权码" # 邮箱的受权码
gitlab_rails['smtp_domain'] = "smtp.163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '123456@163.com' # 发送邮件的邮箱
ports:
- '7080:80'
- '7443:443'
- '7022:22'
volumes:
- '/home/software/gitlab/etc:/etc/gitlab'
- '/home/software/gitlab/logs:/var/log/gitlab'
- '/home/software/gitlab/data:/var/opt/gitlab'
复制代码
切换到刚刚的docker-compose.yml
文件存在的地址(此时是在/home/software/gitlab)json
cd /home/software/gitlab
# 后台运行docker
docker-compose up -d
复制代码
使用docker ps
查看当前docker的运行情况,等待gitlab的状态为(healthy/unhealthy,约5分钟左右),也即打包完毕后,访问192.168.204.138:7080
,若是能够看到欢迎界面,恭喜你,搭建就成功了vim
之后直接切换去docker-compose.yml
文件存在的地址,使用docker-compose up -d
便可重启,而且上文设置了docker开机自启。centos
此时设置的密码为root帐户,即之后用户名为root的帐户,超级管理员浏览器
可点击头像框 settings -> preferences -> language
切换为中文
修改完成后,进入到另外一个终端中,进入gitlab-docker内
# 获取到gitlab服务的containerID
docker ps
# 进入docker容器内
docker exec -it <containerID> /bin/bash
# 测试邮箱是否完成
gitlab-rails console # 进入邮件控制台, 稍等一会才能进入
Notify.test_email('test_another@qq.com', 'Message Subject', 'Message Body').deliver_now
复制代码
反向代理说通俗就是,你去访问192.168.204.138的时候,服务器趁你不知道安排了192.168.204.138:7080给你服务,此时是后台服务器,经过一个中间商,给你服务。
# 下载对应当前系统版本的nginx包(package)
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 创建nginx的yum仓库
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 根据/etc/yum.repos.d/nginx.repo中的信息下载安装nginx
yum install nginx
# 启动nginx服务
systemctl start nginx
# 开机自启nginx服务
systemctl enable nginx
复制代码
使用此种方式安装的nginx,配置文件是较为分散的,能够使用whereis nginx
查看
# 进入到nginx配置目录
cd /etc/nginx/conf.d
# 增长一个针对gitlab的proxy, 必定要为*.conf, 查看 /etc/nginx/nginx.conf 就懂了
vim proxy_gitlab.conf
# 个人反向代理,gitlab.vm.com:80 -> http:127.0.0.1:7080
# 即docker映射出的gitlab 目录
server {
listen 80;
server_name gitlab.vm.com;
location / {
proxy_pass http://127.0.0.1:7080;
}
}
复制代码
重启nginx服务systemctl restart nginx
访问便可http://gitlab.vm.com
linux安全模块,此处直接关闭(不推荐这种作法,能够去找selinux较好的解决方案)
vim /etc/sysconfig/selinux
SELINUX=disabled
复制代码
因为防火墙的存在,可能形成浏览器一直转圈的情况
本地虚拟机,直接关闭(不推荐,能够去找firewalld较好的解决方案)
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 永久关闭(固然也不推荐啦)
复制代码
多是配置出了问题,以前配置extends_url出现这种情况,因此此时并未在进行过配置
能够切换进去(此处gitlab-docker的name就叫gitlab,也能够替换为<containerID>
,docker ps -a
便可查看),查看哪里出了问题
docker container logs gitlab
复制代码
nginx服务启动说权限的问题,此处多是修改了SELINUX致使的问题,能够先将selinux切换回以前的模式,重启后,待nginx可正常启动后,重启在修改SELINUX便可
由于gitlab对设备的仍是有必定要求的gitlab硬件要求
若是卡慢的话,能够试一试增长虚拟内存
# 4GB虚拟内存
dd if=/dev/zero of=/home/swap bs=1024 count=4194304
# 格式化分区
mkswap /home/swap
# 开启swap分区(关闭swap分区 swapoff /home/swap)
swapon /home/swap
# 挂载分区
vim /etc/fstab
/home/swap swap swap default 0 0
复制代码