Однажды понадобилось на одном сервере с iRedmail отключить веб-сервер Nginx и установить Apache2. И когда я попробовал запустить iRedadmin, то он не открывался, а в логах Apache2 я увидел:
mod_wsgi (pid=233705): Failed to exec Python script file '/opt/www/iredadmin/iredadmin.py'.
mod_wsgi (pid=233705): Exception occurred processing WSGI script '/opt/www/iredadmin/iredadmin.py'.
Traceback (most recent call last):
File "/opt/www/iredadmin/iredadmin.py", line 8, in <module>
from libs import iredbase
File "/opt/www/iredadmin/libs/iredbase.py", line 5, in <module>
import web
ImportError: No module named web
Я попробовал установить веб-фреймворк web.py для Python:
pip3 install web.py
pip3 install web.py==0.62
Но оказалось что он уже был установлен:
Requirement already satisfied: web.py in /usr/local/lib/python3.8/dist-packages (0.62)
Requirement already satisfied: cheroot in /usr/local/lib/python3.8/dist-packages (from web.py) (8.5.2)
Requirement already satisfied: jaraco.functools in /usr/local/lib/python3.8/dist-packages (from cheroot->web.py) (3.1.0)
Requirement already satisfied: six>=1.11.0 in /usr/lib/python3/dist-packages (from cheroot->web.py) (1.14.0)
Requirement already satisfied: more-itertools>=2.6 in /usr/local/lib/python3.8/dist-packages (from cheroot->web.py) (8.6.0)
В итоге я решил проблему установкой libapache2-mod-wsgi-py3:
sudo apt install libapache2-mod-wsgi-py3
После этого ошибка исчезла.
Пример конфигурации для iredadmin если что:
WSGISocketPrefix /var/run/wsgi
WSGIDaemonProcess iredadmin user=iredadmin threads=15
WSGIProcessGroup iredadmin
AddType text/html .py
<Directory /opt/www/iredadmin/>
<IfVersion < 2.4>
Order deny,allow
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
Alias /iredadmin/static "/opt/www/iredadmin/static/"
WSGIScriptAlias /iredadmin "/opt/www/iredadmin/iredadmin.py/"
Смотрите также мои статьи:
Установка и настройка Apache2 в Linux
Установка и настройка iRedMail
Установка и настройка Nginx