我无法用gitolite设置gitweb。 Gitolite工作正常,但gitweb不断给我一个404 – 找不到项目。
奇怪的是,当我以下面的方式运行cgi脚本作为apache用户似乎正常工作。
# su apache /var/www/git/gitweb.cgi --shell=/bin/sh .... <tr class="dark"> <td><a class="list" href="?p=testing.git;a=summary">testing.git</a></td> <td><a class="list" title="Test repo 3" href="?p=testing.git;a=summary">Test repo 3</a></td> ...
Gitweb应该有读取权限,并且设置了$REPO_UMASK = 0022; 在gitweb.conf中,并将Apache添加到gitolite组中#usermod # usermod -a -G gitolite apache
# ls -l gitolite/ total 8 -rw-r--r--. 1 gitolite gitolite 12 Sep 28 08:47 projects.list drwxr-x---. 4 gitolite gitolite 4096 Sep 28 04:52 repositories
我的apache gitconfiguration:
Alias /git /var/www/git <Directory /var/www/git> Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex gitweb.cgi </Directory>
任何人都可以帮我得到这个工作? 一整天都在尝试,阅读不同的博客和post,但它不会工作
修复! 我在RHEL上运行,事实certificate这是SELinux的一个问题。 当我禁用它,一切工作正常。 由于我不想禁用它,所以我在博客上find了解决scheme ,编写一个模块来设置正确的策略并安装它。
我做的是:
# mkdir gitolite-selinux; cd gitolite-selinux # touch local.te local.if local.fc # vim local.te module gitolite 1.0; require { type git_system_t; type httpd_t; type var_t; type gitosis_var_lib_t; type httpd_git_script_t; class dir { search read getattr open }; class file { getattr read open ioctl }; } #============= git_system_t ============== allow git_system_t gitosis_var_lib_t:dir { read search open getattr }; allow git_system_t gitosis_var_lib_t:file { read getattr open }; #============= httpd_git_script_t ============== allow httpd_git_script_t gitosis_var_lib_t:dir { read search open getattr }; allow httpd_git_script_t gitosis_var_lib_t:file { read getattr open ioctl }; #============= httpd_t ============== allow httpd_t var_t:file getattr; # make -f /usr/share/selinux/devel/Makefile # semodule -i gitolite.pp