我有以下情况:
在同一台机器上,我有一个 mercurial 服务器和一个 web 服务器。项目存储库位于 /var/hg/repos/myproyect,web 服务器的公共文件位于 /usr/share/nginx/www
有什么方法可以将 repo 目录链接 (ln) 到公共路径服务器吗?当我这样做时
ln /var/hg/repos/myproject/.hg/store/data/ /ush/share/nginx/www/myproject
我在浏览器中输入http://iptoserver.com/myproject什么也没有显示
我注意到将数据存储在以 .i 扩展名结尾的 .hg 中
答案1
您几乎肯定应该设置 hgweb 来提供存储库而不是转储原始文件。
这发布存储库和HGWeb 逐步指南维基百科文章对此进行了深入介绍,但重点如下:
创建一个 hgweb.conf 文件(通常在
/usr/local/etc/
多租户环境中或依赖于虚拟主机的某些内容)。[paths] myproject = /var/hg/repos/myproject [web] allow_archive = gz contact = Some Name <[email protected]>
将 hgweb.cgi 文件从安装目录复制到 cgi-bin 目录。很有可能:(
cp /usr/share/mercurial/www/hgweb.cgi /var/www/cgi-bin/
无论如何您都明白我的意思)。- 编辑hgweb.cgi文件,从#1设置配置文件位置。
为 fcgi 配置 nginx:
location /hg/ { fastcgi_pass 127.0.0.1:9000; include fastcgi_hg; fastcgi_intercept_errors off; limit_except GET HEAD { auth_basic 'Example'; auth_basic_user_file /srv/hg.htpasswd; } }
为 hg配置 fcgi include(
fastcgi_hg
):include fastcgi_params; fastcgi_split_path_info ^(/hg)(.*)$; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param AUTH_USER $remote_user; fastcgi_param REMOTE_USER $remote_user;
- 重新启动 nginx,一切就绪了!