2013-08-12 5 views
6

Я пытаюсь настроить Герритом с проверкой подлинности HTTP baisc, мой HTTPD конфигурации являетсянастроить Геррит с проверкой подлинности HTTP

<VirtualHost *:8081> 
    ServerName localhost 

    ProxyRequests Off 
    ProxyVia Off 
    ProxyPreserveHost On 

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

<Location "/login/"> 
AuthType Basic 
AuthName "Gerrit Code Review" 
AuthBasicProvider file 
AuthUserFile /usr/local/apache/passwd/passwords 
Require valid-user 
</Location> 
ProxyPass/http://localhost:8081/ 
</VirtualHost> 

и мой gerrit.config является

[gerrit] 
     basePath = git 
     canonicalWebUrl = http://localhost:8081/ 
[database] 
     type = mysql 
     hostname = localhost 
     database = reviewdb 
     username = gerrit 
[auth] 
     type = HTTP 
[sendemail] 
     smtpServer = localhost 
     smtpUser = gerrit 
[container] 
     user = gerrit 
     javaHome = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre 
[sshd] 
     listenAddress = *:29418 
[httpd] 
     listenUrl = proxy-http://*:8081/ 
[cache] 
     directory = cache 

я не уверен, где я я буду неправильно, но доступ к http://x.x.x.x:8081 говорит

The HTTP server did not provide the username in the Authorization header when it forwarded the request to Gerrit Code Review. 

If the HTTP server is Apache HTTPd, check the proxy configuration includes an authorization directive with the proper location, ensuring it ends with '/': 

мой Геррит работает на inbuild причал стра tainer и моя ОС - centos 6.4

где я иду не так.?

ответ

5

нормально, На самом деле я создавал виртуальный хост на порту 8081 и мой причал (который приходит наряду с Герритом) также слушать тот же порт, моя конфигурация осталась почти такие же, но эти дополнительные шаги: -

  • Добавить новый порт к вашим SELinux (который имеет несколько основных портов, определенных изначально) или вы может отключить его, если безопасность не является проблемой.
  • Телль HTTPD слушать этот порт (в моем случае я добавил 8082), поэтому добавьте строку listen <port-no> в файле http conf
  • Измените виртуальный хост для вашего номера порта теперь ваш VirtualHost установлен на порт 8082

    <VirtualHost *:8082> 
        ServerName localhost 
    
        ProxyRequests Off 
        ProxyVia Off 
        ProxyPreserveHost On 
    
        <Proxy *> 
          Order deny,allow 
          Allow from all 
        </Proxy> 
        <Location "/login/"> 
        AuthType Basic 
        AuthName "Gerrit Code Review" 
        AuthBasicProvider file 
        AuthUserFile /usr/local/apache/passwd/passwords 
    Require valid-user 
    </Location> 
    ProxyPass/http://localhost:8081/ 
    

  • изменение канонического URL к порту 8082 (так, что он перенаправляет его на тот же порт)

  • , наконец, перезапустите apache и gerrit (обратитесь к вашему хосту: 8082).

наслаждаться. !!

+0

Спасибо конфигурация работала для меня до тех пор, проверка идет. Тем не менее, я не пытаюсь получить ошибки типа 'Authentication failed for ...' –

+0

Если вы переходите на HTTP из OpenId, Gerrit не будет создавать [account_external_ids] (https://review.openstack.org/Documentation /config-sso.html#_database_schema_2) автоматически, если имя пользователя из HTTP совпадает с именем, которое было использовано с OpenID. После аутентификации он отобразит короткое сообщение «Запрещено». Чтобы исправить это, вставьте строку, соответствующую вашему пользователю, в таблицу 'account_external_ids' с' external_id', равную 'gerrit: username'. – fracz

3

Gerrit ожидает, что аутентификация будет предоставлена. Он не позволяет анонимный доступ при использовании HTTP-аутентификации.

Для этой работы необходимо выполнить аутентификацию в корне и местоположения блок должен выглядеть следующим образом:

<Location "/"> 
    AuthType Basic 
    AuthName "Gerrit Code Review" 
    AuthBasicProvider file 
    AuthUserFile /usr/local/apache/passwd/passwords 
    Require valid-user 
</Location> 
1

Есть несколько проблем, с конфигурацией:

  1. Apache и попытаться слушать тот же порт 8081, это не представляется возможным
  2. Вы ProxyPass не лучший, это создаст некоторые небольшие проблемы ,Эти вопросы являются:
    1. Невозможно создать названия проектов с косой черты в нем, как: главный/подчиненный
    2. При просмотре файлов галочка не будет появляться рядом с файлом, чтобы показать, как обзор, опять же это связано в прямой косой черты не правильно обработанном
  3. Это является наиболее распространенным использовать вложенную папку, а не корень, я думаю, что лучше работает с обратным прокси

Это моя рекомендуемая конфигурация для вас:

<VirtualHost *:80> 
     ServerName localhost 

     ProxyRequests Off 
     ProxyVia Off 
     ProxyPreserveHost On 

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

     <Location "/"> 
      AuthType Basic 
      AuthName "Gerrit Code Review" 
      AuthBasicProvider file 
      AuthUserFile /usr/local/apache/passwd/passwords 
      Require valid-user 
     </Location> 

     AllowEncodedSlashes On 
     ProxyPass /r http://localhost:8081/r nocanon 
    </VirtualHost> 

Ofcourse не забудьте внести изменения в gerrit.config, canonicalWebUrl - это то, что вы вводите в адресной строке, а не то, что apache использует для поиска gerrit.

[gerrit] 
    basePath = git 
    canonicalWebUrl = http://localhost:8082/r 

Чтобы предотвратить страницу апач по умолчанию показ добавить index.php в корневой папке, которая будет перенаправлять браузер на вспомогательном пути:

<?php 
    header('Location: http://localhost:8082/r/'); 
?> 
+0

Я настроил в соответствии с вышеизложенным, но я должен установить его только на порт 8082, потому что у меня есть еще одна служба, размещенная на порту 80, любой, когда я иду на localhost: 8082 показывает тестовую страницу apache, где я я ошибаюсь? – shubham

+0

Вы использовали подпапку? Существует разница между http: // localhost: 8082/r и http: // localhost: 8082/r /, вторая будет переадресовать, первая, я не думаю. В моем случае я фактически добавил файл index.php в корневой каталог (/var/www/index.php), который перенаправляет на дополнительный путь, я добавил его выше. – uncletall

+0

Почему мы используем «/ r /». Я имею в виду, что в моей первоначальной конфигурации я использовал/login /, потому что gerrit требует заголовка авторизации на http: // mygerrit: 8081/login /, так или иначе, меняя его на/r/didnot решить проблему. – shubham

Смежные вопросы