0

我正在尝试在 apache2 Web 服务器上运行 apache Bloodhound 跟踪器。我用的是0.7版本的血猎犬。我关注了网站https://issues.apache.org/bloodhound/wiki/BloodhoundInstall

Blood hound 在端口 8000 上运行。但问题是我无法在端口 80 上运行 Blood hound,所以如果我访问 Bloodhound.mydomain.com,我应该得到 Bloodhound。我已经提到了网站 /etc/apache2/sites-available/bloodhound 中指定的我的 apache2 网络服务器设置文件

<VirtualHost *:8080>
   WSGIDaemonProcess bh_tracker user=ubuntu python-path=/home/ubuntu/bloodhound-0.7/installer/bloodhound/lib/python2.7/site-packages
   WSGIScriptAlias /bloodhound /home/ubuntu/bloodhound-0.7/installer/bloodhound/site/cgi-bin/trac.wsgi
   <Directory /home/ubuntu/bloodhound-0.7/installer/bloodhound/site/cgi-bin>
     WSGIProcessGroup bh_tracker
     WSGIApplicationGroup %{GLOBAL}
     Order deny,allow
     Allow from all
   </Directory>
   <LocationMatch "/bloodhound/[^/]+/login">
     AuthType Digest
     AuthName "ubuntu"
     AuthDigestDomain /bloodhound
     AuthUserFile /home/ubuntu/bloodhound-0.7/installer/bloodhound/environments/main/bloodhound.htdigest
     Require valid-user
   </LocationMatch>
 </VirtualHost>

添加上述文件后,它没有在端口 8000 和 8080 上运行。

我如何让它运行。请帮助我。顺便说一句,我使用的是 ubuntu ec2 实例。

4

2 回答 2

6

天哪,我想我已经想通了!几天来,我一直被困在我自己的 Bloodhound 端口配置上的位置。

n3storm是正确的:设置 mod_wsgi 的全部魔力在于您不再需要手动启动 Bloodhound

 tracd port=8080 /ridiculously/long/path/to/bloodhound/installer/bloodhound/environments/main

命令。相反,mod_wsgi 会在您的网络浏览器请求时为您运行所有 python http://[host]:8080/bloodhound,这意味着您的 Bloodhound 服务器在它打开的那一刻就可以提供服务。

痛苦在于涉及多少互锁的配置文件,以及有多少微小的事情会破坏整个过程。我真的不了解python,我只是几乎不了解Apache,而且我有70%的信心我不小心打开了一些我不了解的安全漏洞,但这是我对mod_wsgi + Apache + Bloodhound 多米诺链的理解。路径适用于我在 Ubuntu 14.04.1 LTS 上的 Apache 2.4 安装:

1.你加载http://[host]:8080/bloodhound

为此,我需要编辑 /etc/apache2/ports.conf 以便 Apache 实际上正在侦听端口 8080。所以添加该行

Listen 8080

到 /etc/apache2/ports.conf

现在访问http://[host]:8080/bloodhound至少应该向您展示一些来自 Apache 的东西。对我来说,这是一个 HTTP 错误 403:禁止页面,接下来是我针对错误 403 蓝调的家庭疗法!

2. Apache触发bloodhound.conf

完整路径:/etc/apache2/sites-available/bloodhound.conf

从技术上讲,Apache 正在 /etc/apache2/ sites- enabled / 中寻找匹配的 VirtualHost 规则,但您通过在 /sites-availabe/ 中创建/编辑 .conf 文件然后使用 Apache 命令激活它们来设置它

a2ensite [sitename].conf

所以。显然,Apache 2.4更改了 .conf 文件的访问控制语法。所以,为了停止错误 403ing,我改变了

Order deny,allow
Allow from all

在 /etc/apache2/sites-available/bloodhound.conf 到

Require all granted

然后你应该再次重启 Apache

sudo apachectl graceful

或者

sudo /etc/init.d/apache2 graceful

或者可能

sudo service apache2 restart

我不确定,它们似乎都同样工作,但我认为优雅的那些很好,因为它们不会关闭您的服务器或类似的重要东西。

3. Bloodhound.conf 触发 trac.wsgi

完整路径:/ridiculously/long/path/to/bloodhound/installer/bloodhound/site/cgi-bin/trac.wsgi

在弄清楚了很多其他事情之后,我意识到,最后,Bloodhound 生成的默认脚本对我来说很好用:

import os

def application(environ, start_request):
    if not 'trac.env_parent_dir' in environ:
        environ.setdefault('trac.env_path', '/usr/local/bloodhound/installer/bloodhound/environments/main')
    if 'PYTHON_EGG_CACHE' in environ:
        os.environ['PYTHON_EGG_CACHE'] = environ['PYTHON_EGG_CACHE']
    elif 'trac.env_path' in environ:
        os.environ['PYTHON_EGG_CACHE'] = \
            os.path.join(environ['trac.env_path'], '.egg-cache')
    elif 'trac.env_parent_dir' in environ:
        os.environ['PYTHON_EGG_CACHE'] = \
            os.path.join(environ['trac.env_parent_dir'], '.egg-cache')
    from trac.web.main import dispatch_request
    return dispatch_request(environ, start_request)

4. trac.wsgi 为 Bloodhound 提供 HTML 文件

互联网是不是很神奇?

于 2014-07-31T21:52:48.470 回答
1

通过使用 Apache mod_wsgi,您不再需要 Bloodhound 分开运行。mod_wsgi 是什么让 Bloodhound 运行。在这种情况下,您应该使用标准 apache 端口。

另外,我想你应该在 Virtualhost 使用 ServerName 指令(或者你只服务一个主机?)

于 2014-05-08T09:44:26.517 回答