我已经在我的 VPS 上安装了 virtualmin 来管理我的网站。近一年来,它运行完美,正如预期的那样。最近我想给我的一个网站添加一些功能,我需要 git 集成。
我已经在我的服务器上正确安装了 git 和 gitweb,我可以在以下位置创建存储库并查看它们 http://sub.domain.com/git/gitweb.cgi 这是当前相关的目录树:
/home/用户/域/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/用户/域/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)时,我收到“致命:此操作必须在工作树中运行”的消息。我该如何使用该存储库?
- 目前我需要明确授予用户访问权限,以便他们能够通过 gitweb 查看存储库。如何将某些存储库公开?
答案1
您是否使用我们在 Virtualmin.com 上提供的 install.sh 自动安装脚本安装了 Virtualmin?还是手动安装了 Virtualmin?
您描述的行为意味着您的脚本不是使用 suexec 执行的,而是以 Apache 用户身份执行的。如果您使用了安装脚本,suexec应该默认情况下,所有脚本类型均已配置。如果您手动安装,则需要自行设置,并重新编译 Apache(或者,如果您使用的是 Debian/Ubuntu,则安装 apache2-suexec-custom 包,并将其配置为 /home)以将 suexec docroot 设置为 /home。
我们有一些关于在我们的网站上手动安装,但手动安装仍然需要相当多的知识和大量的时间投入。我们建议在新安装的 A 级支持操作系统上使用安装脚本,如我们的下载页面。
我对 gitweb 一无所知,所以我不会回答这些问题。
答案2
关于所有权问题:在某些设置中,包管理器(例如 apt)安装的 PHP 配置会覆盖 Virtualmin 的 fcgid 配置。在这种情况下,解决方案是编辑 /etc/apache2/mods-available/php5.conf,注释掉该行SetHandler application/x-httpd-php
,然后运行apache2ctl graceful
。