簡體   English   中英

SVN發布后掛鈎要發布網站嗎?

[英]SVN Post-Commit Hook to Publish Website?

我在免費的EC2 AWS服務器上安裝了SVN實例。 簡而言之:我正在使用LAMP。

使用我在本文中閱讀的內容,並遇到注釋中提到的“您需要TTY”錯誤。 我遵循了第二個資源 ,它清除了錯誤消息,但似乎沒有執行腳本。 但是,當我手動運行腳本時,它可以工作。

有什么線索我想念嗎?

當我跟隨第二個資源來修復TTY錯誤時,我從以下位置更改了/ svn / repository / hooks / post-commit腳本的內容:

#!/bin/bash
sudo /usr/local/bin/svn-post-commit-update-mysite 1>&2

至:

#!/bin/bash
su –session-command=”/usr/local/bin/svn-post-commit-update-mysite 1>&2″ dynamic &

第一個可能的問題:

您不能依賴掛鈎內$ PATH變量的值。 這意味着您需要為所有可執行文件指定完整路徑。

特別是,“ su”是大多數發行版中位於“ / bin / sh”中的程序。 可以肯定的是,鍵入

type su

下一個可能的問題:

您的Subversion服務器是否以root用戶身份運行? su會嘗試詢問是否由其他用戶運行密碼,並且即使不是交互式運行,也會失敗-即使該用戶位於sudoers文件中!

如果您使用的是Apache + DAV,這意味着apache服務必須以root用戶身份運行(而不是www-data),這是一個嚴重的安全問題。

如果所有文件都歸同一用戶所有(例如www-data),則可能根本不需要使用susudo 您可以使用以下方法更改站點文件的所有權:

sudo chown -R www-data:www-data /var/www/<my-project>

然后從鈎子和svn-post-commit-update-mysite文件中刪除sudosu

我最好的猜測是腳本中的某些內容取決於PATH環境變量。 出於安全原因,Subversion在空環境中運行掛鈎。 因此,您需要在shell腳本中設置環境或使用絕對路徑。

您可能需要閱讀有關實現鈎子腳本Subversion書籍條目 我提到的特定問題在信息塊中進行了解釋。

暫無
暫無

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

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