Não é possível servir o wiki do gollum com o Apache

1

EDITAR : Finalmente resolvi o problema e publiquei a solução abaixo.

Eu tenho um wiki gollum servido por um servidor sinatra em uma porta local 4567. Eu quero torná-lo acessível do mundo externo em www.mysite.com/wiki

Eu tenho o servidor appache-2.2 rodando no Ubuntu 12.04 com mod_proxy e mod_proxy_http ativado.

Meu vhosts.conf contém:

    NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/mysite
    ServerName www.mysite.pl

    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
    Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /wiki/ http://localhost:4567/
    ProxyPassReverse /wiki/  http://localhost:4567/
    ProxyHTMLURLMap http://localhost:4567 /wiki

    <Location /wiki>
        Order allow,deny
        Allow from all
        RequestHeader       unset   Accept-Encoding
    SetOutputFilter     proxy-html
    ProxyPass       http://localhost:4567
    ProxyPassReverse    /wiki
    ProxyHTMLURLMap     / /wiki/
    ProxyHTMLURLMap     /wiki /wiki
    ProxyHTMLURLMap     http://localhost:4567 /wiki
    </Location>

        <Directory / >
    AllowOverride AuthConfig FileInfo Indexes Limit Options
            Order allow,deny
            allow from all

        </Directory>

    LogLevel debug

       ScriptAlias /cgi-bin/ /var/www/mysite/cgi-bin/   
       <Directory /var/www/mysite/cgi-bin/>
           AllowOverride None
           Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
           Order allow,deny
           Allow from all
      </Directory>

</VirtualHost>


<VirtualHost *:80>
    DocumentRoot /srv/src.git
    ServerName git.mysite.com

    DAVLockDB /var/lock/apache2/davlockDB

    <Directory /srv/src.git >
       DAV On
            Options Indexes MultiViews
            IndexOptions FancyIndexing                
            Order allow,deny
            Allow from all

       AuthType Basic
       AuthName "git repository"
   AuthUserFile /etc/apache2/passwd
       Require valid-user
    </Directory>

</VirtualHost>

Os registros do Sinatra indicam que, de fato, o site localhost: 4567 é acessado quando busco www.mysite.com/wiki. Mas o apache retorna um erro. Os logs do Apache dizem:

[Sun Nov 09 02:04:01 2014] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //localhost:4567
[Sun Nov 09 02:04:01 2014] [debug] proxy_util.c(1506): [client 93.105.202.224] proxy:     http: found worker http://localhost:4567 for http://localhost:4567/
[Sun Nov 09 02:04:01 2014] [debug] mod_proxy.c(1020): Running scheme http handler (attempt 0)
[Sun Nov 09 02:04:01 2014] [debug] mod_proxy_http.c(1973): proxy: HTTP: serving URL http://localhost:4567/
[Sun Nov 09 02:04:01 2014] [debug] proxy_util.c(2011): proxy: HTTP: has acquired connection for (localhost)
[Sun Nov 09 02:04:01 2014] [debug] proxy_util.c(2067): proxy: connecting http://localhost:4567/ to localhost:4567
[Sun Nov 09 02:04:01 2014] [debug] proxy_util.c(2193): proxy: connected / to localhost:4567
[Sun Nov 09 02:04:01 2014] [debug] proxy_util.c(2444): proxy: HTTP: fam 2 socket created to connect to localhost
[Sun Nov 09 02:04:01 2014] [debug] proxy_util.c(2576): proxy: HTTP: connection complete to 127.0.0.1:4567 (localhost)
[Sun Nov 09 02:04:01 2014] [debug] mod_proxy_http.c(1743): proxy: start body send
[Sun Nov 09 02:04:01 2014] [debug] mod_proxy_http.c(1847): proxy: end body send
[Sun Nov 09 02:04:01 2014] [debug] proxy_util.c(2029): proxy: HTTP: has released connection for (localhost)
[Sun Nov 09 02:04:01 2014] [error] [client 93.105.202.224] File does not exist: /var/www/Home

O nome da localização "Home" foi retornado corretamente pelo gollum-wiki (como sua página principal padrão) Alguém pode me explicar tal comportamento?

RESPOSTA : ajudou a alterar todas as ocorrências de http://localhost:4567 em http://localhost:4567/wiki . Eu tive uma idéia para tentar quando eu logar no meu servidor http e usei lynx para acessar 127.0.0.1:4567 . Foi pensando por alguns segundos e depois retornando 127.0.0.1:4567/wiki/Home

    
por tnorgd 09.11.2014 / 02:12

1 resposta

2

Parece:

  • Seu visitante acessa o link
  • Isso é passado para a instância do gollum em execução no localhost: 4567.
  • O wiki do gollum vê que você está na página inicial e redireciona para / Home
  • Isso faz com que o navegador visite o link
    • Que está faltando e fora do prefixo / wiki /, portanto, ele mostra um 404.

A solução é garantir que /wiki seja prefixado nas páginas de gollum. Inicie assim:

$ gollum --host 127.0.0.1 --port 4567 --base-path wiki

PS. Você também não precisa especificar "ProxyHTMLURLMap" em sua configuração do Apache; o ProxyPass e ProxyPassReverse são suficientes.

    
por 09.11.2014 / 15:33