Вопрос или проблема
Привет и извините за плохой англійский сначала :(…
У меня есть сервер 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 и сервере –
- Установил ‘mediawiki’, и сейчас она работает.
- Установил ‘apache2’, и она тоже работает.
- git тоже работает. Я попытался клонировать git репозиторий на свой рабочий стол и успешно подключился.
- Установил ‘gitweb’ и… не работает. – Внутренняя ошибка сервера.
-
Я проверил свой журнал apache2.
[error] [client ---.---.---.---] (13)Permission denied: exec of '/usr/share/gitweb/index.cgi' failed [error] [client ---.---.---.---] Premature end of script headers: index.cgi
-
gitweb был установлен в /usr/share/gitweb.
-
Вот права для папки /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
-
Вот результат для ‘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>
-
/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";
-
/etc/apache2/conf.d/gitweb
Alias /gitweb /usr/share/gitweb <Directory /usr/share/gitweb> Option FollowSymLinks +ExecCGI AddHandler cgi-script .cgi <Directory>
-
Я выполнил эту команду – “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.