摘要:?jiǎn)栴}背景公司初創(chuàng)技術(shù)團(tuán)隊(duì),沒(méi)有任何基礎(chǔ)設(shè)施的情況下,需要搭建一系列管理以及自動(dòng)化部署等工具所以引發(fā)了下面一系列的部署過(guò)程,歷時(shí)兩天,中間也是碰到各種問(wèn)題,但最終把基本工具全部搭建成功,耶,下面帶大家一起看下此次搭建過(guò)程。
問(wèn)題背景
公司初創(chuàng)技術(shù)團(tuán)隊(duì),沒(méi)有任何基礎(chǔ)設(shè)施的情況下,需要搭建一系列code管理以及自動(dòng)化部署等工具....所以
引發(fā)了下面一系列的部署過(guò)程,歷時(shí)兩天,中間也是碰到各種問(wèn)題,但最終把基本工具全部搭建成功,耶~,下面帶大家一起看下此次搭建過(guò)程。
服務(wù)器一臺(tái),CentOS的,公司就給了一臺(tái)配置較低的服務(wù)器當(dāng)臨時(shí)服務(wù)器,沒(méi)辦法了,就這么搞吧。
思考:如果我用傳統(tǒng)的yum來(lái)安裝,肯定會(huì)被我裝亂七八糟,還不方便自己管理維護(hù),左右為難的情況下我選擇了Dokcer,可能有些小伙伴問(wèn)Docker是啥怎么用,不要慌這里有傳送門(mén):Linux docker-compose 實(shí)戰(zhàn)、 [進(jìn)階篇]docker編排PHP開(kāi)發(fā)壞境測(cè)試環(huán)境搭建
為了快速搭建一套PHP測(cè)試環(huán)境我決定用laradock了,雖然文件很多,但是里面封裝的東西也是比較全的,后期開(kāi)發(fā)不知道會(huì)用到什么技術(shù),就決定先用這個(gè),隨時(shí)可以啟動(dòng)用得到的服務(wù)。
laradock官方文檔給的介紹也很全面,我這里采用的方式是部署多套項(xiàng)目方式目錄結(jié)構(gòu)如下:
+ laradock + project-1 + project-2開(kāi)始使用:
git clone https://github.com/laradock/l...
cp env-example .env
env 里面的配置可以修改的,可以根據(jù)自己情況進(jìn)行調(diào)整
docker-compose up -d nginx php-fpm mysql redis
后面可以加上你要啟動(dòng)的程序,像rabbitmq、mongo等等,需要的時(shí)候追加在尾部就可以啟動(dòng),首次啟動(dòng)時(shí)間有點(diǎn)長(zhǎng)
docker-compose exec --user=laradock workspace bash
像laravel等項(xiàng)目肯定少不了composer,執(zhí)行這個(gè)命令進(jìn)入工作區(qū),就可以執(zhí)行composer了
docker-compose exec nginx nginx -s reload
肯定有人會(huì)問(wèn)我更改了nginx配置是不是每次都要進(jìn)入nginx容器去重啟,或者把整個(gè)容器都重啟了呀,不用的,執(zhí)行這個(gè)命令就可以重啟nginx了。nginx站點(diǎn)配置文件在哪里呢:./laradock/nginx/sites/
先運(yùn)行下試試吧。
GitLab現(xiàn)在運(yùn)行環(huán)境已經(jīng)搭建好了,我代碼應(yīng)該怎么存放呢,其實(shí)有很多的選擇,要根據(jù)自己的實(shí)際情況出發(fā),如:GitHub、碼云、GitLab等等,我選擇的是GitLab,剛開(kāi)始沒(méi)有發(fā)現(xiàn)laradock其實(shí)提供了GitLab服務(wù)。。只能自己折騰了,其實(shí)很簡(jiǎn)單。
docker run -d -p 443:443 -p 8080:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce #參數(shù)解釋: #-d:讓容器后臺(tái)運(yùn)行 #-p:暴露端口,把容器的443端口指向到宿主機(jī)443端口,宿主機(jī)8080->容器80,宿主機(jī)222->容器22 #宿主機(jī)端口可以根據(jù)自己的情況自己定制 #-name 給你的容器起個(gè)名,只要不和現(xiàn)有的重復(fù)就可以 #--restart 當(dāng)容器退出時(shí)docker是否重啟 #-v 這就是掛載磁盤(pán)了,把宿主機(jī)的目錄掛載到容器中,這么做哪怕是容器壞了我的內(nèi)容也不會(huì)丟失。 #宿主機(jī)/home/gitlab/config目錄掛載到容器中/etc/gitlab目錄,宿主機(jī)目錄根據(jù)自己情況定 #gitlab/gitlab-ce 這個(gè)就是要啟動(dòng)的鏡像,如果鏡像不存在,docker會(huì)自動(dòng)下載最新版
容器啟動(dòng)成功之后會(huì)有一段時(shí)間來(lái)啟動(dòng)GitLab,看到啟動(dòng)成功立馬訪問(wèn)是訪問(wèn)不到的,稍微等一下就可以了,配置文件都在你指定的宿主機(jī)目錄下可以修改,需要修改的內(nèi)容如下:
gitlab_rails["gitlab_ssh_host"] = "宿主機(jī)IP"#宿主機(jī)的IP地址 gitlab_rails["gitlab_shell_ssh_port"] = 222#暴露給宿主機(jī)的ssh端口 external_url "域名"#分配給gitlab的域名,可以用nginx做反向代理到8080端口Jenkins
實(shí)現(xiàn)自動(dòng)化部署有很多種方式如:webhook、Jenkins、Travis CI等等,我的選擇是Jenkins,因?yàn)橹安渴鹩眠^(guò)所以這里依舊用了這個(gè),laradock依舊提供了Jenkins服務(wù),又是因?yàn)闆](méi)發(fā)現(xiàn)自己搭建了一個(gè)。。??磥?lái)下次要先多看看在動(dòng)手了。
docker run -d --name myjenkins -p 8181:8080 -p 50000:50000 -v /home/jenkins/:/var/jenkins_home jenkins/jenkins #參數(shù)解釋 #-d:讓容器后臺(tái)運(yùn)行 #-p:暴露端口,宿主機(jī)8181->容器8080,宿主機(jī)50000->容器50000 #-v 這就是掛載磁盤(pán)了,把宿主機(jī)的目錄掛載到容器中,這么做哪怕是容器壞了我的內(nèi)容也不會(huì)丟失。 #宿主機(jī)/home/jenkins/目錄掛載到容器中/var/jenkins_home目錄,宿主機(jī)目錄根據(jù)自己情況定
是不是也很簡(jiǎn)單~。~ ,但是Jenkins安裝成功后會(huì)有一個(gè)初始化密碼,怎么查看初始化密碼呢,有兩種方式:
#第一種方式 docker logs <你的容器名字> #這樣就可以查看容器輸出的內(nèi)容 #第二種方式 cat /home/jenkins/secrets/initialAdminPassword#這里好的/home/jenkins需要替換成你掛載的目錄jenkins配置 初始化
輸入你上面獲取到的初始化密碼,下一步我選擇的是推薦安裝,后面自己需要的自己可以再去插件庫(kù)安裝。
插件安裝初始化成功之后前往系統(tǒng)設(shè)置->插件管理安裝幾個(gè)必要插件:
Publish Over SSH GitLab Plugin #因?yàn)槭鞘褂玫腉itlab所以要安裝這個(gè) NodeJS Plugin #我們前端使用的Vue所以要用到node開(kāi)始征程
一、基礎(chǔ)配置
安裝完插件之后需要配置一些基礎(chǔ)內(nèi)容如jdk、node、ssh等
ssh安裝
進(jìn)入:Manage Jenkins-> Configure System
點(diǎn)擊高級(jí):
點(diǎn)擊Test Configuration測(cè)試是否連接成功
jdk、git
進(jìn)入:Manage Jenkins-> Global Tool Configuration
我這里jdk、git采用自動(dòng)安裝,jdk安裝時(shí)候需要一個(gè)賬號(hào),去注冊(cè)下就可以
nodejs安裝
]
二、創(chuàng)建工程
新建一個(gè)工程
選擇自由風(fēng)格
三、配置工程
設(shè)置最多保留幾個(gè)版本構(gòu)建
使用git源碼工具,輸入git地址、添加git用戶
if [ -f "test.tar.gz" ];then rm testv.tar.gz fi tar -zcvf test.tar.gz ./*
這里為什么要把項(xiàng)目打包呢,因?yàn)橄旅嬉渲玫膕sh不支持文件夾傳輸,所以需要先將內(nèi)容進(jìn)行打包然后去服務(wù)器進(jìn)行解包
全部保存好就可以去構(gòu)建了。耶~謝謝觀賞
長(zhǎng)時(shí)間沒(méi)寫(xiě)文章了,這個(gè)篇幅較長(zhǎng),謝謝耐心觀看,希望對(duì)您有所幫助,也希望大家提供下不同的意見(jiàn),找到更有效的方式來(lái)完成,謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/40524.html
摘要:來(lái)這里看看的工程師如何進(jìn)行持續(xù)集成與持續(xù)部署。主要介紹了豆瓣移動(dòng)持續(xù)集成和測(cè)試相關(guān)實(shí)踐,用工具化自動(dòng)化社會(huì)化測(cè)試來(lái)解決遇到的問(wèn)題,將打包發(fā)布環(huán)節(jié)自動(dòng)化。這期的持續(xù)集成實(shí)踐分享就到這里。 我們??吹皆S多團(tuán)隊(duì)和開(kāi)發(fā)者分享他們的持續(xù)集成實(shí)踐經(jīng)驗(yàn),本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項(xiàng)目搭建持續(xù)集成的實(shí)踐,以及一些國(guó)內(nèi)外公司的內(nèi)部持續(xù)集成...
摘要:每個(gè)服務(wù)運(yùn)行在其獨(dú)立的進(jìn)程中,服務(wù)與服務(wù)間采用輕量級(jí)的通信機(jī)制互相溝通通常是基于的。在微服務(wù)架構(gòu)下,故障會(huì)被隔離在單個(gè)服務(wù)中。 1. 源碼下載地址 源碼鏈接: https://github.com/samt007/xy... 這是用Spring Cloud微服務(wù)架構(gòu)搭建的一套基于EBS的API服務(wù)系統(tǒng)如對(duì)本文有任何的疑問(wèn),請(qǐng)聯(lián)系我:samt007@qq.com 2. Introduc...
閱讀 997·2023-04-26 02:16
閱讀 1275·2019-08-30 15:55
閱讀 2837·2019-08-30 15:53
閱讀 3440·2019-08-29 15:38
閱讀 2957·2019-08-29 13:42
閱讀 2036·2019-08-26 13:34
閱讀 1907·2019-08-26 10:10
閱讀 3127·2019-08-23 14:40