Как настроить apache, работающий на отдельной системе OL7, для представления проекта trac wiki
Мне нужно как-то настроить 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 ответ
Я решил эту проблему. Как я и ожидал, у меня возникла проблема в моем определении 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 (для приложений).