hg serve with nginx proxy

  1. 設定 hgweb.config:

    [web]
    push_ssl = false
    allow_push = *
    style = gitweb
    
    [paths]
    /repos/myproject1 = /srv/repos/myproject1/
    /repos/myproject2 = /srv/repos/myproject2/
  2. 執行 hg serve:

    $ cd /srv/repos/myproject
    $ hg serve --webdir-conf /srv/hgweb.config -a 127.0.0.1 -p 9000 # 假設 hgweb.config 在 /srv 下
  3. 產生 htpasswd:

    $ htpasswd -c /srv/.htpasswd user1 # 只有第一次要產生 .htpasswd 時,要用 -c;另外就是目前將 .htpasswd 置放在 /srv/.htpasswd
    $ htpasswd /srv/.htpasswd user2
    $ htpasswd /srv/.htpasswd user3
  4. 設定 nginx:

    server {
        listen       80;
        server_name  hg.my.com;
        auth_basic  "Mercurial Login";
        auth_basic_user_file    /srv/.htpasswd; #同剛剛產生的 .htpasswd 位置
    
        location / {
            client_max_body_size 50M;
            proxy_pass  http://127.0.0.1:9000;
        }
    }

設定完成後,reload nginx 即可生效

測試

cli client:

$ hg clone http://hg.my.com/repos/myproject1
$ hg clone http://hg.my.com/repos/myproject2
### 以及要測試 hg push

web client:

打開 http://hg.my.com/ 看網頁有無 repos/myproject1 以及 repos/myproject2 兩個目錄

備註

hg serve 之所以要指定 -a 127.0.0.1 -p 9000,是為了讓非 localhost 的 user 只能透過 nginx 來 access 我們的 service

內容目錄

上一個主題

開發註記

下一個主題

HG 輸出兩個 revision 之間變更的檔案

本頁