Ich versuche, meine Flask-Anwendung auf CentOS-Server arbeiten zu lassen. Im Grunde ist das Problem, dass ich Python 2.6 in /usr/bin
installiert habe, was Systemstandard und Python 3.4 in /usr/local/bin
installiert ist. Ich möchte Python 3.4 virtualenv oder zumindest Python 3.4 interpreter für mod_wsgi verwenden, um meine Anwendung zu starten.Führen Sie mod_wsgi mit virtualenv oder Python mit Version anders als das System standardmäßig
Ich habe virtualenv in ~/virtualenvs/flask
erstellt.
Ich habe dieses WSGI Skript:
import os
import sys
from logging import Formatter, FileHandler
APP_HOME = r"/home/fenikso/Album"
activate_this = os.path.join("/home/fenikso/virtualenvs/flask/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, APP_HOME)
os.chdir(APP_HOME)
from app import app
handler = FileHandler("app.log")
handler.setFormatter(Formatter("[%(asctime)s | %(levelname)s] %(message)s"))
app.logger.addHandler(handler)
application = app
Und folgende Konfiguration in Apache:
<VirtualHost *:80>
ServerName album2.site.cz
Alias /static "/home/fenikso/Album/static"
Alias /photos "/home/fenikso/Album/photos"
Alias /thumbs "/home/fenikso/Album/thumbs"
WSGIScriptAlias/"/home/fenikso/Album/wsgi.py"
<Directory "/home/fenikso/Album">
AllowOverride None
Allow from all
</Directory>
<Directory "/home/fenikso/Album/static">
AllowOverride None
Allow from all
</Directory>
<Directory "/home/fenikso/Album/photos">
AllowOverride None
Allow from all
</Directory>
<Directory "/home/fenikso/Album/thumbs">
AllowOverride None
Allow from all
</Directory>
</VirtualHost>
jedoch bei dem Versuch, die Anwendung auszuführen, erhalte ich eine Fehlermeldung:
Apache/2.2.15 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.6 mod_fcgid/2.3.7 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.1e-fips SVN/1.6.11 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
mod_wsgi (pid=14627): Target WSGI script '/home/fenikso/Album/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=14627): Exception occurred processing WSGI script '/home/fenikso/Album/wsgi.py'.
Traceback (most recent call last):
File "/home/fenikso/Album/wsgi.py", line 15, in <module>
from app import app
File "/home/fenikso/Album/app.py", line 1, in <module>
from flask import Flask
ImportError: No module named flask
Ich habe festgestellt, dass entweder Python 2.6 läuft und mein virtualenv nicht aktiviert ist. Was wäre der richtige Weg, um dies zum Laufen zu bringen und trotzdem Python 2.6 als Systemstandard zu haben?
Ich denke, das ist der richtige Weg. Aber ich konnte es in meiner Umgebung nicht schaffen. Zu viele Dinge kaputt und unordentlich, also gab ich auf und versuchte es anders. – Fenikso
Aber sollten 'WSGIPythonHome' und' WSGIPythonPath' nicht außerhalb von '' liegen? –
Fenikso
Sie haben recht, diese Optionen müssen außerhalb des '' Blocks liegen. Mein Fehler.Wenn Sie für jedes '' ein anderes virtualenv verwenden müssen, können Sie die Anweisungen 'WSGIDaemonProcess' und' WSGIProcessGroup' verwenden, indem Sie die Option 'python-path' setzen. –
afrancais