Install Mercurial Server on Ubuntu
Refernece : http://phpfour.com/blog/2011/05/setting-up-central-mercurial-server-in-ubuntu/
http://mercurial.selenic.com/wiki/PublishingRepositories#Publishing_multiple_repositories
$ sudo apt-get install mercurial
安裝Mercurial
$ cd /var/
$ sudo mkdir hg
$ sudo mkdir hg/repos
$ sudo chown -R www-data:www-data hg/repos
$ cd /var/hg
$ sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi .
$ sudo chmod a+x hgweb.cgi
$ vim hgweb.cgi
config = "/var/hg/hgweb.config"
import os
os.environ['HGENCODING'] = "UTF-8"
$ vim hgweb.config
[collections]
/var/hg/repos = /var/hg/repos
$ cd /etc/apache2/sites-available
$ sudo vim default
如果你default裡面沒有定義的話,就依照我的範例複製貼上就可以了:
$ vim /etc/apache2/ports.conf
加入以下兩列文字,因為我的Mercurial Server的port是設在8080
NameVirtualHost *:8080
Listen 8080
建立Mercurial Server 的管理員
htpasswd -m hgusers abid
建立其他的使用者
$ vim /etc/mercurial/hgrc
[web]
allow_push = *
push_ssl = false
$ cd /var/hg/repos
$ mkdir test
$ chown www-data:www-data test
P.S. 上面這個步驟一定要做,不然在push資料到server上會出現
$ cd test
$ hg init
建立test的project
用瀏覽器去測試看看 http://your.ip:8080/hg/test
$ cd /var/www
$ hg clone http://your.ip/hg/test
如果想要clone Server上的project就用上面指令
上面只是建立Mercurial Server的方法之一,而且這樣的設定安全性看起來不高
需要在做其他的設定。
http://mercurial.selenic.com/wiki/PublishingRepositories#Publishing_multiple_repositories
$ sudo apt-get install mercurial
安裝Mercurial
$ cd /var/
$ sudo mkdir hg
$ sudo mkdir hg/repos
$ sudo chown -R www-data:www-data hg/repos
$ cd /var/hg
$ sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi .
$ sudo chmod a+x hgweb.cgi
$ vim hgweb.cgi
config = "/var/hg/hgweb.config"
import os
os.environ['HGENCODING'] = "UTF-8"
$ vim hgweb.config
[collections]
/var/hg/repos = /var/hg/repos
$ cd /etc/apache2/sites-available
$ sudo vim default
如果你default裡面沒有定義的話,就依照我的範例複製貼上就可以了:
- <VirtualHost *:8080>
- ServerAdmin webmaster@localhost
- DocumentRoot /var
- ScriptAlias /hg "/var/hg/hgweb.cgi"
- <Directory />
- Options FollowSymLinks
- AllowOverride None
- </Directory>
- <Directory /var>
- Options Indexes FollowSymLinks MultiViews
- AllowOverride all
- Order allow,deny
- allow from all
- AuthType Basic
- AuthName "Mercurial repositories"
- AuthUserFile /var/hg/hgusers
- Require valid-user
- </Directory>
- ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
- <Directory "/usr/lib/cgi-bin">
- AllowOverride None
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
- Order allow,deny
- Allow from all
- </Directory>
- ErrorLog ${APACHE_LOG_DIR}/error.log
- # Possible values include: debug, info, notice, warn, error, crit,
- # alert, emerg.
- LogLevel warn
- CustomLog ${APACHE_LOG_DIR}/access.log combined
- Alias /doc/ "/usr/share/doc/"
- <Directory "/usr/share/doc/">
- Options Indexes MultiViews FollowSymLinks
- AllowOverride None
- Order deny,allow
- Deny from all
- Allow from 127.0.0.0/255.0.0.0 ::1/128
- </Directory>
- </VirtualHost>
$ vim /etc/apache2/ports.conf
加入以下兩列文字,因為我的Mercurial Server的port是設在8080
NameVirtualHost *:8080
Listen 8080
$ sudo apache2ctl restart
$ cd /var/hg
$ htpasswd -mc hgusers admin
$ htpasswd -mc hgusers admin
建立Mercurial Server 的管理員
htpasswd -m hgusers abid
建立其他的使用者
$ vim /etc/mercurial/hgrc
[web]
allow_push = *
push_ssl = false
$ cd /var/hg/repos
$ mkdir test
$ chown www-data:www-data test
P.S. 上面這個步驟一定要做,不然在push資料到server上會出現
abort: HTTP Error 500: Permission denied
不給你push任何東西上server$ cd test
$ hg init
建立test的project
用瀏覽器去測試看看 http://your.ip:8080/hg/test
$ cd /var/www
$ hg clone http://your.ip/hg/test
如果想要clone Server上的project就用上面指令
上面只是建立Mercurial Server的方法之一,而且這樣的設定安全性看起來不高
需要在做其他的設定。
留言