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
複製代碼