Мне нужно как-то настроить apache для представления контента из tracd, работающего на отдельном сервере.

Я использовал следующее определение конфигурации:

# LB VIP1 - TRAC definition <VirtualHost "IP":8090>
#        ServerName tracwiki.com
        ServerAlias "IP of loadbalancer"
#        ServerPath "/project/"
DocumentRoot "/pkg/moip/data/apache/docs"   <Directory "/pkg/moip/data/apache/docs">
    AllowOverride None
    Options None
    Require method GET HEAD POST   
</Directory>   RewriteRule ^/project_name/(.*) http://"IP of Application server":8000/project/$1 [L,P]
    LogLevel warn core:info
    ErrorLog /pkg/moip/logs/apache/error_TRAC.log
    CustomLog /pkg/moip/logs/apache/access_TRAC.log common
    Redirect /project          https://tracwiki.com/project
#    ProxyPreserveHost On
    ProxyPass /project         http://"IP of Application server":8000/project
    ProxyPassReverse /project  http://"IP of Application server":8000/project  
    Include /pkg/moip/apps/apache/conf/extra/limits.conf </VirtualHost>* 

К сожалению, я все еще получаю то же сообщение "контент не найден". Межсетевой экран между серверами открывается через порт 8000 (в направлении веб-сервера к серверу приложений). Tracdeamon хорошо работает на сервере приложений.

Package Version: 
Trac 1.2.3,
Genshi 0.7.1 (with speedups),
pysqlite 2.8.3,
Python 2.7.5 (default, Jul 3 2018, 06:28:28) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28.0.1)],
setuptools 0.9.8,
SQLite 3.7.17,
Subversion 1.7.14 (r1542130)  

Я также установил "flup" для использования протоколов ajp вместо http, но, к сожалению, мне не удалось правильно запустить шлюз:

[trac-scripts]$ Traceback (most recent call last):   File "/home/lcuser/trac-scripts/ajp_to_wsgi_gateway", line 36, in <module>
        from flup.server.ajp import WSGIServer   File "build/bdist.linux-x86_64/egg/flup/server/ajp.py", line 91, in <module>   File "build/bdist.linux-x86_64/egg/flup/server/ajp_base.py", line 42, in <module> ImportError: No module named _thread

Буду признателен за любую помощь.

1 ответ1

0

Я решил эту проблему. Как я и ожидал, у меня возникла проблема в моем определении VirtualHost. Мне нужно было только добавить конкретное "правило перезаписи" в моё существующее определение:

RewriteRule ^/project_name(.*) http://"IP of Application server1":8000/project_name$1 [L,P]

Правильно должно быть так:

<VirtualHost "IP":8090>
    ServerName tracwiki.com
    ServerAlias "IP of loadbalancer"

DocumentRoot "/pkg/moip/data/apache/docs"   
<Directory "/pkg/moip/data/apache/docs">
    AllowOverride None
    Options None
    Require method GET HEAD POST   
</Directory>

#Prevent TRACK/TRACE requests   
    RewriteEngine on   
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)   
    RewriteRule .* - [F]
    RewriteRule [^a-zA-Z0-9|;|/|\ |\?|:|Q|&|=|\+|\$|,|\-|_|\.|\!|~|\*|\(|\)] - [F]      
    RewriteRule ^/project_name(.*) http://"IP of Application server1":8000/project_name$1 [L,P]

LogLevel warn core:info   ErrorLog /pkg/moip/logs/apache/error.log   
CustomLog /pkg/moip/logs/apache/access.log common

<IfModule mod_proxy_balancer.c>
    Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED  
<Proxy balancer://cluster>
    BalancerMember http://"IP of Application server2":21180 route=App_1 keepalive=on
    BalancerMember http://"IP of Application server3":21180 route=App_2 keepalive=on

    ProxySet stickysession=ROUTEID lbmethod=byrequests  
</Proxy>  
    ProxyPass / balancer://cluster/  
    ProxyPassReverse / balancer://cluster/ 
</IfModule>
Include /pkg/moip/pepsig/apps/apache/conf/extra/limits.conf </VirtualHost>*

"Server1" - используется исключительно для целей TRAC WIKI

"Сервер2" + "Сервер3" - используется только для экземпляров JBOSS (для приложений).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .