我在尝试从 UWSGI 运行模块时遇到了困难。这是我的部署代码的一部分:
# ENVIRONMENT
/usr/bin/pip install virtualenv
mkdir -p /srv/www/test
/usr/local/bin/virtualenv /srv/www/test/venv
source /srv/www/test/venv/bin/activate
/srv/www/test/venv/bin/pip install --force-reinstall -e [email protected]:xyz/project.git#egg=project
这是模块根目录中 run.py 的代码
from project import app
def main():
"""docstring for main"""
app.run(debug=True)
if __name__ == '__main__':
main()
这是我尝试用来运行它的命令:
/usr/local/bin/uwsgi --virtualenv $ENV --module 项目 --chdir $APP --master
这是我运行此命令后收到的消息:
uWSGI 以 root 身份运行,你可以使用 --uid/--gid/--chroot 选项
* 警告:你正在以 root 身份运行 uWSGI !!!(使用 --uid 标志)
警告:你正在运行没有主进程管理器的 uWSGI * 您的进程数限制为 7890 您的内存页面大小为 4096 字节
检测到的最大文件描述符数量:1024
锁定引擎:pthread 健壮互斥体
thunder 锁定:已禁用(您可以使用 --thunder-lock 启用它)
缺少 -s/--socket 选项并且 stdin 不是套接字。
错误是它似乎无法正确运行或找到我的模块。有人能告诉我如何启动 UWSGI 才能找到我的应用程序吗?
答案1
您可以尝试使用 --module 而不是 -w(效果相同)。否则,只需确保名称正确即可;即传递 wsgi_module_name 或 wsgi_module_name:application_callable_name
不过,您的错误消息实际上并没有表明存在与此相关的问题。还有其他您没有引用的消息吗?
答案2
您只需将 sock 文件添加到命令行即可:
/usr/local/bin/uwsgi --virtualenv $ENV --module project --chdir $APP --master -s myapp.sock