Назад | Перейти на главную страницу

Интеграция Virtualmin и Git

Я установил virtualmin на свой VPS для управления своими сайтами. Он работает отлично и, как и ожидалось, уже почти год. Недавно я хотел добавить некоторые функции на один из моих сайтов, и мне нужна интеграция с git.

Я правильно установил git и gitweb на свой сервер, и я могу создавать репозитории и смотреть их в http://sub.domain.com/git/gitweb.cgi Вот текущее соответствующее дерево каталогов:

/home/user/domains/sub.domain.com/public_html/git/

drwxr-sr-x user   user .
drwxr-x--- user   user ..
-rw-r--r-- user   user git-favicon.png
-rw-r--r-- user   user git-logo.png
-rwxr-xr-x user   user gitweb.cgi
-rw-r--r-- user   user gitweb.css
drwxrwx--- apache user reponame.git

/home/user/domains/sub.domain.com/public_html/git/reponame.git/

drwxrwx--- apache user .
drwxr-sr-x user   user ..
drwxrwx--- apache user branches
-rwxrwx--- apache user config
-rwxrwx--- user   user description
-rwxrwx--- apache user HEAD
drwxrwx--- apache user hooks
drwxrwx--- apache user info
drwxrwx--- apache user objects
drwxrwx--- apache user refs

Но у меня есть вопросы:

  1. Когда я в гостях http://sub.domain.com/git/gitweb.cgi, владелец указан как Apache. Зачем? как я могу это изменить?

  2. Обычно, чтобы создать новый репозиторий git, я делаю что-то вроде:

    $ mkdir proj
    $ cd proj
    $ git init
    Initialized empty Git repository in /home/user/proj/.git/
    // here I'm creating the files or copy them from somewhere else
    $ git add *.php
    $ git add README
    $ git commit -m 'initial version'
    

Но после создания репозитория в virtualmin я могу найти новый каталог с именем 'reponame.git', но не каталог '.git'. Когда я пытаюсь запустить любую команду git (например, git status), я получаю сообщение «фатально: эта операция должна выполняться в дереве работы». Как я могу работать с этим репозиторием?

  1. В настоящее время мне нужно явно предоставить доступ пользователям, чтобы они могли просматривать репозитории через gitweb. Как сделать некоторые репозитории общедоступными?

Вы устанавливали Virtualmin с помощью сценария автоматической установки install.sh, который мы предоставляем на Virtualmin.com? Или вы устанавливали Virtualmin вручную?

Описанное вами поведение означает, что ваши скрипты выполняются не с использованием suexec, а от имени пользователя Apache. Если вы использовали сценарий установки, suexec должен быть настроенным по умолчанию для всех типов скриптов. Если вы установили вручную, вам нужно будет настроить это самостоятельно, а также перекомпилировать Apache (или установить пакет apache2-suexec-custom и настроить его для / home, если вы используете Debian / Ubuntu), чтобы установить корневой каталог suexec в / home.

У нас есть документация по установка вручную на нашем сайте, но ручная установка по-прежнему требует значительных знаний и значительных временных затрат. Мы рекомендуем использовать сценарий установки на только что установленной поддерживаемой ОС класса A, как описано в нашем Страница загрузки.

Я ничего не знаю о gitweb, поэтому оставлю эти вопросы без ответа.

Что касается проблемы владения: в некоторых настройках конфигурация PHP, установленная менеджером пакетов (например, apt), переопределяет конфигурацию Virtualmin fcgid. Решение в этом случае - отредактировать /etc/apache2/mods-available/php5.conf, закомментировать строку SetHandler application/x-httpd-php, а затем запустите apache2ctl graceful.