我试图在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相应的错误信息