Я пытаюсь запустить приложение django с apache2 с помощью wsgi, но, похоже, не удается настроить использование виртуальной среды.
Для установки mod_wsgi
Я следовал Служить Python 3.7 с mod_wsgi в Ubuntu 16 , поскольку я использую python3 .7.
Я создал виртуальную среду с virtualenv -p python3.7 venv
. Использование виртуальной среды вручную с python manage.py runserver
работает и запускает сервер, как и ожидалось.
Для запуска с apache2 я настроил my-app.conf
с:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
ProxyPass / http://0.0.0.0:8000/
ProxyPassReverse / http://127.0.0.1:8000/
<Directory /home/path/to/project/static>
Require all granted
</Directory>
<Directory /home/path/to/venv/>
Require all granted
</Directory>
<Directory /home/path/to/project/server>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess project \
python-home=/home/path/to/venv/ \
python-path=/home/path/to/project/server/
WSGIProcessGroup project
WSGIScriptAlias /project /home/path/to/project/server/wsgi.py \
process-group=example.com \
application-group=%{GLOBAL}
Alias /static/ /home/path/to/project/static/
ErrorLog /var/log/apache2/mysite-error.log
LogLevel warn
CustomLog /var/log/apache2/mysite-access.log combined
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
и my-app-ssl.conf
с:
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
</IfModule>
Я получаю сообщение об ошибке: ImportError: No module named 'django'
, которое основано на неправильной установке venv. Я добавил некоторый код в wsgi.py
:
for k in sorted(os.environ.keys()):
v = os.environ[k]
print ('%-30s %s' % (k,v[:70]))
и, очевидно, вижу, что он не использует виртуальную среду по сравнению с ручным запуском приложения с помощью virtualenv.
Что плохого в моей настройке, что она не использует виртуальную среду?