在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]

第一个调用将此错误logging到/var/log/uwsgi ,第二个将此错误输出到stdout

怎么了?

尝试着手这个过程:

# 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)

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

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

即使没有安装python插件,uwsgi也可以正常使用Django应用程序。

 mkdir -p /usr/lib/uwsgi/plugins 

是uwsgi启动代码怪异行为的一个充分的解决方法。

最令人困惑的是,如果在命令行和守护进程模式下明确指定configuration,则uwsgi可以完美启动。

比如你有:

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

然后使/etc/init.d/uwsgi start uwsgi.ini/etc/init.d/uwsgi start uwsgi.ini没有问题! /etc/init.d/uwsgi start – [失败]不存在插件目录

希望uwsgi开发者能够修复这个问题,或者至less会logging相应的错误信息