2008-09-25 15 views
6

के तहत उपversण चलाना मेरा अपाचे सर्वर कुछ गैर-डिफ़ॉल्ट (रूट-रूट) खाते पर चलता है।अपाचे और mod_python

svn: Can't open file '/root/.subversion/servers': Permission denied 

एक ही समय में तोड़फोड़ चेकआउट आदेश के अंदर के साथ कि अजगर स्क्रिप्ट चलाने: जब यह एक अजगर स्क्रिप्ट जो बारी में एक तोड़फोड़ चेकआउट आदेश निष्पादित करता है चलाने के लिए कोशिश करता है, 'SVN चेकआउट' निम्न त्रुटि संदेश के साथ विफल एक ही उपयोगकर्ता खाते के तहत कमांड लाइन से पूरी तरह से अच्छी तरह से चला जाता है।

फेडोरा कोर 6 मशीन पर mod_python 3.2.8 रन के साथ अपाचे सर्वर 2.2.6।

क्या कोई मेरी मदद कर सकता है? बहुत बहुत धन्यवाद।

उत्तर

0

उस फ़ाइल पर अपाचे उपयोगकर्ता (उपयोगकर्ता जो अपाचे सेवा चल रहा है) देने की कोशिश करें, उस फ़ाइल पर r + w अनुमतियां।

5

ऐसा लगता है कि आप जिस अपाचे प्रक्रिया के तहत चल रहे हैं, वह थोड़ा असामान्य है। किसी भी कारण से, svn लगता है कि उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइलों की आवश्यकता है/रूट में हैं। जबकि अपने वातावरण फिक्सिंग नहीं

svn --config-dir /home/myuser/.subversion checkout http://example.com/path 

, यह कम से कम आप अपनी स्क्रिप्ट के लिए अनुमति देगा: आप SVN कमांड लाइन पर निर्दिष्ट करके फ़ाइलों की जड़ संस्करणों का उपयोग जो config निर्देशिका का उपयोग करने से बच सकते हैं, तो जैसे ठीक से चलाएं ...

+0

बहुत सराहना की, डगलस, इसने मुझे वही समस्या हल कर दी जो मैंने किया था। –

+0

आप 'svn --config-dir/etc/subversion' का उपयोग कर साइट-व्यापी कॉन्फ़िगरेशन निर्दिष्ट कर सकते हैं –

0

अपाचे का त्रुटि लॉग आपको कोई सुराग नहीं देता है?

शायद इसे SELinux के साथ करना है। Aud /var/log/audit/audit.log जांचें और तदनुसार अपने SELinux कॉन्फ़िगरेशन को समायोजित करें, अगर audit.log फ़ाइल इंगित करती है कि यह SELinux है जो अपाचे पहुंच से इनकार करता है।

0

अनुमति अस्वीकृत त्रुटि यह दिखा रही है कि स्क्रिप्ट रूट प्रमाण-पत्रों के साथ चल रही है, क्योंकि यह फ़ाइलों के लिए रूट के घर डीआईआर में दिख रहा है।

मैं सुझाव है कि आप कुछ है कि नहीं करता है के लिए हुक स्क्रिप्ट बदलने के लिए:

id > /tmp/id 

ताकि आप देख सकते हैं कि के परिणामों यकीन है कि क्या uid/gid और euid/egid हैं बनाने के लिए। आपको शायद यह पता चलेगा कि यह वास्तव में उस उपयोगकर्ता के रूप में नहीं चल रहा है जिसे आप सोचते हैं।

मेरा पहला अनुमान, जैसे ट्रॉल्स, एसईएलएनक्स भी था, लेकिन यह केवल मेरा अनुमान होगा यदि आप पूरी तरह से सुनिश्चित हैं कि अपाचे के माध्यम से स्क्रिप्ट ठीक उसी उपयोगकर्ता/समूह के साथ आपके मैन्युअल परीक्षण के रूप में चल रही है।

0

अच्छा, प्रश्न का उत्तर देने वाले सभी के लिए धन्यवाद। वैसे भी, मुझे लगता है कि मैंने मिस्टर को हल किया।

SELinux मशीन पर पूरी तरह से अक्षम है, इसलिए समस्या निश्चित रूप से 'svn co' में है जो उपयोगकर्ता खाते के लिए config_dir को प्राप्त करने में सक्षम नहीं है।

अपाचे/mod_python उपयोगकर्ता खाते के खोल वातावरण में नहीं पढ़ता है जो अपाचे चालू है। इस प्रकार examle के लिए कोई $ HOME जब अपाचे कुछ वास्तविक उपयोगकर्ता (नहीं कोई नहीं)

अब 'SVN सह' एक झंडा --config-निर्देशिका जो विन्यास निर्देशिका के लिए अंक से पैरामीटर को पढ़ने के लिए है के तहत चल रहा है mod_python द्वारा देखा जाता है। डिफ़ॉल्ट रूप से यह $ HOME/.subversion है, यानी यह उपयोगकर्ता खाता होम निर्देशिका से मेल खाता है। जाहिर है जब कोई $ HOME मौजूद नहीं है mod_python रूट घर dir (/ root) पर जाता है और इसके साथ बेकार करने की कोशिश करता है।वहां पर विवर्तन सामग्री - जो स्पष्ट रूप से खराब तरीके से विफल हो जाती है।

/etc/httpd/conf/httpd.conf में

setenv घर/घर/क्यूए

डाल क्योंकि setenv खोल पर्यावरण के साथ कुछ नहीं होने की समस्या का समाधान नहीं करता है - केवल यह सेट संबंधित अपाचे पर्यावरण

इसी तरह PythonOption - सेट केवल mod_python संबंधित चर जो req.get_options() कि

चल रहा है के बाद से पढ़ा जा सकता 'SVN सह --config-निर्देशिका/घर/...' निश्चित रूप से देता है Runni के लिए एक कामकाज ng mod_python के भीतर से, लेकिन उन लोगों के रास्ते में आता है जो स्क्रिप्ट को कमांड लाइन से चलाने का प्रयास करेंगे।

तो प्रस्तावित (और कामकाजी) समाधान ऐप शुरू करने से पहले होम पर्यावरण चर सेट करना है।

/etc/init.d/httpd लिपि में उदाहरण के लिए

QAHOME=/home/qa 
    ... 
    HOME=$QAHOME LANG=$HTTPD_LANG daemon $httpd $OPTIONS 
0

क्या हो रहा है अपाचे, जड़ का वातावरण चर के साथ शुरू किया जा रहा है तो यह मानना ​​है कि यह अपने config फाइल को खोजना चाहिए है/जड़ /। यह मामला नहीं है। क्या होता है अगर आप sudo apache2ctl शुरू करते हैं, तो यह आपके $ HOME चर sudo $ HOME =/जड़/

मैं सिर्फ इस समस्या को अपने आप के लिए एक समाधान मिल गया है (हालांकि मोड-पर्ल, लेकिन एक ही बात के साथ)

से खींचती

रन इस आदेश (अपने अपाचे 1, तब निकालते हैं, 2):

sudo /etc/init.d/apache2 stop 
sudo /etc/init.d/apache2 start 

/etc/init.d/apache2 अपाचे शुरू होता है, यह सब उचित वातावरण चर कि अपाचे के तहत चल जाना चाहिए निर्धारित करता है।

संबंधित मुद्दे