为了在Ubuntu14.04上部署Mercurial中心服务器,在网络的查找了一些文章,但是按照相关文章部署,总是出现错误,因此基于总结了各个文章的
部署步骤,自己又重新整理了一下。
以下的安装步骤全部采用root用户,如果系统不能su -到root用户,则在相应的命令前加sudo。
1。首先安装apache2和mercurial
apt-get install apache2
apt-get install mercurial
2。配置hg给apache用的cgi文件
cd /var
mkdir hg
chown -R www-data:www-data hg
cd hg
cp /usr/share/doc/mercurial/examples/hgweb.cgi .
chmod a+x hgweb.cgi
vi hgweb.cgi
config = "/var/hg/hgweb.config"
3。配置hg web
vi hgweb.config
[web]
style=gitweb
[collections]
/var/hg/repos = /var/hg/repos
4。配置apache
cd /etc/apache2/sites-available
vi default
在</VirtualHost>前面加入:
ScriptAlias /hg "/var/hg/hgweb.cgi"
<Location /hg>
</Location>
5。建立资源库集目录并设置访问权限
cd /var/hg
mkdir repos
chown www-data.www-data repos
htpasswd -mc hgusers admin
这是给这个库集设定访问用户admin,回车后输入密码。除了添加第一个用户时使用-mc参数外,添加后续用户用-m(建htpasswd用法)
6。建立测试库
由于root及www-data都不是登录用户,因此建立仓库时可以使用其他用户或者是使用sudo -u www-data 的方式
cd /var/hg/repos
mkdir test
cd test
hg init
7。允许http push
vi /etc/mercurial/hgrc
[web]
allow_push = *
push_ssl = false
8。重启apache2并测试
http://[your server]/hg/
注意,在这里,往往会直接显示hgweb.cgi的源码,也就是该cgi没有执行。原因是Ubuntu14的apache2在缺省安装时没有启用cgi及cgid模块。
因此需要执行如下命令:
sudo a2enmod cgid 或者是 sudo a2enmod cgi,软化重新启动apache2