使用Apache和mod_macro设置私有多个公共/私有Git存储库

usr-local-ΕΨΗΕΛΩΝ

我一直在私有服务器上运行SVN存储库。我有几个项目要维护,所有项目都使用标准配置模式维护,这些模式后来被用作Apache macro基本上我的结构很简单

映射到

  • / home / me / srv / svn / repos
    • / repo1
    • / repo2

有多个宏,因为每个存储库都有自己的身份验证方案(公共读取,已验证提交或完全私有)

现在我要去Git

即使我发现了一些使用Apache和Git的配置指令,我也无法正确理解它们。以下是我的问题:


我希望我的虚拟主机(https://git.example.com)托管多个Git存储库,所有存储库都可以从shell轻松配置(例如,添加mod_macroUse指令并git init通过SSH运行)。每个人都有自己的许可系统,例如根据.htpasswd典型的存储库路径可以https://git.example.com/[projects-or-whatever]/myProject.git映射到类似/home/me/srv/git/repos/myProject

如何在Apache中做到这一点?


到目前为止很糟糕

我尝试构建如下所示的Git配置(尚未经过测试,因为它暂时不会起作用)

<VirtualHost *:443>
    ServerName git.example.com
    ServerAlias www.git.example.com
    ServerAdmin [email protected]
    AssignUserID me myself

    # Use HTTP Strict Transport Security to force client to use secure connections only
    Header always set Strict-Transport-Security "max-age=500000000"

    ErrorLog /path/to/error_log
    CustomLog /path/to/access_log "vhost_combined"

    DocumentRoot /srv/www/default

    SSLEngine on
    SSLOptions +StrictRequire
    #SSLPassPhraseDialog builtin
    SSLCertificateFile /path/to.crt
    SSLCertificateKeyFile /path/to.key
    SSLCertificateChainFile /path/to.ca-bundle
    SSLVerifyClient none
    SSLProxyEngine on

    #Used for system login instead of .htaccess
    AddExternalAuth pwauth /usr/bin/pwauth
    SetExternalAuthMethod pwauth pipe

    <IfModule mime.c>
        AddType application/x-x509-ca-cert      .crt
        AddType application/x-pkcs7-crl         .crl
    </IfModule>



    ScriptAliasMatch \
       "(?x)^/git/(.*/(HEAD | \
       info/refs | \
       objects/(info/[^/]+ | \
       [0-9a-f]{2}/[0-9a-f]{38} | \
       pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
       git-(upload|receive)-pack))$" \
       "/usr/lib/git/git-http-backend/$1"

    ScriptAlias /git /usr/share/gitweb/gitweb.cgi
    SetEnv GIT_PROJECT_ROOT /home/me/srv/git/repos/
    SetEnv GIT_HTTP_EXPORT_ALL


    #In this directory, specific repositories are configured
    Include "/home/hosting/vhosts.d/me/git/*.git.conf"

    <Directory "/home/me/srv/git/repos">
        Allow from all
        Options +ExecCGI
        AllowOverride All
    </Directory>


    <Directory "/usr/lib/git/">
        Options ExecCGI Indexes
        Order allow,deny
        Allow from all
    </Directory>

    AddHandler cgi-script cgi
    DirectoryIndex gitweb.cgi

    <Files gitweb.cgi>
        SetHandler cgi-script
    </Files>
</VirtualHost>

但是,让我们专注于我目前无法理解的以下内容

 ScriptAliasMatch \
       "(?x)^/git/(.*/(HEAD | \
       info/refs | \
       objects/(info/[^/]+ | \
       [0-9a-f]{2}/[0-9a-f]{38} | \
       pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
       git-(upload|receive)-pack))$" \
       "/usr/lib/git/git-http-backend/$1"

根据我的理解,上面的正则表达式匹配绝对路径,例如

/git/sdf/HEAD
/git/blablabla/blabla/objects/info/sdfs
/git/daf/git-receive-pack

好的,/git/如果不进行更改,看来我所有的项目都将放在下面是正确的吗?

但是然后,由于我目前不知道HTTP上的Git的工作方式,我如何独立地保护每个存储库的安全

usr-local-ΕΨΗΕΛΩΝ

可能会提供答案。这是我尝试之前的候选答案。

