मैं अजगर लिपियों का उपयोग कर सीजीआई को लागू करने की कोशिश कर रहा हूँ। जब भी मैं 127.0.0.1/hello खोलता हूं, फ़ाइल निष्पादित होने के बजाय डाउनलोड हो जाती है। मेरी 000-default.conf फ़ाइल sites-available में निम्नलिखित है

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        AddHandler cgi-script .py
    </Directory>

    <Directory /var/www/>
        Options ExecCGI Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all 
        AddHandler cgi-script .py
    </Directory>

    ScriptAlias /cgi-bin/ /usr-lib/cgi-bin/ 
    <Directory "/usr-lib/cgi-bin/">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

मेरे पास अजगर स्थापित है

/home/musigma/anaconda3/bin 

इसलिए मैंने अपनी अजगर फ़ाइल में शेबैंग लाइन के रूप में निम्नलिखित को जोड़ा:

#!/home/musigma/anaconda3/bin python3

मेरी अजगर फ़ाइल की सामग्री निम्नलिखित हैं:

#!/home/musigma/anaconda3/bin python3
print("Content-type:text/html\r\n\r\n")
print("<html>")
print("<head><title>cgi script </title></head>")
print("<body>")
print('<p>I think it worked</p>')
for i in range(5):
    print("<h1>hello world</h1>")
print("</body>")
print("</head>")

मैंने फ़ाइल को /var/www में रख दिया है। मैंने अपनी पायथन फ़ाइल को निष्पादन योग्य बनाने के लिए निम्न पंक्ति भी चलाई:

sudo chmod 755 hello.py 

लेकिन वह अभी भी मेरी पायथन लिपि को निष्पादन योग्य नहीं बनाता है। निष्पादित करने के बजाय, फ़ाइल डाउनलोड हो जाती है। मुझे यकीन नहीं है कि चीजों को अब कैसे काम करना है। कोई भी दिशा बहुत मददगार होगी। मैंने इन कड़ियों की कोशिश की है लेकिन वे मेरे उद्देश्य की पूर्ति नहीं करते हैं। मैंने पहले ही इन बातों का ध्यान रखा है

पायथन सीजीआई निष्पादन योग्य स्क्रिप्ट डाउनलोड / स्क्रिप्ट कोड दिखाता है

मैं पिछले चार-पांच घंटों से इसका पता लगाने की कोशिश कर रहा हूं और मुझे नहीं पता कि आगे क्या करना है। कोई भी दिशा बहुत अच्छी होगी।

पीएस: मैं उबंटू 16.04 का उपयोग कर रहा हूं

अपाचे संस्करण

Server version: Apache/2.4.18 (Ubuntu)
Server built:   2016-07-14T12:32:26
1
Clock Slave 15 मार्च 2017, 13:42

2 जवाब

निष्पादन योग्य CGI स्क्रिप्ट को अनुमति देने के लिए केवल निर्देशिका /usr-lib/cgi-bin/ सेटअप है। यही है:

Options +ExecCGI

दर्शाता है।

इसलिए #! लाइन को ठीक करें जैसा कि पहले ही बताया जा चुका है, फिर स्क्रिप्ट को डायरेक्टरी /usr-lib/cgi-bin/ में ले जाएं।

अंत में, /cgi-bin/hello.py के URL पथ का उपयोग करें।

निष्पादन योग्य सीजीआई स्क्रिप्ट के लिए अपाचे को स्थापित करने के बारे में अधिक जानकारी के लिए, यहां अपाचे दस्तावेज देखें:

2
Graham Dumpleton 17 मार्च 2017, 01:56

क्या होगा यदि आप अपनी फ़ाइल को hello.cgi और hello.py में कॉपी/सिमलिंक करते हैं? क्या तब 127.0.0.1/hello.cgi और 127.0.0.1/hello.py स्रोत कोड या निष्पादन के परिणाम उत्पन्न करते हैं?

से स्क्रिप्ट की पहली पंक्ति को बदलने का प्रयास करें:

#!/home/musigma/anaconda3/bin python3

प्रति:

#!/home/musigma/anaconda3/bin/python3

साथ ही, मैंने सोचा होगा कि आपकी स्क्रिप्ट का पथ डिफ़ॉल्ट रूप से 127.0.0.1/hello.py (एक्सटेंशन सहित) था।

0
Bjartur Thorlacius 17 मार्च 2017, 00:12
क्या आप थोड़ा और समझा सकते हैं (शायद आम आदमी के संदर्भ में अधिक)?
 – 
Clock Slave
15 मार्च 2017, 14:39