`

(转)GIT 搭建 Windows上的Git服务器_ Apache

阅读更多
在公司一直使用 SVN 作版本控制,不过 SVN 的 branch 是在过于灵活。我们所希望的只是一种简单的分支系统:各个分支能够完全独立开来,不会牵扯到复杂的 merge 操作。因此,决定搭建一个 Git 服务器。由于目前没有合适的 Linux 服务器,因此只能尝试在 Windows 上搭建。

在 Windows 上搭建 Git 服务器一般使用 SSL + putty + msysGit 完成。不过按照网上的做法始终不能成功。所以开始选择另外的一种搭建方法:基于 Apache 服务器搭建 Git 服务器。这样做的好处是免除了 SSH 在 Windows 上的配置,同时可以使用 HTTP(S) 协议访问版本库。经过一番尝试,终于实现了在 Windows 上搭建好 Apache + Git 服务器,现在将搭建方法记录于此。


第一步:安装 Git

由于 Git 官方没有提供 Windows 上的安装程序,我们只能使用第三方实现。好在还是有不错的选择,而且其实现也算是比较完美。我选择的是 msysGit,你可以从这里下载到最新版本。在本文写作时,最新版本是 1.7.6。下载完成后直接双击安装就可以。这里需要注意的是,网上有些文章声称,需要在安装时选择 Run git from the Windows Command prompt。对此持保留意见,因为不选择这一项也是可以的。不过为了谨慎起见,还是选择此项为好。

安装完毕后,开始菜单会多出 Git 一项,里面有 Git GUI 和 Git Bash,前者是图形界面,后者是命令行界面。msysGit 默认的安装路径是 C:\Program Files\Git。下面我们可以进入 C:\Program Files\Git\libexec\git-core 目录,双击运行 git-http-backend.exe 程序。这个程序的作用就是处理 HTTP 请求。不过,此时你应该得到一个错误:



这个错误是说缺少 libiconv-2.dll。该文件位于 C:\Program Files\Git\bin。我们可以将其从这里复制到 C:\Program Files\Git\libexec\git-core 即可。

第二步:安装 Apache 服务器

下一步,你应该安装 Apache 服务器。从这里可以找到安装文件(包含 OpenSSL)。本文写作时最新稳定版本是 2.2.21。正常安装之后,Apache 会自动启动,并且占据 80 端口。你可以根据需要修改监听端口。然后我们打开浏览器,进入 http://localhost。如果浏览器页面显示 It works! 说明我们的服务器已经正确安装,那么就可以进行下一步操作了。

第三步:配置 Apache 服务器

现在,我们的 Git 和 Apache 都已经安装成功,下面就是配置 Apache 服务器。

进入 Apache 安装目录下的 conf 目录,用记事本打开 httpd.conf 文件。首先,找到 <directory />,修改如下:

<directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</directory>
然后在 httpd.conf 文件末尾追加:

# Set this to the root folder containing your Git repositories.
# 指定 Git 版本库的位置
SetEnv GIT_PROJECT_ROOT C:/workspace
# Set this to export all projects by default (by default,
# git will only publish those repositories that contain a
# file named “git-daemon-export-ok”
# 该目录下的所有版本库都可以透过 HTTP(S) 的方式存取
SetEnv GIT_HTTP_EXPORT_ALL
# Route specific URLS matching this regular expression to the git http server.
# 令 Apache 把 Git 相关 URL 导向给 Git 的 http 处理程序
ScriptAliasMatch \
“(?x)^/(.*/(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))$” \
“C:/Program Files/Git/libexec/git-core/git-http-backend.exe/$1″

<Location />
AuthType Basic
AuthName “GIT Repository”
AuthUserFile “C:/Program Files/Git/htpasswd”
Require valid-user
</Location>
上面修改内容中,第一个指令设置 Git 的版本库位置;第二个指令表示,该目录下的所有版本库都可以通过 HTTP(S) 的方式存取;第三个指令则是让 Apache 把 Git 相关 URL 导向给 Git 的 HTTP 处理程序,也就是我们前面提到的 git-http-backend.exe。最后的 <Location /> 区段设定了虚拟根路径 “/” 的验证规则;C:/Program Files/Git/htpasswd 是账号密码文件,该文件可以在任何位置,也可以使任何名字,只要在这里指定即可。

完成上述修改之后,重启 Apache 服务。

如果你希望将来透过远端存取版本库时,一律使用 http://my-server/git/* 开头的 URL,则可将 ScriptAliasMatch 指令改为 “(?x)^/git/(.*/(HEAD | \ …….”

第四步:添加用户

下面,我们将向 htpassword 文件添加用户名和密码。这样,在我们提交版本是,Apache 服务器就可以根据这里我们指定的用户名和密码判断是否具有权限。

添加用户名和密码的操作应该使用 Apache 提供的 htpasswd 命令。使用命令提示符来到 Apache 安装目录下的 bin,输入命令:

htpasswd -cmb htpassword abc 123456
该命令执行后,会在当前目录下生成一个名为 htpassword 的文件,用户名为 abc,密码为 123456(加密的)。

htpasswd 命令还可以追加用户、修改用户密码、删除用户等,具体操作请查阅 htpasswd 使用手册。

第五步:测试

这里我们要建立一个测试库,以便查看我们的服务器是否能够正常运行。

我们使用 Git Bash,来到 C:/workspace 目录,运行如下命令:

git init –bare myapp.git
此时,会在 workspace 目录下建立一个空的版本库 myapp.git。然后我们运行

git clone http://localhost/myapp.git
此时,Git 会要求我们提供用户名和密码,之后就可以正常 clone。然后尝试修改文件,运行一下

git push origin master
在提供用户名和密码之后即可成功提交。

如果上面的命令都可以正常进行,则说明我们的服务器基本已经搭建完成。
分享到:
评论

相关推荐

    Linux下使用Apache搭建Git服务器

    近在学Linux,终于在Linux上用Apache搭建起了Git服务器,在此记录一下。  服务器:阿里云服务器  Linux版本:CentOS 6.5  Apache版本:Apache/2.2.15  Git版本:git 1.7.1  Git访问方式:基于http的基本...

    Ubuntu 18.04_ Install Gerrit for Git code review.pdf

    Ubuntu 18.04_ Install Gerrit for Git code review ubuntu 上部署 gerrit 服务器 , 使用 apache2 作为web端, 可手动设置用户名密码.

    dubbo-website:Apache Dubbo 文档

    本项目保留所有用于搭建 Dubbo 官网的资源,为 。 概述 Apache Dubbo 文档是使用和主题构建的。 这个项目包含了hugo项目、markdown文件和主题配置。 先决条件 环境设置 确保安装了先决条件 克隆这个仓库 git clone ...

    jshERP开源进销存软件

    jshERP完整开源版J2EE代码 很多人说jshERP是目前唯一完整开源的进销存系统 虽然目前只有进销存+财务的功能,但后面将会推出ERP的全部功能,大家一起努力吧 ...源码托管地址:...本系统100%开源,遵守Apache2.0协议

    Web开发秘方

    怎样对付Apache服务器?本书包含42种Web开发技巧,从UI效果制作到数据分析处理,从测试方法到主机配置,不一而足,案例详实,细节清晰。 这本书是我目前读过的最棒的Web开发工具书。进入这一行的新手如果单凭自己...

    如何使用Gitblog和Markdown建自己的博客

    主要交大家如何使用Gitblog和Markdown建自己的博客,如何大家拥有服务器或者云平台提供的云主机,我推荐大家使用Linux+ Nginx 来运行Gitblog,如果大家目前只有Apache环境也可以,需要的朋友可以参考下

    centos6-lamp-japanese

    centos6-lamp-japanese 在 CentOS 6 上搭建 LAMP 环境,同时搭建 OpenJDK 和 Tomcat 环境的脚本。假设有一个服务器进行开发,我们还会部署 GitBucket,一个 GitHub 克隆,以及自动部署的 Jenkins。 Tomcat 和 Apache...

    airavata:通用分布式系统框架

    Apache Airavata是一个软件框架,用于在分布式计算资源(包括本地集群,超级计算机,国家网格,学术和商业云)上执行和管理计算作业。 Airavata建立在面向服务的计算,分布式消息传递以及工作流组成和编排的一般概念...

    Downloads.7z

    搭建云服务器环境的所需安装包,jdk-8u231-linux-x64.tar.gz,git-2.24.0.tar.gz,apache-tomcat-8.5.47.tar.gz,apache-maven-3.6.2-bin.tar.gz,nginx-1.17.5.tar.gz

    docker:用于PostfixAdmin的Docker映像

    git clone https://github.com/postfixadmin/docker.git docker ),然后运行: 从创建的目录内的docker build --pull --rm -t postfixadmin-image &lt;VARIANT&gt; (其中被apache,fpm或fpm-alpine代替)图像变体当前...

    vagrant-dev-box:Vagrant 和 Puppet 驱动的开发框(用于 PHP 和 nodejs 项目)

    超快搭建开发箱 安装 的安装说明安装 vagrant ...Apache Web 服务器可通过 127.0.0.1:8080 访问。 配方是分开的,这样这个设置可以很容易地用于不同的项目和不同的用户。 只需编辑puppet/manifests/project.

    1. WAMP 开发环境准备

    WAMP 指的是 Windows下的 Apache+Mysql/MariaDB+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的...

    guacamole-docker-compose:鳄梨酱与 docker-compose 使用 PostgreSQL,nginx 与 SSL(自签名)

    多亏了 HTML5,一旦在服务器上安装了 Guacamole,您访问桌面所需的只是一个网络浏览器。 它支持 RDP、SSH、Telnet 和 VNC,是我所知道的最快的 HTML5 网关。 查看项目以获取更多信息。 先决条件 您需要在您的机器...

    单点登录源码

    单点登录, SSM框架公共模块 ├── zheng-admin -- 后台管理模板 ├── zheng-ui -- 前台thymeleaf模板[端口:1000] ...## 环境搭建(QQ群内有“zheng环境搭建和系统部署文档.doc”) #### 开发工具: ...

    Laravel诗词博客-PHP

    服务器要求:安装 Nginx 【推荐版本1.8】 / Apache -- 切记设置 Laravel 的伪静态,隐藏index.php文件入口。安装 Composer安装 MySQL 【推荐存储引擎 InnoDB】安装 Git 【推荐安装】安装 PHP &gt;= 7.1.3 【推荐版本...

Global site tag (gtag.js) - Google Analytics