在 Ubuntu 上启动 uWSGI 时,opendir(): 没有这样的文件或目录

在 Ubuntu 上启动 uWSGI 时,opendir(): 没有这样的文件或目录

我正在尝试在 Ubuntu 12.04 上启动 uWSGI。

$ sudo service uwsgi start或 时# uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/file.ini,我收到以下错误:

opendir(): No such file or directory [uwsgi.c line 471]

第一次调用将此错误记录到 ,/var/log/uwsgi第二次调用将此错误输出到stdout

怎么了?

答案1

尝试strace该过程:

# strace -f -o ~/uwsgi.trace uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/file.ini揭示了就在该过程失败退出之前,打开/usr/lib/uwsgi/plugins失败:

openat(AT_FDCWD, "/usr/lib/uwsgi/plugins", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

因此,创建缺少的目录:# mkdir -p /usr/lib/uwsgi/plugins然后尝试再次启动 uWSGI。

也就是说,如果你缺少该/usr/lib/uwsgi/plugins目录,你的 uWSGI 安装很可能无法处理请求。例如,要处理 Python 请求,你需要将# apt-get install uwsgi-plugin-python其添加plugins = python到你的应用配置中。

答案2

即使没有安装 python 插件,uwsgi 也可以很好地适用于 Django 应用程序。

mkdir -p /usr/lib/uwsgi/plugins

是解决 uwsgi 启动代码奇怪行为的有效方法。

最令人困惑的是,如果您在命令行和守护进程模式下明确指定配置,uwsgi 就会完美启动。

例如你有:

  • /etc/uwsgi/apps-available/uwsgi.ini
  • 符号链接至/etc/uwsgi/apps-enabled

然后 make /etc/init.d/uwsgi start uwsgi.ini- 启动没问题! /etc/init.d/uwsgi start- [失败] 没有插件目录存在

希望 uwsgi 开发人员能够修复该问题,或者至少记录适当的错误消息

相关内容