簡體   English   中英

基於Git的網站部署工作流程

[英]Git-based website deployment workflow

在我的服務器上,我有兩個用戶, www-data (由nginx使用)和git git用戶擁有一個包含我網站代碼的存儲庫,而www-data用戶擁有該存儲庫的克隆(用作nginx的webroot)。 我想建立一個工作流程,以便推送到git的存儲庫導致www-data的存儲庫更新,從而更新我的網站。

為這些存儲庫設置掛鈎的正確方法是什么(這也考慮了這兩個用戶的權限和權限)?

刪除www-data擁有的存儲庫,並按照此網頁上的解決方案在git擁有的存儲庫中設置post-receive掛鈎。

我最終制作了git用戶擁有的公共內容,並且所有人都可讀。 然后,我做了以下設置鈎子:

假設存儲庫名為mysite

  1. 創建一個分離的工作樹,作為webroot(作為用戶git

     mkdir /var/www/mysite cd /path/to/repository/mysite.git git config core.worktree /var/www/mysite git config core.bare false git config receive.denycurrentbranch ignore 
  2. 添加一個post-receive鈎子,它將更新網站並為其設置正確的權限

     touch hooks/post-receive chmod +x hooks/post-receive vim hooks/post-receive 

    收件后腳本:

     #!/bin/sh git checkout -f chmod -R o+rX /var/www/mysite 

參考:
http://www.deanoj.co.uk/programming/git/using-git-and-a-post-receive-hook-script-for-auto-deployment/


更新:這是一個更好的解決方案

注意:此howto的早期版本取決於將git配置變量core.worktree設置為目標目錄,core.bare設置為false,並將receive.denycurrentbranch設置為忽略。 但是,如果您使用GIT_WORK_TREE(在我第一次編寫howto時無效),則不需要進行這些更改,並且遠程存儲庫可以保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM