天天看點

一套基礎自動化部署搭建過程(vue實戰防坑版)

一套基礎自動化部署搭建過程(vue實戰防坑版)

導讀: 我是小編品品,把一個創業公司需要的基礎環境特别是釋出環境梳理一下,對創業公司或者更升職的leader或者想要升職的開發同學還是比較重要的,說得更直白一些:這個東西是基礎環境,大家都會使用你這個,使用你的東西頻次高了,是不是公司就會感覺你越來越重要當然要是你作為創業公司Leader自己搭建一套,個人覺得比運維搭建一套好;至于為什麼,這裡就不展開。網上的一些資料有一些正常的操作,但是在具體操作過程中有一些坑需要自己去找原因,這裡就從搭建實施過程分享以下個人經驗。

運維是一個有很久曆史的職業,但是随着技術和工具的成熟,運維更加趨向于自動化運維,架構運維;一個好的開發會運維,會在通過工具監控,伺服器排查問題,并能指導運維就更好了,這樣老闆已經預備好升職加薪的計劃了,非你莫屬,就等你來幫他解決困惑。

大公司這個體系相對比較成熟,我們在長沙一個公司遇到過一個情況,有一個自稱是某du回來的同學,說我們釋出代碼都是腳本,git pull,jenkins太大麻煩,我們不需要部署, git pull是能實作,每次shell到伺服器pull不累嗎,jenkins大嗎?jenkins和中國的jenkins 瓦力我們都用過,各有有點,瓦力的界面很漂亮,但是在功能上和擴充性上不得不說jenkins是比較成熟的。一些可能會遇到的注意事項,本文會以紅字标示出來

因為上線是一個頻繁的操作,有一套工具來保障他每次無誤的執行,能很大程度上提升效率;用自動化部署的好處是:

1:gitlab的代碼與伺服器代碼高度保持一緻,避免代碼不一緻造成的神奇bug

2:釋出幾十台機器和釋出一台機器都是點一下就可以,釋出編譯過程可追蹤

3:良好的權限控制,權責明确可追溯(瓦力在權限控制上做得不錯,分空間,master,主管 和釋出者)

伺服器一台,CentOS的就足夠,一般部署内網,因為無論jenkins還是gitlab你的代碼是完全暴露的,這個機器最好不要放在外網,有的同學會說,内網的gitlab我如何git pull到線上遠端伺服器,這裡就不需要git pull了,jenkins配置好會直接從内網機器釋出到外網機器。當然你非想把gitlab部署在外網也可以,做好防火牆安全防護隻對對應機器開放權限,包括你的端口(一般還是放内網)。

思考:如果我用傳統的yum來安裝,肯定會被我裝亂七八糟,還不友善自己管理維護,左右為難的情況下我選擇了Dokcer,可能有些小夥伴問Docker是啥怎麼用,不要慌這裡有傳送門:

https://segmentfault.com/a/1190000016254236#articleHeader0

Laradock 是為 Docker 提供的完整 PHP 本地開發環境,先要用 Laradock也得安裝,可以檢視連結:https://yq.aliyun.com/articles/673611  java版 jenkins搭建清檢視「Jenkins+Git+Maven+Shell+Tomcat持續內建」經典教程

為了快速搭建一套PHP測試環境我決定用laradock了,雖然檔案很多,但是裡面封裝的東西也是比較全的,後期開發不知道會用到什麼技術,就決定先用這個,随時可以啟動

laradock官方文檔給的介紹也很全面,我這裡采用的方式是部署多套項目方式目錄結構如下:

1.<code>git clone https://github.com/laradock/laradock</code>

2.<code>cp env-example .env</code>

env 裡面的配置可以修改的,可以根據自己情況進行調整

3.<code>docker-compose up -d nginx php-fpm mysql redis</code>

後面可以加上你要啟動的程式,像rabbitmq、mongo等等,需要的時候追加在尾部就可以啟動,首次啟動時間有點長

4.<code>docker-compose exec --user=laradock workspace bash</code>

像laravel等項目肯定少不了composer,執行這個指令進入工作區,就可以執行composer了

5.<code>docker-compose exec nginx nginx -s reload</code>

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

先運作下試試吧。

GitLab 是一個用于倉庫管理系統的開源項目。使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務。

可通過Web界面進行通路公開的或者私人項目。它擁有與Github類似的功能,能夠浏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的通路,随着git的流行,越來越多的技術團隊通過在自己的伺服器搭建gitlab來實作代碼的管理。

安裝流程:

解除安裝本機gitliab以及相關檔案

安裝相關依賴

啟動postfix,并設定為開機啟動

防火牆設定

擷取安裝包

安裝rpm包

修改配置檔案gitlab.rb

加載配置檔案并啟動

通路gitlab

更改密碼

gitlab建立一個項目

導入用戶端公鑰

查找用戶端公鑰

将用戶端公鑰添加進gitlab

送出本地項目到gitlab

報錯處理

檢視gitlab日志修正報錯

vim /etc/gitlab/gitlab.rb

查找到

external_url 這個屬性,将其改為ip+位址

一套基礎自動化部署搭建過程(vue實戰防坑版)

首次進入會提示更改密碼,在界面直接操作即可,也可以使用指令行操作。如果忘記密碼不用着急有shell root 權限什麼事都好辦

一套基礎自動化部署搭建過程(vue實戰防坑版)

建立了一個jpa_test項目

點選項目上方的<code>add an SSH key</code>超鍊,即可進入導入用戶端秘鑰界面

一套基礎自動化部署搭建過程(vue實戰防坑版)

公鑰存在位址路徑為 ~/.ssh

檢視公鑰

