Python 仅当从mod_wsgi运行时,来自Selenium firefox_binary.py的WebDriverException

Python 仅当从mod_wsgi运行时,来自Selenium firefox_binary.py的WebDriverException,python,selenium,mod-wsgi,wsgi,Python,Selenium,Mod Wsgi,Wsgi,我正在Ubuntu 11.04上运行Python 2.7、Virtualenv、Django 1.3、mod_wsgi和Apache应用程序。 包括psycopg2等在内的一切都与wsgi配合得很好,并且应用程序已经启动并运行。 唯一的问题是硒。仅当我在创建firefox驱动程序时从wsgi执行此操作时,才会出现此错误,如下所示: from selenium import webdriver wd = webdriver.Firefox() WebDriverException异常值:消息:“

我正在Ubuntu 11.04上运行Python 2.7、Virtualenv、Django 1.3、mod_wsgi和Apache应用程序。 包括psycopg2等在内的一切都与wsgi配合得很好,并且应用程序已经启动并运行。 唯一的问题是硒。仅当我在创建firefox驱动程序时从wsgi执行此操作时,才会出现此错误,如下所示:

from selenium import webdriver
wd = webdriver.Firefox()
WebDriverException异常值:消息:“无法加载配置文件。 配置文件目录:/tmp/tmp8h7MW8“

我的Selenium版本是2.5 Apache作为根进程启动,子进程作为名为app的用户启动

在没有wsgi的情况下,从同一个virtualenv执行上述代码就可以了

所以这让我觉得这在某种程度上是许可问题。。。所以我试了一下:

ls -l /tmp/tmp8h7MW8
>> drwxr-xr-x 3 app app 4096 2011-10-07 13:09 extensions
>> -rw-r--r-- 1 app app 2188 2011-10-07 13:09 user.js

如果您能为我指出正确的方向,我将不胜感激,因为我可能错误地配置了wsgi,Apache进程作为特殊用户运行。若临时目录真的由“app”所有,那个么Apache用户很可能无法对其进行写入


Apache作为什么用户运行?您是否使用守护程序模式并覆盖了它应该作为哪个用户运行?

因此我跟踪了firefx_binary.py,并发现在调用socket_u.connect(((“127.0.0.1”,self.profile.port))时,实际错误是“连接被拒绝”。 端口值每次都会更改(即:45807、44719、60565)

正如Graham所怀疑的,错误的发生取决于apache配置(apache运行用户和组)上的组设置。我和2个用户一起玩

$ groups app
app : app
$ groups nreeves
nreeves : nreeves adm dialout fax cdrom floppy tape dip video plugdev fuse
我尝试了3种模式,只有1种作品仍然让我困惑,希望有人能告诉我为什么

# this does't work...
User=nreeves
Group=adm

# this does't work either
User=app
Group=app

# this works
User=nreeves
Group=nreeves

以下是权限:
$ls-l drwxr-xr-x 4 app app 4096 2011-10-04 11:18 tmp$ps aux | grep apache2 root 5007 0.0 0 0.1 10280 4004?Ss 14:14 0:00/usr/sbin/apache2-k启动应用程序5104 0.0 0.0 10280 2284?S 14:16 0:00/usr/sbin/apache2-k启动应用程序5105 0.1 0.7 254368 24112?Sl 14:16 0:00/usr/sbin/apache2-k启动应用程序5106 0.1 0.7 254372 24124?Sl 14:16 0:00/usr/sbin/apache2-k start
我没有指定模式。所以我相信它是在守护进程模式下运行的。。这是否正确?Apache配置中的用户/组指令设置为什么?您是否在Apache/mod_wsgi config中使用WSGIDaemonProcess/WSGIProcessGroup指令?如果是,是否已将用户/组选项设置为WSGIDaemonProcess?Apache进程似乎以“app”的形式运行,但请通过查看配置来确认。Apache配置我设置为app:
User app Group adm
这是“app”用户组:`$groups app>>app:app adm dialout fax cdrom软盘磁带dip video plugdev fuse--我没有在mod_wsgi config中设置任何用户/组选项。这是我的.wsgi文件:>WSGIScriptAlias//home/app/myapp/apache/django.wsgi>选项索引如下Symlinks MultiViews Order Allow,Deny Allow from all>,因为它看起来不是权限,除非您使用的是SELinux并且它强加了一些奇怪的东西,然后检查您是否始终在应用程序中使用绝对路径来引用内容,而不是相对路径,因为Apache的当前工作目录可能是任何内容,通常是/而不是应用程序所在的位置。SELinux未安装。我检查了wsgi配置文件和vhost配置,就我所知,我没有使用相对路径。所有内容都从/home/app/…开始。。。我在selenium上发布了一期文章,看看他们是否能给我提供可以进一步研究的地方。