我正在尝试使用 git 部署到半托管 vps,需要编写一个脚本来更改所有者

我正在尝试使用 git 部署到半托管 vps,需要编写一个脚本来更改所有者

我正在尝试使用本教程在我公司的半托管 vps 服务器上部署我的网站:https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

它可以在我自己的 Digital Ocean 服务器上运行,无需任何更改,但在我公司的服务器上设置有所不同。

public_html 文件夹需要由 whm 帐户用户拥有,否则您会收到 500 错误。但 git 用户需要拥有 public_html 文件夹才能使此方法起作用。因此,我正在修改接收后脚本以包含更改所有者的命令,但它似乎不起作用。我究竟做错了什么?

#!/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."

答案1

我会取消 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."

相关内容