基本上,上述全局配置告诉所有以给定模式(例如git-receive-pack结尾的内容都发送到Git CGI。好的。

但是,使用适当的LocationMatchAlias<Directory>指示应该工作。这是草稿:

  • 用于Alias将文件系统目录映射到某个位置
  • 用于根据需要<Directory>进行设置.htaccessSVN用于HTTP verbs区分读/写操作,Gitgit-receive-pack用于写操作。该书建议使用LocationMatch指令
  • 将所有内容包装在 Macro

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Git扩展名和gitolite在Windows Server上托管私有GIT存储库

来自分类Dev

从Dockerfile克隆私有git存储库

来自分类Dev

使用HTTPS Git访问私有存储库

来自分类Dev

使用HTTPS Git访问私有存储库

来自分类Dev

私有存储库的私有派生

来自分类Dev

如何使用 PhpStorm 将公共 GitHub 存储库推送到私有存储库?

来自分类Dev

在私有git服务器上分支公共git存储库

来自分类Dev

使用Composer嵌套的依赖项和私有存储库

来自分类Dev

使用私有存储库的WordPress主题和插件开发

来自分类Dev

对于网站开发,使用私有存储库还是公共存储库有优势吗?

来自分类Dev

多个级别的私有和公共继承-异常访问

来自分类Dev

多个级别的私有和公共继承-异常访问

来自分类Dev

在jenkins服务器上设置git私有存储库项目

来自分类Dev

Git:如何为给定存储库设置非标准的私有SSH密钥路径

来自分类Dev

如何为包含私有 git 存储库的 docker 镜像设置 ssh 密钥?

来自分类Dev

在git中的远程存储库上创建私有分支

来自分类Dev

git在分叉私有存储库后无法克隆

来自分类Dev

捆绑安装-不带私有git存储库的<group>

来自分类Dev

git在分叉私有存储库后无法克隆

来自分类Dev

如何将私有Bitbucket存储库迁移到公共Github存储库

来自分类Dev

分叉私有存储库,复制并创建公共存储库

来自分类Dev

git push在推送到共享私有存储库时询问用户名和密码

来自分类Dev

Visual Studio 2013 Git扩展和GitHub私有存储库

来自分类Dev

Git:如何在不将其与父存储库分离的情况下,在私有存储库中将子文件夹作为公共存储库?

来自分类Dev

Ruby私有和公共访问器

来自分类Dev

私有存储库中的Bluemix节点buildpack和模块

来自分类Dev

如何设置迦太基以使用私有存储库(例如Stash(Bitbucket))中的自己的框架?

来自分类Dev

是否可以在Dockerfile ADD中使用私有git(hub)存储库?

来自分类Dev

如何使用初始化Shell脚本克隆私有Git存储库

Related 相关文章

  1. 1

    使用Git扩展名和gitolite在Windows Server上托管私有GIT存储库

  2. 2

    从Dockerfile克隆私有git存储库

  3. 3

    使用HTTPS Git访问私有存储库

  4. 4

    使用HTTPS Git访问私有存储库

  5. 5

    私有存储库的私有派生

  6. 6

    如何使用 PhpStorm 将公共 GitHub 存储库推送到私有存储库?

  7. 7

    在私有git服务器上分支公共git存储库

  8. 8

    使用Composer嵌套的依赖项和私有存储库

  9. 9

    使用私有存储库的WordPress主题和插件开发

  10. 10

    对于网站开发,使用私有存储库还是公共存储库有优势吗?

  11. 11

    多个级别的私有和公共继承-异常访问

  12. 12

    多个级别的私有和公共继承-异常访问

  13. 13

    在jenkins服务器上设置git私有存储库项目

  14. 14

    Git:如何为给定存储库设置非标准的私有SSH密钥路径

  15. 15

    如何为包含私有 git 存储库的 docker 镜像设置 ssh 密钥?

  16. 16

    在git中的远程存储库上创建私有分支

  17. 17

    git在分叉私有存储库后无法克隆

  18. 18

    捆绑安装-不带私有git存储库的<group>

  19. 19

    git在分叉私有存储库后无法克隆

  20. 20

    如何将私有Bitbucket存储库迁移到公共Github存储库

  21. 21

    分叉私有存储库,复制并创建公共存储库

  22. 22

    git push在推送到共享私有存储库时询问用户名和密码

  23. 23

    Visual Studio 2013 Git扩展和GitHub私有存储库

  24. 24

    Git:如何在不将其与父存储库分离的情况下,在私有存储库中将子文件夹作为公共存储库?

  25. 25

    Ruby私有和公共访问器

  26. 26

    私有存储库中的Bluemix节点buildpack和模块

  27. 27

    如何设置迦太基以使用私有存储库(例如Stash(Bitbucket))中的自己的框架?

  28. 28

    是否可以在Dockerfile ADD中使用私有git(hub)存储库?

  29. 29

    如何使用初始化Shell脚本克隆私有Git存储库

热门标签

归档