我正在我们的生产 SUSE 12 SP3 上部署 git 服务器,以便通过 Visual Studio 访问。首先,我使用 git 制作了一个可以正常工作的测试虚拟机,但在我重新创建了生产服务器上的所有工作后,git push
在用户身份验证后失败,并出现以下错误:
error: Cannot access URL http://git.sevlinux.local/git/test.git/, return code 22
fatal: git-http-push failed
error: failed to push some refs to 'http://git.sevlinux.local/git/test.git'
这是我的 Apache 配置:
*:80 git.sevlinux.local (/etc/apache2/vhosts.d/git.sevlinux.powertech.conf:1)
*:443 cryptedweb.sevlinux.local (/etc/apache2/vhosts.d/technet.sevlinux.powertech.conf:1)
ServerRoot: "/srv/www"
Main DocumentRoot: "/srv/www/htdocs"
Main ErrorLog: "/var/log/apache2/error_log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/httpd.pid"
Define: SYSCONFIG
Define: SSL
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="wwwrun" id=30
Group: name="www" id=8
以及虚拟主机配置:
<VirtualHost *:80>
DocumentRoot /srv/git
ServerName git.sevlinux.local
ServerAdmin nidrax@local
<Directory /srv/git>
AllowOverride All
Require all granted
Options +Indexes +FollowSymLinks +MultiViews
</Directory>
<Directory /usr/lib/git>
AllowOverride All
Options +ExecCGI -Includes -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
<LocationMatch "/*.git/">
AuthType Basic
AuthName "Git Access for GIT LOCAL"
AuthUserFile /etc/apache2/conf.d/git.passwd
Require valid-user
</LocationMatch>
Alias /git /srv/git
ScriptAlias /git/ /usr/lib/git/git-http-backend/
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
</VirtualHost>
存储库配置:
[core]
repositoryformatversion = 0
filemode = true
bare = true
sharedRepository = true
[remote "origin"]
url = http://git.sevlinux.local/git/test.git
/etc/apache2/conf.d/git.passwd文件已创建并包含用户 ayth 数据。 /srv/git目录归 wwwrun:www 所有,且具有 755 权限(与我的其他机器一样)。
在提供正确的用户名和密码后,我可以成功克隆和获取 repo 并通过 Web 浏览器访问它,但我无法将其推送到其中。