你好亲爱的SO用户,欢迎来到我的第一个SO问题,
我目前正在使用Apache和mod_wsgi
来部署一个Flask应用程序。 所有东西都用Python 3.4编码,所以我不得不遵循几个教程 / 问题来获得mod_wsgi
与我的Python版本(因为apt-get install获得了与Python 2.7兼容的3.4版本,你必须在获得它之后编译它在一个Python 3 virtualenv点是它的4.x版本)。
Apache服务器error.log显示了Apache/2.4.10 (Debian) mod_wsgi/4.4.13 Python/3.4.2 configured
所以这似乎工作正常。
我的问题在于在.wsgi文件中input应用程序。 像这样的教程通常from FlaskApp import app as application
考虑他们的文件树,并且这工作按预期用最less的应用程序,我尝试没有任何问题。
我的应用程序稍微复杂一些,使用manage.py文件在本地主机上运行,一旦尝试在Apache上部署,这可能是问题的一部分。
从我发现的无数SO问题和其他网站的问题中,最有可能来自:
sys.path
问题(如果顶级文件夹不在sys.path
,Python 3看不到) 主要是出于无奈,我最终在/ var / www /使用了chmod 744 LongAppName
,导致drwxrwxr-x权限。 我的文件树是以下内容:
drwxrwxr-x LongAppName drwxr-xr-x LongAppName drwxr--r-- ShorterAppName -rw-r--r-- app.py -rw-r--r-- commands.py -rw-r--r-- __init__.py drwxr--r-- static drwxr--r-- templates <irrelevant files> -rw-r--r-- __init__.py -rw-r--r-- manage.py drwxr-xr-x venv <more irrelevent files> -rwxr-xr-x longappname.wsgi
所以对于第一个可能的修复,权限对我来说似乎很好。 关于第二个,我在.wsgi文件中打印sys.path
,并输出['/var/www/LongAppName', <among others>]
,这表明顶级文件夹在sys.path
。
我的longappname.wsgi如下所示:
#!/var/www/LongAppName/LongAppName/venv/bin/python3 import os, sys, logging #Doing some prints to check if we're in the venv and such. PROJECT_DIR = '/var/www/LongAppName/' if PROJECT_DIR not in sys.path: sys.path.insert(0, PROJECT_DIR) def execfile(filename): globals = dict( __file__ = filename ) exec( open(filename).read(), globals ) activate_this = os.path.join( PROJECT_DIR+'LongAppName/', 'venv/bin', 'activate_this.py' ) execfile( ativate_this ) #Printing sys.path and sys.executable here logging.basicConfig(stream=sys.stderr) from LongAppName.ShorterAppName.app import manager as application #The previous line changed a lot, I tried importing app, changing the path but this one was the first one I wrote.
Python似乎无法findLongAppName.ShorterAppName.app,我不知道为什么。
从我为了testing不同的替代scheme而做的尝试次数来看,我已经开始忽略什么是好的,什么可能会导致问题,所以我需要你的帮助来解决这个问题。
提前致谢!
现在有些目录权限可疑。 你有:
drwxr--r-- ShorterAppName
更好地使用:
drwxr-xr-x ShorterAppName
静态和模板相同。
我们真正需要看到的是具有从Apache错误日志回溯的确切Python异常详细信息。