Я установил 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
Но у меня есть вопросы:
Когда я в гостях http://sub.domain.com/git/gitweb.cgi, владелец указан как Apache. Зачем? как я могу это изменить?
Обычно, чтобы создать новый репозиторий 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), я получаю сообщение «фатально: эта операция должна выполняться в дереве работы». Как я могу работать с этим репозиторием?
Вы устанавливали 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
.