使用 Nginx + Mercurial(aka hg) 架设版本管理系统

以下以 CentOS5 为例,并且如下前置条件已经完成:

  • Python已经安装 2.4-2.7
  • Nginx已经安装

安装 Mercurial

  1. http://mercurial.selenic.com/downloads/下载 source realese。
  2. tar zxvf  mercurial-1.8.3.tar.gz 解压缩。
  3. cd  mercurial-1.8.3 ,执行  python setup.py build 编译
  4. 执行 python setup.py install 安装。
  5. 执行 hg 查看是否安装正确。

设置 Mercurial 仓库

  1. 创建仓库文件夹,比如:mkdir /root/code。
  2. cd /root/code 进入到 code 目录。
  3. hg init 初始化仓库。
  4. vi /root/code/.hg/hgrc 编辑配置文件, 加入 [步骤5] 后面的设置(允许push)
  5. hg serve 启动仓库web server。默认地址:http://localhost:8000
[web]
allow_push = *
push_ssl = false

设置Nginx代理

  1. http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py 下载该程序,用于创建密码文件。
  2. 下载之后,在 nginx 的conf目录,执行 python htpasswd.py -c -b htpassword [useranme] [passwd] 创建用户及密码存储在 htpassword 中。
  3. 配置代理,参见后面示例。
  4. 重启 Nginx。



代理配置示例(简化)

server {
    listen 80;
    server_name hg.nealmi.com;
   location / {
        auth_basic "Restricted";
        auth_basic_user_file /usr/local/nginx/conf/htpasswd;
        proxy_pass http://localhost:8000;
   }
}

也可以使用子路径,需要在 hgrc [web] 下加入 prefix 配置.

[web]
prefix = hg

nginx配置

server {
    listen 80;
    server_name hg.nealmi.com;
   location /hg/ {
        auth_basic "Restricted";
        auth_basic_user_file /usr/local/nginx/conf/htpasswd;
        proxy_pass http://localhost:8000;
   }
}

使用 Nginx + Mercurial(aka hg) 架设版本管理系统》上有3条评论

  1. coancna

    我想用http://localhost/hg 访问,如下配置:
    location /hg/ {
    auth_basic “Restricted”;
    auth_basic_user_file /usr/local/nginx/conf/htpasswd;
    proxy_pass http://localhost:8000;
    }

    结果web页面显示不正常,而且push时报404

    这是怎么回事呢

    1. Neal Mi 文章作者

      使用/hg/ 这种好像会导致路径错误,你右键查看一下网页源码,看看是不是所有资源的路径都正确,

  2. Neal Mi 文章作者

    关于这个问题我已经找到解决办法:
    在.hgrc 里加入
    [web]
    prefix = hg

    就可以了

评论已关闭。