我有一個新的Fedora 12服務器,我試圖設置Mercurial。我有yum install
和許多事情似乎工作正常。但是,在通過apache設置hgwebdir.cgi後,我無法對目前託管的唯一倉庫執行hg push
。我回來的錯誤是:HgWebDir推送權限被拒絕錯誤
searching for changes
abort: HTTP Error 500: Permission denied: .hg/store/lock
httpd的運行爲用戶阿帕奇
UID PID PPID C STIME TTY TIME CMD
root 1691 1 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1694 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1695 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1696 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1697 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1698 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1699 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1700 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
apache 1701 1691 0 13:19 ? 00:00:00 /usr/sbin/httpd
,並讓apache用戶擁有整個回購和一切我設置權限。在最後一次嘗試中,我甚至將回購作爲全局可寫的。
[[email protected] .hg]# ll
total 424K
drwxrwxrwx. 3 apache apache 4.0K 2010-04-19 14:43 .
drwxrwxrwx. 19 apache apache 4.0K 2010-04-15 13:33 ..
-rw-rw-rw-. 2 apache apache 57 2010-04-13 11:42 00changelog.i
-rw-rw-rw-. 1 apache apache 93 2010-04-16 15:33 branchheads.cache
-rw-rw-rw-. 1 apache apache 192K 2010-04-15 13:33 dirstate
-rw-r--r--. 1 apache apache 156 2010-04-19 14:43 hgrc
-rw-rw-rw-. 1 apache apache 42 2010-04-15 13:33 last-message.txt
-rw-rw-rw-. 2 apache apache 23 2010-04-13 11:42 requires
drwxrwxrwx. 4 apache apache 4.0K 2010-04-19 11:26 store
-rw-rw-rw-. 1 apache apache 45 2010-04-14 14:08 tags.cache
-rw-rw-rw-. 1 apache apache 7 2010-04-16 15:33 undo.branch
-rw-rw-rw-. 1 apache apache 192K 2010-04-16 15:33 undo.dirstate
[[email protected] .hg]# cd store
[[email protected] store]# ll
total 308K
drwxrwxrwx. 4 apache apache 4.0K 2010-04-19 11:26 .
drwxrwxrwx. 3 apache apache 4.0K 2010-04-19 14:43 ..
-rw-rw-rw-. 1 apache apache 20K 2010-04-16 15:33 00changelog.i
-rw-rw-rw-. 1 apache apache 81K 2010-04-16 15:33 00manifest.i
drwxrwxrwx. 17 apache apache 4.0K 2010-04-13 11:47 data
drwxrwxrwx. 3 apache apache 4.0K 2010-04-13 11:43 dh
-rw-rw-rw-. 2 apache apache 177K 2010-04-15 11:03 fncache
-rw-rw-rw-. 1 apache apache 67 2010-04-16 15:33 undo
我有一臺克隆的機器上的其他地方的克隆作爲一個不同的用戶運行。如果我將克隆hgrc文件的[paths]
部分中的default
值設置爲服務器上的本地文件路徑,則推送工作正常,但如果將其切換爲使用url,則每次都會收到錯誤。
一些可能的怪癖我如何設置它... hgwebdir.cgi坐在/var/www/cgi-bin
和回購是/opt/hg
的孩子。我也關閉了suexec,這似乎沒有解決問題。我在Apache的配置加入到獲得hgwebdir運行的唯一路線是:
ScriptAlias /hg "/var/www/cgi-bin/hgwebdir.cgi"
的hgweb.config也是/var/www/cgi-bin
,它的內容是:
[collections]
/opt/hg = /opt/hg
[trusted]
users = *
[web]
baseurl = /hg
push_ssl = false
allow_push = *
回購瀏覽器工作正常,這是隻是推動不起作用。 Apache error_log根本就沒有任何關於這個錯誤的信息。
我不太喜歡給文件賦予777權限,但它在第一次嘗試時解決了我的問題。現在我將嘗試瞭解哪些權限錯誤。順便說一下,+1。 – 2011-03-25 12:12:42
+1。它的工作原理如上所述感謝rossmcf – 2012-07-30 16:37:42
我也遇到了這個問題,但我沒有給出777,而是調查了在工作目錄中.hg/AND中的某些文件/文件夾是由另一個用戶擁有的,而不是'www-data'。所以我將它們更改爲'www-data',因爲這是用戶hgweb.cgi正在運行的。 – 2013-03-23 11:10:18