一套基礎自動化部署搭建過程

LoyaltyLu發表於2019-07-11

問題背景

公司初創技術團隊,沒有任何基礎設施的情況下,需要搭建一系列code管理以及自動化部署等工具....所以
引發了下面一系列的部署過程,歷時兩天,中間也是碰到各種問題,但最終把基本工具全部搭建成功,耶~,下面帶大家一起看下此次搭建過程。

資源

伺服器一臺,CentOS的,公司就給了一臺配置較低的伺服器當臨時伺服器,沒辦法了,就這麼搞吧。

思考:如果我用傳統的yum來安裝,肯定會被我裝亂七八糟,還不方便自己管理維護,左右為難的情況下我選擇了Dokcer,可能有些小夥伴問Docker是啥怎麼用,不要慌這裡有傳送門:Linux docker-compose 實戰[進階篇]docker編排PHP開發壞境

測試環境搭建

圖片描述


為了快速搭建一套PHP測試環境我決定用laradock了,雖然檔案很多,但是裡面封裝的東西也是比較全的,後期開發不知道會用到什麼技術,就決定先用這個,隨時可以啟動用得到的服務。
laradock官方文件給的介紹也很全面,我這裡採用的方式是部署多套專案方式目錄結構如下:

+ laradock
+ project-1
+ project-2

開始使用:

  1. git clone https://github.com/laradock/l...
  2. cp env-example .env

    env 裡面的配置可以修改的,可以根據自己情況進行調整
  3. docker-compose up -d nginx php-fpm mysql redis

    後面可以加上你要啟動的程式,像rabbitmq、mongo等等,需要的時候追加在尾部就可以啟動,首次啟動時間有點長
  4. docker-compose exec --user=laradock workspace bash

    像laravel等專案肯定少不了composer,執行這個命令進入工作區,就可以執行composer了
  5. docker-compose exec nginx nginx -s reload

    肯定有人會問我更改了nginx配置是不是每次都要進入nginx容器去重啟,或者把整個容器都重啟了呀,不用的,執行這個命令就可以重啟nginx了。nginx站點配置檔案在哪裡呢:./laradock/nginx/sites/

先執行下試試吧。

GitLab

現在執行環境已經搭建好了,我程式碼應該怎麼存放呢,其實有很多的選擇,要根據自己的實際情況出發,如:GitHub、碼雲、GitLab等等,我選擇的是GitLab,剛開始沒有發現laradock其實提供了GitLab服務。。只能自己折騰了,其實很簡單。

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
#引數解釋:
#-d:讓容器後臺執行
#-p:暴露埠,把容器的443埠指向到宿主機443埠,宿主機8080->容器80,宿主機222->容器22
#宿主機埠可以根據自己的情況自己定製
#-name 給你的容器起個名,只要不和現有的重複就可以
#--restart 當容器退出時docker是否重啟
#-v 這就是掛載磁碟了,把宿主機的目錄掛載到容器中,這麼做哪怕是容器壞了我的內容也不會丟失。
#宿主機/home/gitlab/config目錄掛載到容器中/etc/gitlab目錄,宿主機目錄根據自己情況定
#gitlab/gitlab-ce 這個就是要啟動的映象,如果映象不存在,docker會自動下載最新版

容器啟動成功之後會有一段時間來啟動GitLab,看到啟動成功立馬訪問是訪問不到的,稍微等一下就可以了,配置檔案都在你指定的宿主機目錄下可以修改,需要修改的內容如下:

  gitlab_rails['gitlab_ssh_host'] = '宿主機IP'#宿主機的IP地址
  gitlab_rails['gitlab_shell_ssh_port'] = 222#暴露給宿主機的ssh埠
  external_url '域名'#分配給gitlab的域名,可以用nginx做反向代理到8080埠

Jenkins

實現自動化部署有很多種方式如:webhook、Jenkins、Travis CI等等,我的選擇是Jenkins,因為之前部署用過所以這裡依舊用了這個,laradock依舊提供了Jenkins服務,又是因為沒發現自己搭建了一個。。。看來下次要先多看看在動手了。

docker run -d \
     --name myjenkins \
     -p 8181:8080 \
     -p 50000:50000 \
     -v /home/jenkins/:/var/jenkins_home \
     jenkins/jenkins
     #引數解釋
     #-d:讓容器後臺執行
     #-p:暴露埠,宿主機8181->容器8080,宿主機50000->容器50000
     #-v 這就是掛載磁碟了,把宿主機的目錄掛載到容器中,這麼做哪怕是容器壞了我的內容也不會丟失。
     #宿主機/home/jenkins/目錄掛載到容器中/var/jenkins_home目錄,宿主機目錄根據自己情況定

是不是也很簡單~。~ ,但是Jenkins安裝成功後會有一個初始化密碼,怎麼檢視初始化密碼呢,有兩種方式:

#第一種方式
docker logs <你的容器名字> #這樣就可以檢視容器輸出的內容
#第二種方式
cat /home/jenkins/secrets/initialAdminPassword#這裡好的/home/jenkins需要替換成你掛載的目錄

jenkins配置

初始化

clipboard.png

輸入你上面獲取到的初始化密碼,下一步我選擇的是推薦安裝,後面自己需要的自己可以再去外掛庫安裝。

外掛安裝

初始化成功之後前往系統設定->外掛管理安裝幾個必要外掛:

Publish Over SSH

GitLab Plugin #因為是使用的Gitlab所以要安裝這個

NodeJS Plugin #我們前端使用的Vue所以要用到node

開始征程

一、基礎配置

安裝完外掛之後需要配置一些基礎內容如jdk、node、ssh等

  • ssh安裝

進入:Manage Jenkins-> Configure System

clipboard.png

點選高階:

clipboard.png

點選Test Configuration測試是否連線成功


  • jdk、git

進入:Manage Jenkins-> Global Tool Configuration

clipboard.png

我這裡jdk、git採用自動安裝,jdk安裝時候需要一個賬號,去註冊下就可以
  • nodejs安裝

clipboard.png
]

二、建立工程

clipboard.png

  1. 新建一個工程
  2. 選擇自由風格

三、配置工程

clipboard.png

設定最多保留幾個版本構建

clipboard.png

使用git原始碼工具,輸入git地址、新增git使用者

clipboard.png

if [ -f "test.tar.gz" ];then
rm testv.tar.gz
fi
tar -zcvf test.tar.gz ./*
這裡為什麼要把專案打包呢,因為下面要配置的ssh不支援資料夾傳輸,所以需要先將內容進行打包然後去伺服器進行解包

clipboard.png

全部儲存好就可以去構建了。耶~

謝謝觀賞

長時間沒寫文章了,這個篇幅較長,謝謝耐心觀看,希望對您有所幫助,也希望大家提供下不同的意見,找到更有效的方式來完成,謝謝!

相關文章