Как мне исправить проблему с сервером Ubuntu 11.10 и gitweb?

Вопрос или проблема

Привет и извините за плохой англійский сначала :(…

У меня есть сервер ubuntu 11.10, и я хочу сделать сервер gitweb. Я обратился к этому сайту – http://www.snowfrog.net/2011/08/02/setting-up-gitweb-on-your-ubuntu-workstation/.

Итак, я попытался установить gitweb и перезапустить сервер apache.

(как учетная запись root)
$ apt-get install gitweb
$ service apache2 restart

Я попытался подключиться к своему серверу gitweb, но не смог подключиться – Внутренняя ошибка сервера. Я долго искал и пытался решить эту проблему, но не смог.

Вот моя информация о gitweb и сервере –

  1. Установил ‘mediawiki’, и сейчас она работает.
  2. Установил ‘apache2’, и она тоже работает.
  3. git тоже работает. Я попытался клонировать git репозиторий на свой рабочий стол и успешно подключился.
  4. Установил ‘gitweb’ и… не работает. – Внутренняя ошибка сервера.
  5. Я проверил свой журнал apache2.

    [error] [client ---.---.---.---] (13)Permission denied: exec of '/usr/share/gitweb/index.cgi' failed
    [error] [client ---.---.---.---] Premature end of script headers: index.cgi
    
  6. gitweb был установлен в /usr/share/gitweb.

  7. Вот права для папки /usr/share/gitweb.

    -rwxr-xr-- 1 root root 221331 2012-05-08 02:24 gitweb.cgi
    lrwxrwxrwx 1 root root     10 2011-06-11 18:17 index.cgi -> gitweb.cgi
    drwxrwxrwx 2 root root   4096 2012-05-07 19:36 static
    
  8. Вот результат для ‘perl /usr/share/index.cgi’.

    Status: 404 Not Found^M
    Content-Type: text/html; charset=utf-8^M
    ^M
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
    <!-- git web interface version 1.7.5.4, (C) 2005-2006, Kay Sievers <[email protected]>, Christian Gierke -->
    <!-- git core binaries version 1.7.5.4 -->
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <meta name="generator" content="gitweb/1.7.5.4 git/1.7.5.4"/>
    <meta name="robots" content="index, nofollow"/>
    <title>Безымянный Git</title>
    <link rel="stylesheet" type="text/css" href="https://askubuntu.com/questions/133622/static/gitweb.css"/>
    <link rel="shortcut icon" href="static/git-favicon.png" type="image/png" />
    </head>
    <body>
    <div class="page_header">
    <a title="git homepage" href="http://git-scm.com/"><img class="logo" height="27" src="static/git-logo.png" alt="git" width="72" /></a><a href="https://askubuntu.com/">проекты</a> / </div>
    <div class="page_body">
    <br /><br />
    404 - Проекты не найдены
    <br />
    </div>
    <div class="page_footer">
    <a class="rss_logo" href="?a=opml">OPML</a> <a class="rss_logo" href="?a=project_index">TXT</a>
    </div>
    <script type="text/javascript" src="static/gitweb.js"></script>
    </body>
    </html>
    
  9. /etc/gitweb.conf

    # путь к git проектам (<project>.git)
    $projectroot = "/home/git/repositories";
    
    # каталог для временных файлов
    $git_temp = "/tmp";
    
    # адрес ссылки на главной странице
    #$home_link = $my_uri || "https://askubuntu.com/";
    
    # html текст для включения на главной странице
    #$home_text = "indextext.html";
    
    # файл со списком проектов; по умолчанию просто сканирует каталог projectroot.
    $projects_list = "/home/git/projects.list";
    
    # таблица стилей для использования
    @stylesheets = ("https://askubuntu.com/questions/133622/static/gitweb.css");
    
    # javascript код для gitweb
    $javascript = "static/gitweb.js";
    
    # логотип для использования
    $logo = "static/git-logo.png";
    
  10. /etc/apache2/conf.d/gitweb

    Alias /gitweb /usr/share/gitweb
    
    <Directory /usr/share/gitweb>
      Option FollowSymLinks +ExecCGI
      AddHandler cgi-script .cgi
    <Directory>
    
  11. Я выполнил эту команду – “a2enmod cgi, a2enmod perl” и уже включил.

Похоже, что apache не может выполнить index.cgi, потому что у него нет прав. index.cgi является символьной ссылкой на gitweb.cgi, и я вижу из его прав, что только root может его выполнять.

Обычно Apache не работает как пользователь root, поэтому вам нужно изменить права на gitweb.cgi, чтобы позволить Apache его выполнять.

Попробуйте выполнить эту команду (как root), чтобы изменить права на gitweb.cgi

chmod +x /usr/share/gitweb/gitweb.cgi

Ответ или решение

Чтобы исправить проблемы с установкой и работой Gitweb на сервере Ubuntu 11.10, выполните следующие шаги. Основной проблемой, судя по вашему описанию, является ошибка "Internal Server Error", возникающая из-за недостаточных прав на выполнение файла gitweb.cgi. Apache, как правило, работает от имени пользователя, отличного от root, что вызывает проблемы с доступом к исполняемым файлам.

1. Проверка прав доступа

Первым делом проверьте права доступа к gitweb.cgi, так как именно они могут стать причиной ошибки.
Используйте команду:

ls -l /usr/share/gitweb/gitweb.cgi

Вы должны увидеть права, как указано в вашем сообщении. В частности, они должны выглядеть следующим образом:

-rwxr-xr-- 1 root root ...

2. Изменение прав доступа

Вам нужно изменить права доступа к файлу gitweb.cgi, чтобы разрешить его выполнение для пользователя, под которым работает Apache. Выполните следующую команду:

chmod 755 /usr/share/gitweb/gitweb.cgi

Это изменит права на -rwxr-xr-x, что позволит Apache выполнять данный файл.

3. Правка конфигурации Apache

Также необходимо удостовериться, что конфигурация Apache правильно настроена для работы с CGI. Убедитесь, что файл /etc/apache2/conf.d/gitweb содержит правильные настройки. Он должен быть оформлен следующим образом:

Alias /gitweb /usr/share/gitweb

<Directory /usr/share/gitweb>
    Options +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi
    Require all granted
</Directory>

4. Перезапуск Apache

После внесения изменений не забудьте перезапустить Apache, чтобы обновить конфигурацию:

service apache2 restart

5. Проверка логов Apache

Если ошибки продолжают возникать, проверяйте логи Apache для получения более детальной информации о проблемах. Логи можно найти по адресу:

/var/log/apache2/error.log

6. Отладка работы Gitweb

Попробуйте выполнить файл gitweb.cgi вручную для проверки:

perl /usr/share/gitweb/gitweb.cgi

Если он запустится без ошибок, это будет подтверждением того, что скрипт работает корректно.

7. Проверка конфигурации Gitweb

Убедитесь, что в файле конфигурации Gitweb (/etc/gitweb.conf) прописаны правильные пути к вашим репозиториям и временным файлам. Например:

$projectroot = "/home/git/repositories";
$git_temp = "/tmp";

Заключение

После выполнения всех вышеперечисленных шагов ваш Gitweb должен работать корректно. Если проблемы продолжаются, проверьте дополнительные настройки сервера и возможные конфликты, например, с установленными модулями Apache. Настоящие улучшения в конфигурации и правах доступа помогут вам обеспечить стабильную работу Gitweb на вашем сервере Ubuntu 11.10.

Оцените материал
Добавить комментарий

Капча загружается...