在apache2 web服务器上运行apache bloodhound

Jee*_*gre 0 amazon-web-services ubuntu-12.04 apache-bloodhound

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

血猎犬正在8000口上运行.但问题是我无法在80号口上运行血猎犬,所以如果我击中bloodhound.mydomain.com,我应该得到猎犬.我已经提到了我在网站/ etc/apache2/sites-available/bloodhound中指定的apache2 webserver设置文件

<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>
Run Code Online (Sandbox Code Playgroud)

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

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

Jac*_*ord 5

我觉得我已经弄明白了!我已经被困在你自己的Bloodhound端口配置的地方好几天了.

n3storm是正确的:设置mod_wsgi的全部魔力是你不再需要手动启动猎犬了

 tracd port=8080 /ridiculously/long/path/to/bloodhound/installer/bloodhound/environments/main
Run Code Online (Sandbox Code Playgroud)

命令.相反,mod_wsgi会在您的Web浏览器请求http://[host]:8080/bloodhound时为您运行所有python ,这意味着您的Bloodhound服务器已准备好在其打开时提供服务.

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

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

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

Listen 8080
Run Code Online (Sandbox Code Playgroud)

到/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-availability /中创建/编辑.conf文件来设置它,然后使用Apache命令激活它们

a2ensite [sitename].conf
Run Code Online (Sandbox Code Playgroud)

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

Order deny,allow
Allow from all
Run Code Online (Sandbox Code Playgroud)

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

Require all granted
Run Code Online (Sandbox Code Playgroud)

然后你应该再次启动Apache

sudo apachectl graceful
Run Code Online (Sandbox Code Playgroud)

要么

sudo /etc/init.d/apache2 graceful
Run Code Online (Sandbox Code Playgroud)

或者可能

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

我不确定,它们似乎都是平等的,但我认为优雅的那些是好的,因为它们不会关闭你的服务器或类似的东西.

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)
Run Code Online (Sandbox Code Playgroud)

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

互联网不是很神奇吗?