Shell
我正在嘗試使用 git 部署到半託管 vps,需要編寫腳本來更改所有者
我正在嘗試使用本教程在我公司的半託管 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."