importterror在Apache中执行wsgi脚本



我已经写了一个小的Flask web应用程序。我已经在我的本地机器上的Apache2 Ubuntu中配置了它,它可以在Apache下工作。

部署到远程服务器(Ubuntu/Apache2)时,wsgi脚本出现ImportError错误

但是,从命令行执行wsgi文件不会创建错误条件。下面是日志中的错误,然后手动执行wsgi脚本:

[wsgi:error] [pid 414495] [client 174.52.77.157:51364] importterror: No module named lakesidepy.app

root@localhost:/var/www/lakesidepy# ./lakesidepy.wsgi
root@localhost:/var/www/lakesidepy# 

这是wsgi文件:

#!/usr/bin/python3
import sys
sys.path.insert(0,"/var/www/")
from lakesidepy.app import app as application

这是apache配置:

<VirtualHost *:80>
ServerName lakesidepy
DocumentRoot /var/www/lakesidepy
HostNameLookups off
WSGIDaemonProcess lakesidepy user=www-data group=www-data threads=5
WSGIScriptAlias / /var/www/lakesidepy/lakesidepy.wsgi
</VirtualHost>

the lakesidepy dir:

total 44
drwxr-xr-x  5 duane duane  4096 May 22 03:32 .
drwxrwsr-x 13 duane duane  4096 May 22 03:05 ..
-rwxr-xr-x  1 duane duane  3993 May 20 00:52 app.py
-rwxr-xr-x  1 duane duane   107 May 22 03:32 lakesidepy.wsgi
-rw-r--r--  1 root  root  12288 May 19 01:11 .lakesidepy.wsgi.swp
drwxr-xr-x  2 duane duane  4096 May 22 03:31 __pycache__
drwxr-xr-x  2 duane duane  4096 May 18 23:36 static
drwxr-xr-x  2 duane duane  4096 May 18 23:36 templates
-rw-r--r--  1 duane duane   285 May 22 02:53 test_script.py
duane@localhost:/var/www/lakesidepy$ 

app.py:

from flask import Flask
.
.
.
app = Flask(__name__)
@app.route("/")
def input():
return render_template('input.html')
...

我找到问题了。

本地的wsgi模块已正确配置为Python 3。
服务器上的wsgi模块已配置为Python 2。

通过替换wsgi模块修复了这个问题:

sudo apt-get install libapache2-mod-wsgi-py3

在app.py文件中

if __name__ == '__main__':
app.run(host="localhost", port=3000, debug=True)

和wsgi文件

if __name__ == "__main__":
app.run(port=3000)

相关内容

最新更新