前言
由于項目越來越大,因為我需要更多的人投入到項目的開發(fā)過程中來浪规,看中了Gitlab或听,所以自己準(zhǔn)備把Gitlab部署到百度云服務(wù)器中,讓其它項目的開發(fā)人員也一起投入項目開發(fā)罗丰,搭建前我看了Gitlab的官網(wǎng)https://about.gitlab.com/pricing/#gitlab-com神帅、官網(wǎng)提供推薦使用Omnibus package installation安裝方式,我考慮到Docker后期遷移和再部署都會很方便萌抵,所以采用了Docker的方式進行搭建找御,我用的是gitlab-ce這個是社區(qū)版本元镀,還有個gitlab-ee是企業(yè)版本,企業(yè)版本是收費霎桅,社區(qū)版本是免費的栖疑,但同時社區(qū)版本功能會少很多,因我只需要基本功能就滿足我的需求了滔驶,所以使用了gitlab-ce社區(qū)版本
搭建環(huán)境
使用的百度云BCC服務(wù)器遇革,安裝的CentOS7.5 64位系統(tǒng),當(dāng)然如果你們是自己的服務(wù)器或都是阿里云揭糕、騰訊云都類似
安裝Docker
因為是新系統(tǒng)所以之前是未有安裝過Docker萝快,所以先需要安裝Docker,注意:Docker對系統(tǒng)版本是有一定要求著角,必須是CentOS6.5或以上
以下為安裝命令:
# 安裝docker
yum -y install docker
# 啟動docker
systemctl start docker
# 運行hello-world,如不存在docker會自動下載hello-world
docker run hello-world
# 查看docker鏡像
docker images
# 查看運行中的容器
docker ps -a
安裝gitlab-ce
# 獲取gitlab-ce鏡像
docker pull gitlab/gitlab-ce
# 準(zhǔn)備容器外gitlab目錄
mkdir -p /opt/gitlab/etc
mkdir -p /opt/gitlab/log
mkdir -p /opt/gitlab/data
# 運行容器
docker run --detach --publish 8443:443 --publish 8090:80 --name gitlab --restart unless-stopped -v /opt/gitlab/etc:/etc/gitlab -v /opt/gitlab/log:/var/log/gitlab -v /opt/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce
# --detach : 后臺運行
# --publish : 端口映射
# --name : 容器名稱
# --restart : 重啟模式設(shè)置為unless-stopped
# -v : 掛載目錄
# docker.io/gitlab/gitlab-ce : 鏡像名稱
修改gitlab配置
# 修改/opt/gitlab/etc/gitlab.rb
vim /opt/gitlab/etc/gitlab.rb
把external_url改成部署機器的域名或者IP地址
# 修改/opt/gitlab/data/gitlab-rails/etc/gitlab.yml
vim /opt/gitlab/data/gitlab-rails/etc/gitlab.yml
到此為止揪漩,gitlab的web管理頁面就可以正常訪問
如果還是不能正常訪問的話,檢查端口是否被占用
常用Gitlab命令
# 重新應(yīng)用gitlab的配置
gitlab-ctl reconfigure
# 重啟gitlab服務(wù)
gitlab-ctl restart
# 查看gitlab運行狀態(tài)
gitlab-ctl status
#停止gitlab服務(wù)
gitlab-ctl stop
# 查看gitlab運行日志
gitlab-ctl tail
# 停止相關(guān)數(shù)據(jù)連接服務(wù)
gitlab-ctl stop unicorn
gitlab-ctl stop sideki
Gitlab的使用
訪問剛搭建的Gitlab吏口,會提示你設(shè)置密碼奄容,這個密碼是gitlab的root用戶的管理員密碼
設(shè)置完密碼后通過root賬號及密碼登錄gitlab
1、如果需要添加組的可以先添加組(我添加了backend組)
2产徊、新建項目
3昂勒、開發(fā)人員注冊gitlab,并設(shè)置添加ssh-key
4、管理在組中添加開發(fā)人員舟铜,指定開發(fā)人員權(quán)限
5戈盈、開發(fā)人員登錄,就能看到管理員組下面新建的項目
6深滚、如果習(xí)慣中文版奕谭,可以在個人中心配置里面選擇語言為中文簡體
安裝Gogs
說明
之所以又介紹Gogs,是因為發(fā)現(xiàn)1核2G內(nèi)存的服務(wù)器配置運行Gitlab很卡很慢痴荐,官網(wǎng)建議Gitlab至少要用4G內(nèi)存使用,但服務(wù)器資源貴官册,后面才想到使用Gogs生兆,Gogs是使用go語言開發(fā),輕量便潔膝宁,內(nèi)存占用少等優(yōu)良特點
安裝docker,如上安裝方式
Gogs鏡像
# Pull image from Docker Hub.
$ docker pull gogs/gogs
# Create local directory for volume.
$ mkdir -p /var/gogs
# Use `docker run` for the first time.
$ docker run -d --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
# Use `docker start` if you have stopped it.
$ docker start gogs
如果第3條命令報如下錯誤:
則重啟下docker:
# restart docker
systemctl restart docker
# Once again start gogs
docker start gogs
# View gogs process
docker ps
使用docker ps就可以看到服務(wù)了:
如果為阿里云服務(wù)器,需要配置安全組
其它服務(wù)器看情況,騰訊,華為,AWS等也都是要配置的,下面是配置的樣圖:
安裝gogs
輸入docker主機的ip和端口(默認(rèn)端口10080):http://IP:10080/
我安裝使用docker安裝一個mysql服務(wù)鸦难,然后配置用戶名密碼
數(shù)據(jù)庫主機填上可訪問的數(shù)據(jù)庫主機IP,如是阿里云需要開放訪問權(quán)限
注意:紅色框?qū)懮献约旱姆?wù)器IP地址
注意:可以不用創(chuàng)建管理員用戶员淫,默認(rèn)第一個用戶就是管理員合蔽,admin這個用戶不能使用
--- 注意:如果前端端口配置錯了,后面可以在/var/gogs/gogs/conf/app.ini中修改介返,然后重新啟動docker容器
數(shù)據(jù)庫連接不上解決方案
1 阿里云ECS有安全組防火墻.默認(rèn)只開了ICMP,22,3389. 在服務(wù)器控制臺找到 安全組-配置規(guī)則-添加安全組規(guī)則
2 如果是用root登錄MySQL,在登陸后use mysql, user表root對應(yīng)的localhost改為%
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> select host, user from user;
mysql> flush privileges;
3 mysql默認(rèn)只能自本機訪問,在 /etc/mysql/mysql.conf.d/mysqld.cnf 里注釋bind-address : #bind-address = 127.0.0.1
操作完成后重啟mysql服務(wù): service mysql restart
4 netstat -ntpl |grep 3306 檢查是不是在監(jiān)聽狀態(tài)
5 防火墻是否對 mysql 端口限制,設(shè)置防火墻
# 打開防火墻配置文件
vi /etc/sysconfig/iptables
# 增加下面一行
# 注意:增加的開放3306端口的語句一定要在icmp-host-prohibited之前
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# 重啟防火墻
systemctl restart iptables.service
有這五步基本都能解決連接不上的問題了