Назад | Перейти на главную страницу

Требуются файлы .py для выполнения в одном каталоге с файлами .html и .php с использованием mod_wsgi

Я использую CentOS 8.1 с Python 3.6.8 и Apache / 2.4.37.

Я новичок в mod_wsgi. Я нашел этот пример "привет, мир" и заставил его работать:

https://www.ionos.com/community/hosting/python/use-mod-wsgi-to-run-python-as-a-web-application-on-centos-7/

Проблема, с которой я столкнулся, заключается в том, что для этого, похоже, требуется, чтобы каждый файл .py был добавлен в свой собственный файл .conf для добавления в conf.d, как показано в /etc/httpd/conf.d/helloworld.conf:

WSGIScriptAlias /helloworld /var/www/python/helloworld.py

<Directory /var/www/python/>
Order allow,deny
Allow from all
</Directory>

И запускать скрипты python (.py) из / var / www / python.

Это очень неудобно, поскольку кажется, что каждую программу Python необходимо жестко запрограммировать, а не запускать каталоги / var / www / html. У нас есть разработка на Python 2, где файлы .py выполняются в одном каталоге вместе с файлами .html и .php. В CentOS 7 мы только что добавили запись в httpd.conf, чтобы распознать все файлы .py и убедиться, что они выполняются Python.

Я вижу, что автор упомянул, что это было сделано для безопасности. Есть ли способ сделать это по-прежнему безопасным, но чтобы мне не нужно было собирать все файлы .py на сервере и создавать для них файлы .conf, как показано в этом примере "hello world"?

Если мой взгляд на использование mod_wsgi полностью неверен, пожалуйста, просветите меня.

Mod_wsgi также имеет WSGIScriptAliasMatch это может быть полезно в вашем случае, например

WSGIScriptAliasMatch ^/([^/]+).py /var/www/python/$1.py

Если вам не нужны более короткие пути, вы также можете использовать WSGIScriptAlias для всей папки:

WSGIScriptAlias /python/ /var/www/python/

Это было бы эквивалентно:

Alias /python/ /var/www/python/
<Location /python>
    SetHandler wsgi-script
    Options +ExecCGI
</Location>

Это похоже на то, как вы использовали бы mod_python Издатель Handler:

<Directory /var/www/python> 
   AddHandler mod_python .py
   PythonHandler mod_python.publisher 
   PythonDebug On 
</Directory>

Дополнительные примеры см. mod_wsgi Руководство по настройке