gitlab 自動化部署
原理介紹
配置gitlab當push動作的時候,訪問伺服器上的乙個鏈結比如www.shenke.group/hook.php
hook.php裡面寫著一行**,會讓伺服器git pull相應專案的**到web目錄。
pull結束,**就在web目錄了,我們只要重新訪問**就可以了。
核心就是push的時候,gitlab會呼叫伺服器上的指令碼,伺服器上的指令碼就會從git重新拉取專案檔案。同時還需要加入安全性的設計。
配置ssh秘鑰
首先檢視nginx和php的預設執行使用者,分別檢視對應的檔案nginx.conf和php-fpm.conf即可,一般是www使用者,以www使用者為例。修改/etc/passwd檔案,使www使用者具有可登入許可權,如下:
由上圖中的配置改為:
當自動化部署完成後,要該回到原來的配置,因為www使用者預設是不允許登入伺服器的。
按以下步驟操作:
執行 su www 命令切換為www使用者。
執行 ssh-keygen 命令,將生成的公鑰(位置在/home/www目錄下),新增到gitlab中的專案中
注意:1. 這裡一定要是www使用者的秘鑰!
2. 進入到專案根目錄所在目錄,cd /var/www ,更改專案目錄web所屬使用者和使用者組,執行命令
chown -r www:www web
伺服器指令碼
編寫hook.sh 內容如下(這是簡單版本):
使用www使用者進行測試,執行 bash hook.sh 命令,測試能否進行拉取**。如果成功,下一步就是通過鉤子執行此指令碼。
php執行指令碼
hook.php:
接下來通過瀏覽器訪問測試:
訪問後,如果能返回git執行的資訊,就表示成功了。接下來就是配置gitlab的webhooks。
為支援多個專案 配置了project引數,可以部署多個專案。只需要在gitlab鉤子中配置時,使用不同的project引數。
gitlab配置鉤子
觸發一般選擇合併請求事件
部署完成後,修改/etc/passwd檔案,將www使用者修改為nologin即可!
說說配置gitlab的webhook時踩過的坑
之前把公司的版本管理從svn換到了gitlab,用的各種舒適,但是,我的上線屬於手動上線,先在本地git push到主分支,再到線上環境去執行git pull命令把 拉取下來。如何能做到自動部署呢?答案是webhook。有關如何配置webhook,推薦文章 那麼webhook是如何做到自動部署的呢?...
寶塔webhook配置gogs鉤子
倉庫設定 web鉤子 webhook shell bin bash echo 輸出當前時間 date date 0 days ago y m d h m s echo start 判斷寶塔webhook引數是否存在 if n 1 then echo param引數錯誤 echo end exit f...
Gitlab 郵件配置
git郵件配置vim etc gitlab gitlab.rb 找到 gitlab email server settings 在其中新增下如配置 external url 這裡可採用ip訪問也可採用網域名稱訪問 gitlab rails gitlab email from soarpatriot ...