![](/img/trans.png)
[英]What's the reasoning behind these approaches to git-based code deployment?
[英]Git-based website deployment workflow
在我的服務器上,我有兩個用戶, www-data
(由nginx使用)和git
。 git
用戶擁有一個包含我網站代碼的存儲庫,而www-data
用戶擁有該存儲庫的克隆(用作nginx的webroot)。 我想建立一個工作流程,以便推送到git
的存儲庫導致www-data
的存儲庫更新,從而更新我的網站。
為這些存儲庫設置掛鈎的正確方法是什么(這也考慮了這兩個用戶的權限和權限)?
刪除www-data
擁有的存儲庫,並按照此網頁上的解決方案在git
擁有的存儲庫中設置post-receive掛鈎。
我最終制作了git
用戶擁有的公共內容,並且所有人都可讀。 然后,我做了以下設置鈎子:
假設存儲庫名為mysite
:
創建一個分離的工作樹,作為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
添加一個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
更新:這是一個更好的解決方案 。
注意:此howto的早期版本取決於將git配置變量core.worktree設置為目標目錄,core.bare設置為false,並將receive.denycurrentbranch設置為忽略。 但是,如果您使用GIT_WORK_TREE(在我第一次編寫howto時無效),則不需要進行這些更改,並且遠程存儲庫可以保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.