Shell

我正在嘗試使用 git 部署到半託管 vps,需要編寫腳本來更改所有者

  • March 6, 2015

我正在嘗試使用本教程在我公司的半託管 vps 伺服器上部署我的站點:https ://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-帶 vps

它可以在我自己的 Digital Ocean 伺服器上執行而無需更改,但在我的公司伺服器上設置不同。

public_html 文件夾需要由 whm 帳戶使用者擁有,否則會出現 500 錯誤。但是 git 使用者需要擁有 public_html 文件夾才能使用此方法。所以我正在修改 post-receive 腳本以包含更改所有者的命令,但它似乎不起作用。我究竟做錯了什麼?

#!/bin/sh

# REPLACE *** WITH ACCOUNT USERNAME
# Change owner of html folder to git
find /home/***/public_html -user root -exec chown -R git:git {} + 2>>logfile
echo "Changed owner to git."

# Update html folder with git push contents
git --work-tree=/home/***/public_html --git-dir=/home/***/repo/live.git checkout -f
echo "Updated public html."

# Restore ownership of directories
find /home/***/public_html -user root -exec chown -R ***:*** {} + 2>>logfile
find /home/***/public_html -user root -exec chown ***:nobody {} + 2>>logfile
echo "Changed owners back."

我會取消 find ;因為你知道目錄在哪裡,你應該直接處理它。find 命令引入了一個可能失敗的新條件。

無論哪種情況,您都不會終止 find 命令,這可能是個問題。

這可能會更好:

#!/bin/sh

# REPLACE foo WITH ACCOUNT USERNAME
# Change owner of html folder to git
chown -R git:git /home/foo/public_html || echo "$date I failed." >> /tmp/foo.log
echo "Changed owner to git."

# Update html folder with git push contents
git --work-tree=/home/foo/public_html --git-dir=/home/foo/repo/live.git checkout -f || echo "$date Git failed." >> /tmp/foo.log
echo "Updated public html."

# Restore ownership of directories
chown -R foo:bar /home/foo/public_html 
chown foo:nobody /home/foo/public_html
echo "Changed owners back."

引用自:https://unix.stackexchange.com/questions/188503