Score:1

เหตุใด Apache ที่มี mod_wsgi จึงบังคับให้ดาวน์โหลดไฟล์ .py เพื่อทำการเรียกใช้งาน

ธง gb

เหตุใด Apache ที่มี mod_wsgi จึงบังคับให้ดาวน์โหลดไฟล์ .py แทนที่จะเรียกใช้งาน

ฉันกำลังพยายามเรียกใช้ Django แต่ปัญหาแรกที่ฉันมีคือไฟล์ .py ไม่ทำงาน

ฉันกำลังติดตามเอกสารที่นี่ https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/modwsgi/

  • ฉันใช้ Ubuntu 20.04.3 LTS
  • ติดตั้งและเปิดใช้งาน libapache2-mod-wsgi-py3 แล้ว
  • ทดสอบการกำหนดค่า apachectl ไวยากรณ์ตกลง
  • ไฟล์ทั้งหมด chowned to www-ข้อมูล:www-ข้อมูล
  • ไฟล์ .py คือ chmod +x
  • /var/log/apache2/access.log มันว่างเปล่า

/var/log/apache2/error.log ประกอบด้วย:

อาปาเช่/2.4.41 (อูบุนตู) mod_fcgid/2.3.9 OpenSSL/1.1.1k mod_wsgi/4.6.8 กำหนดค่า Python/3.8 -- ดำเนินการต่อตามปกติ

ไฟล์ .htaccess ที่รูทมี

RewriteEngine เปิดอยู่
ServerSignature ปิด

ไดเร็กทอรีของ /var/www/html/example.com/public_html คือ:

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือสิ่งที่ฉันเห็น การคลิกที่ไฟล์ .py บังคับให้ดาวน์โหลด

ป้อนคำอธิบายรูปภาพที่นี่

/etc/apache2/sites-available/default-ssl.conf:

<IfModule mod_ssl.c>
    <โฮสต์เสมือน _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html

        บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน

        SSLEngine เปิดอยู่

        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <ไดเรกทอรี /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </ไดเร็กทอรี>


นามแฝง /static /var/www/html/example.com/public_html/contact/static
นามแฝง /media /var/www/html/example.com/public_html/contact/media

<ไดเรกทอรี /var/www/html/example.com/public_html/contact/static>
    ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>

<ไดเรกทอรี /var/www/html/example.com/public_html/contact/media>
    ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>

WSGIScriptAlias ​​/ /var/www/html/example.com/public_html/contact/contact/wsgi.py

WSGIDaemonProcess example.com python-home=/var/www/html/example.com/public_html/contact

WSGIProcessGroup example.com

WSGISocketPrefix เรียกใช้/wsgi

 <ไดเรกทอรี /var/www/html/example.com/public_html/contact/contact>
    <ไฟล์ wsgi.py>
        ต้องการทุนทั้งหมด
    </ไฟล์>
</ไดเร็กทอรี>

<ไดเรกทอรี /var/www/html/example.com/public_html>
AllowOverride ไม่มี
    คำสั่งอนุญาตปฏิเสธ
    อนุญาตจากทั้งหมด
    ตัวเลือก +ExecCGI
    AddHandler cgi-script .py
</ไดเร็กทอรี>

    </เวอร์ชวลโฮสต์>
</หากโมดูล>

# เป็นกลุ่ม: ไวยากรณ์=apache ts=4 sw=4 sts=4 sr noet

/etc/apache2/sites-available/000-default.conf

<โฮสต์เสมือน *:80>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log รวมกัน

   # อนุญาตไฟล์ .htaccess
    <ไดเร็กทอรี /var/www/html>
        ดัชนีตัวเลือก FollowSymLinks MultiViews
        AllowOverride ทั้งหมด
        ต้องได้รับอนุญาตทั้งหมด
    </ไดเร็กทอรี>


นามแฝง /static /var/www/html/example.com/public_html/contact/static
นามแฝง /media /var/www/html/example.com/public_html/contact/media

<ไดเรกทอรี /var/www/html/example.com/public_html/contact/static>
    ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>

<ไดเรกทอรี /var/www/html/example.com/public_html/contact/media>
    ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>

WSGIScriptAlias ​​/ /var/www/html/example.com/public_html/contact/contact/wsgi.py

WSGIDaemonProcess example.com python-home=/var/www/html/example.com/public_html/contact

WSGIProcessGroup example.com

WSGISocketPrefix เรียกใช้/wsgi

 <ไดเรกทอรี /var/www/html/example.com/public_html/contact/contact>
    <ไฟล์ wsgi.py>
        ต้องได้รับอนุญาตทั้งหมด
    </ไฟล์>
</ไดเร็กทอรี>


<ไดเรกทอรี /var/www/html/example.com/public_html>
AllowOverride ไม่มี
    คำสั่งอนุญาตปฏิเสธ
    อนุญาตจากทั้งหมด
    ตัวเลือก +ExecCGI
    AddHandler cgi-script .py
</ไดเร็กทอรี>

</เวอร์ชวลโฮสต์>

# เป็นกลุ่ม: ไวยากรณ์=apache ts=4 sw=4 sts=4 sr noet
asktyagi avatar
in flag
คุณมีรายการใด ๆ กับ RemoveHandler หรือไม่?
Score:-1
ธง vn

WSGIScriptAlias ไม่มีวิธีการคลิกและดูบริการสำหรับ python คุณควรใช้เส้นทาง (เส้นทาง) ที่กำหนดโดย python เพื่อเข้าถึงแอปพลิเคชันของคุณ เปิดลิงค์ไปที่ .py ไฟล์อาจผ่านการให้บริการไฟล์แบบคงที่แทน WSGI

เพราะคุณติดตั้งแอปพลิเคชัน WSGI ของคุณที่รูท ลองเปิด / แทน /ติดต่อ เพื่อดูว่าใช้งานได้หรือไม่

BlueDogRanch avatar
gb flag
ฉันใช้ `WSGIScriptAlias ​​/` แทน `WSGIScriptAlias ​​/contact` อยู่แล้ว
Chino Chang avatar
vn flag
@BlueDogRanch ดังนั้นโปรดลองเปิด `/` ในเบราว์เซอร์ของคุณแทนการเปิด `/contact`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา