2017-01-19 3 views
0

Ausführen von Anaconda Python nicht die globale Python, die mit CentOS 7 kommt, habe ich Flask lokal installiert und getestet und es funktioniert gut.Apache + Flask nicht wsgi-Datei erkennen

[[email protected] FlaskApp]$ python __init__.py 
[[email protected] FlaskApp]$ curl localhost:5000 
Hello, I love Flask! 

Wenn ich versuche es unter Apache zu laufen, wie folgt, erhalte ich den Fehler am Ende. Ich denke, das Problem ist, dass Apache versucht, den globalen Python auszuführen und nicht Anaconda python, wo ich Flask installiert habe. Wenn dies der Fall ist, möchte ich nicht mit dem Pfad umgehen, den das System für das globale Python verwendet, da dies zu Problemen führen kann. Nicht sicher, wie das System in diesem Fall zu sagen, Anaconda Python zu verwenden:

[[email protected] FlaskApp]$ which python 
~/anaconda2/bin/python 
[[email protected] FlaskApp]$ 

Meine Anwendung ist wie folgt:

Datei: hello.py

[[email protected] FlaskApp]$ more hello.py 
import sys 
import logging 
sys.path.insert(0,"/var/www/FlaskApp/") 

from FlaskApp import app as application 
[[email protected] FlaskApp]$ 

Datei: __init__.py

[[email protected] FlaskApp]$ more __init__.py 
from flask import Flask 
app = Flask(__name__) 
@app.route("/") 
def hello(): 
    return "Hello, I love Flask!" 
if __name__ == "__main__": 
    app.run() 
[[email protected] FlaskApp]$ 

Meine Verzeichnisstruktur ist wie folgt.

[[email protected] FlaskApp]$ pwd 
/var/www/FlaskApp 
[[email protected] FlaskApp]$ ls -la 
total 24 
drwxr-xr-x 3 apache apache 4096 Jan 19 03:21 . 
drwxr-xr-x 6 root root 4096 Jan 19 02:00 .. 
drwxr-xr-x 4 apache apache 4096 Jan 19 02:36 FlaskApp 
-rwxr-xr-x 1 apache apache 164 Jan 19 02:32 hello.conf 
-rwxr-xr-x 1 apache apache 107 Jan 19 03:21 hello.py 
-rwxr-xr-x 1 apache apache 164 Jan 19 02:25 hello.wsgi 
[[email protected] FlaskApp]$ cd FlaskApp/ 
[[email protected] FlaskApp]$ ls -la 
total 24 
drwxr-xr-x 4 apache apache 4096 Jan 19 02:36 . 
drwxr-xr-x 3 apache apache 4096 Jan 19 03:21 .. 
-rw-r--r-- 1 apache apache 150 Jan 19 02:35 __init__.py 
-rw-r--r-- 1 apache apache 449 Jan 19 02:36 __init__.pyc 
drwxr-xr-x 2 apache apache 4096 Jan 19 02:01 static 
drwxr-xr-x 2 apache apache 4096 Jan 19 02:01 templates 
[[email protected] FlaskApp]$ 

Meine Apache Conf-Datei

<VirtualHost *:80> 
    ServerName www.mywebsite.com 
    ServerAlias mywebsite-ed.com 
    ServerAdmin [email protected] 
    WSGIScriptAlias//var/www/FlaskApp/hello.py 
    <Directory /var/www/FlaskApp/FlaskApp/> 
     Require all granted 
    </Directory> 
    Alias /static /var/www/FlaskApp/FlaskApp/static 
    <Directory /var/www/FlaskApp/FlaskApp/static/> 
     Require all granted 
    </Directory> 
    ErrorLog /var/log/httpd/error_log 
    LogLevel warn 
    CustomLog /var/log/httpd/access.log combined 
</VirtualHost> 

ich diesen Fehler:

[[email protected] FlaskApp]$ sudo tail -f /var/log/httpd/error_log 
[sudo] password for idf: 
[Thu Jan 19 03:23:46.918092 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062] mod_wsgi (pid=4305): Target WSGI script '/var/www/FlaskApp/hello.py' cannot be loaded as Python module. 
[Thu Jan 19 03:23:46.918161 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062] mod_wsgi (pid=4305): Exception occurred processing WSGI script '/var/www/FlaskApp/hello.py'. 
[Thu Jan 19 03:23:46.918225 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062] Traceback (most recent call last): 
[Thu Jan 19 03:23:46.918291 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062] File "/var/www/FlaskApp/hello.py", line 5, in <module> 
[Thu Jan 19 03:23:46.918546 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062]  from FlaskApp import app as application 
[Thu Jan 19 03:23:46.918595 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062] File "/var/www/FlaskApp/FlaskApp/__init__.py", line 1, in <module> 
[Thu Jan 19 03:23:46.918671 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062]  from flask import Flask 
[Thu Jan 19 03:23:46.918734 2017] [:error] [pid 4305] [client xx.xxx.xx.xxx:54062] ImportError: No module named flask 

Antwort

0

Uninstall System mod_wsgi Paket und dann mod_wsgi aus dem Quellcode gegen Anaconda Python kompilieren. Schlagen Sie Methode bei gezeigt:

wodurch Sie pip install es in den Anaconda Python-Umgebung und Verwendung:

mod_wsgi-express module-config 

zur Ausgabe der Zeilen, die Sie sollten zu Ihrer Apache-Konfiguration hinzufügen Laden Sie das Modul mod_wsgi und stellen Sie sicher, dass die Anaconda Python-Distribution korrekt gefunden wurde.

Verwandte Themen