一套基礎自動化部署搭建過程(vue實戰防坑版)

 如果遇到clone和push都ok了,發現送出後的檔案線上無法檢視,頁面顯示500錯

一套基礎自動化部署搭建過程(vue實戰防坑版)
一套基礎自動化部署搭建過程(vue實戰防坑版)

這是一台阿裡雲的新機器,内容為2G,已經滿足gitlab最小記憶體1G的需求,通過free -h指令發現Swap為0

一套基礎自動化部署搭建過程(vue實戰防坑版)

于是根據網上資料通過增加swap來看看效果

一套基礎自動化部署搭建過程(vue實戰防坑版)

修改後線上檢視檔案正常

一套基礎自動化部署搭建過程(vue實戰防坑版)

如果你搭在外網,gitlab暴露的web頁面端口單獨指定ip可以通路吧,如果是阿裡雲直接添加ip段即可,如果是獨立機房centos可以用firewall-cmd或者在nginx裡配置好,代碼安全第一

至此gitlab搭建完美結束!

實作自動化部署有很多種方式如:webhook、Jenkins、Travis CI,瓦力等等,我的選擇是Jenkins,因為之前部用過好幾個還是覺得jenkins強大好用

1:安裝jdk

2、安裝jenkins

添加Jenkins庫到yum庫,Jenkins将從這裡下載下傳安裝。

配置jenkis的端口

找到修改端口号:

3、啟動jenkins

安裝成功後Jenkins将作為一個守護程序随系統啟動

系統會建立一個“jenkins”使用者來允許這個服務,如果改變服務所有者,同時需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者

啟動的時候将從/etc/sysconfig/jenkins擷取配置參數

預設情況下,Jenkins運作在8080端口,在浏覽器中直接通路該端進行服務配置

Jenkins的RPM倉庫配置被加到/etc/yum.repos.d/jenkins.repo

4、打開jenkins 

在浏覽器中通路 

首次進入會要求輸入初始密碼如下圖, 

初始密碼在:/var/lib/jenkins/secrets/initialAdminPassword

一套基礎自動化部署搭建過程(vue實戰防坑版)

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

初始化成功之後前往系統設定-&gt;插件管理安裝幾個必要插件:

一、基礎配置

安裝完插件之後需要配置一些基礎内容如jdk、node、ssh等

1.ssh安裝

進入:Manage Jenkins-&gt; Configure System

一套基礎自動化部署搭建過程(vue實戰防坑版)

點選進階:

一套基礎自動化部署搭建過程(vue實戰防坑版)

點選Test Configuration測試是否連接配接成功,這裡最好不要用root相關賬戶來操作,因為通過jenkins也能執行shell,就指定目錄限定釋出代碼目錄即可

2.jdk、git

進入:Manage Jenkins-&gt; Global Tool Configuration

一套基礎自動化部署搭建過程(vue實戰防坑版)

我這裡jdk、git采用自動安裝,jdk安裝時候需要一個賬号,去注冊下就可以

3.nodejs安裝

一套基礎自動化部署搭建過程(vue實戰防坑版)

二、建立工程

一套基礎自動化部署搭建過程(vue實戰防坑版)

建立一個工程

選擇自由風格

三、配置工程

一套基礎自動化部署搭建過程(vue實戰防坑版)

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

一套基礎自動化部署搭建過程(vue實戰防坑版)

使用git源碼工具,輸入git位址、添加git使用者

一套基礎自動化部署搭建過程(vue實戰防坑版)

這裡為什麼要把項目打包呢,因為下面要配置的ssh不支援檔案夾傳輸,是以需要先将内容進行打包然後去伺服器進行解包

一套基礎自動化部署搭建過程(vue實戰防坑版)

全部儲存好就可以去建構了,這裡隻是将一個簡單的test.tar.gz檔案從jenkins伺服器發送到遠端伺服器的操作, test.tar.gz包含編譯過後需要全部發送的内容,至于這個test.tar.gz 怎麼來的,java maven 就在execute shell裡增加指令 maven clean,maven install ,vue就npm install ,npm run build,更詳細的java版檢視「Jenkins+Git+Maven+Shell+Tomcat持續內建」經典教程

如果你在ssh server 裡配置了目錄的話,這裡的Remote directory就是為ssh server配置的相對目錄

按照一般的教程這個時候可能覺得大功告成了,那不是,常常會遇見一些小問題,比如在添加源碼git的時候:Jenkins源碼管理git報錯:Host key verification failed

首先進入jenkins賬号,直接sudo su jenkins還不行,看cat /etc/passwd 是把shell禁了的

執行指令:

點選然後下一步 ,點選yes ,ok,這時,ip就已經添加到~/.ssh/known_hosts。

記住一點,jenkins的相關操作都是以jenkins預設啟動使用者jenkins來操作的,這樣遇到一些問題就好辦了

耶~

vue項目配置:

vue現在在各個創業公司中用到比較多,用jenkins來部署vue其實很不錯,最重要的思想就是編譯打包都在内網jenkins機器完成,釋出到伺服器端的都是打包過後的html,這樣技能提升效率,也能保障源碼的安全:

1:部署vue先得安裝node.js,在插件管理裡安裝好NodeJS plugin的插件,然後選擇版本配置

一套基礎自動化部署搭建過程(vue實戰防坑版)
一套基礎自動化部署搭建過程(vue實戰防坑版)

首先建立一個自由風格的項目

一套基礎自動化部署搭建過程(vue實戰防坑版)
一套基礎自動化部署搭建過程(vue實戰防坑版)
一套基礎自動化部署搭建過程(vue實戰防坑版)
一套基礎自動化部署搭建過程(vue實戰防坑版)
一套基礎自動化部署搭建過程(vue實戰防坑版)