我正在嘗試使用Gitolite獲得一個相當簡單的部署過程,用於Node應用程序。我有Gitolite設置和在我的服務器上工作,我能夠推動它很好。通過Gitolite部署節點應用程序和post-receive鉤子
Gitolite正在用戶git
下運行,我設置了一個node
用戶,我希望用它來運行Node應用程序。
我的計劃是將Node應用程序推送到Gitolite,然後使用post-receive掛鉤腳本將應用程序文件移動到應用程序所在的目錄,本例中爲/var/local/node-apps/my-node-app/
。我創建這樣的節點app文件夾:
sudo mkdir -p /var/local/node-apps/my-node-app
sudo chown node /var/local/node-apps/my-node-app
的問題是,我是一個Unix的小白,我沒有得到我的頭一輪的文件/文件夾的權限和wotnot。
/var/local/node-apps
(也/var/local/node-apps/my-node-app
)由node
用戶所擁有的,所以當用戶git
試圖結帳到這個位置,我得到了一堆許可被拒絕錯誤。我使用的是在後得到的命令是:
GIT_WORK_TREE=/var/local/node-apps/my-node-app git checkout -f
而且我得到的錯誤是這樣的:
remote: error: git checkout-index: unable to create file XXXX (Permission denied)
remote: fatal: cannot create directory at 'XXXX': Permission denied
什麼是解決它的最好方法?我需要授予git
用戶無密碼sudo權限su
作爲node
用戶嗎?或者可以通過更改組和文件夾權限以某種方式修復?或者完全不同的方法?我迷路了!
謝謝!
謝謝! 在你引用的例子中,這個人基本上通過添加sudoers文件來解決他的問題。用他的方法考慮是否有任何安全隱患? – WildService
@Wintamute腳本(在'suoders'文件中引用)需要由root進行控制(爲了確保它不能被修改以執行其他任何操作)。除此之外,你有使用sudo通常的利弊:http://serverfault.com/questions/140633/security-issue-of-linux-sudo-command – VonC
啊,我明白了,是有道理的。在他的例子中,他實際上追加了三行「sudoers」。 'git ALL =(root)NOPASSWD:/ usr/local/sbin/prgetsimpleappscom','git ALL =(root)NOPASSWD:/ bin/sh'和'git ALL =(root)NOPASSWD:/ bin/sh/usr/local/sbin中/ prgetsimpleappscom'。這三個都是必要的嗎? – WildService