我正在尝试将Flask网站安装到NGINX上,但是在使Flask服务器联机时遇到问题。
我已经遵循this DigitalOcean教程,并且我也使用了多个SO问题,但没有任何帮助。
如果我运行uwsgi --socket 127.0.0.1:8080 --protocol=http --module wsgi --callable app
,
我可以获得的唯一有用的追溯是:
Traceback (most recent call last):
File "./wsgi.py", line 1, in <module>
from app import app
ImportError: cannot import name 'app'
unable to load app 0 (mountpoint='') (callable not found or import error)
我的目录结构如下:
Xerix/
__pycache__/
app/
__init.py__
static
templates
xerix.db
cert/
xerix_me.crt
flask/ (virtualenv)
wsgi.py
xerix.ini
如果我运行journalctl -u xerix
,我会得到:
Nov 29 17:43:18 xerix systemd[1]: Started uWSGI instance to serve xerix.
Nov 29 17:43:18 xerix systemd[1]: xerix.service: Main process exited, code=exited, status=203/EXEC
Nov 29 17:43:18 xerix systemd[1]: xerix.service: Failed with result 'exit-code'.
(这是最近的日志)
如何解决此问题,该怎么办?
任何帮助都将受到赞赏。谢谢!
答案 0 :(得分:0)
您的问题与nginx无关。您必须告诉uwsgi在哪里可以找到您的库和依赖项。在Xerix文件夹下创建一个具有以下内容的from abc import ABCMeta, abstractmethod
class AbsObj(metaclass=ABCMeta):
@abstractmethod
def foo(self):
'''Document this.'''
pass
@staticmethod
def create(stuff):
'''
All the user needs to know is that create returns an AbsObj.
The specific implementation shouldn't matter.
'''
if stuff:
return Obj1(stuff)
else:
return Obj2(stuff)
class Obj1(AbsObj):
def foo(self):
print('number 1')
class Obj2(AbsObj):
def foo(self):
print('number 2')
AbsObj.create(True).foo
AbsObj.create(False).foo
文件:
myapp.wsgi
保存并像这样运行uwsgi:
# myapp.wsgi
from app import app as application
您可能需要根据python版本来稍微调整路径。