LINUX.ORG.RU

Mercurial, lighttpd и все, все, все


0

0

Выручайте товарищи. Второй день бьюсь с данной связкой, ничего не выходит.

Решил я освоить mercurial и приделать ко всему этому делу 
web-интерфейс через fastcgi. Сказано -- сделано, начал осваивать. 
Создал пользователя scm:scm, home у него /var/repos:

/var % ll | grep repos
drwxr-xr-x  4 scm  scm   4.0K 2008-10-05 19:44 repos/

~scm % ll      
drwx------ 3 scm scm 4.0K 2008-10-05 19:33 hg/
-rw-r--r-- 1 scm scm   47 2008-10-05 19:35 hgweb.conf
-r-x------ 1 scm scm 1.6K 2008-10-05 19:10 hgwebdir.fcgi*

~scm % cat hgweb.conf
[collections]
hg/ = hg/

В /etc/lighttpd/lighttpd.conf добавил следующие строки:

server.modules += ("mod_fastcgi")

url.rewrite += (
    "^/hg(/?.*)$"           => "/hg.fcgi$1",
    "^/mercurial([/?].*)?$" => "/hg.fcgi$1" )

fastcgi.server += ( "/hg.fcgi" => (( "socket" => "/var/tmp/hg.socket" )) )

В /var/www добавлен файл hg.fcgi (нужно ли?).

Пользователь www-data, от которого стартуется лайти, добавлен в 
группу scm.

Рестартю лайти, запускаю spawn-fcgi:

spawn-fcgi -f ~scm/hgwebdir.fcgi -s /var/tmp/hg.socket -C ~scm -P /var/run/hg.pid -u scm -g scm

Создается сокет:

% ll /var/tmp | grep hg.socket                                                                 
srwxrwx--- 1 scm       scm          0 2008-10-05 19:59 hg.socket=

Смотрим в фоксе localhost/hg:

403 - Forbidden

Черт!

Помогите пожалуйста настроить :)
anonymous

Увы, помочь ничем не могу :) У меня связка hg.balancer.ru поднялась
сразу же, без настроек и бубнов.

Конфигами, понятно, могу поделиться.

== /etc/lighttpd/vhosts/hg.balancer.ru.conf ==
$HTTP["host"] == "hg.balancer.ru" {
    fastcgi.server = (
        "/hgwebdir" => (
            "hgwebdir" => (
                "socket" => "/var/run/lighttpd/hgwebdir.sock",
                "bin-path" => "/var/www/fcgi/hgwebdir.fcgi",
                "check-local" => "disable"
            )
        ),
    )

    url.rewrite-once = (
        "/hgwebdir.*" => "$0",
        "^/(.*)" => "/hgwebdir/$1"
    )

    accesslog.filename          = "/var/log/apache2/balancer.ru/hg-access.log"

    $HTTP["querystring"] =~ "cmd=unbundle" {
        auth.backend = "htdigest"
        auth.backend.htdigest.userfile = "/var/mercurial/hg_push.htdigest"
        auth.require = (
            "" => (
                "method" => "digest",
                "realm"  => "repos",
                "require" => "valid-user"
            )
        )
    }
}




== /var/www/fcgi/hgwebdir.fcgi ==
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
from flup.server.fcgi import WSGIServer

def make_web_app():
    return hgwebdir("hgweb.config")

WSGIServer(wsgiapplication(make_web_app)).run()

== /var/www/fcgi/hgweb.config ==
[collections]
/var/mercurial = /var/mercurial

[web]
style = paper

Наверняка что-то ещё забыл, справшивай.

...

Да, Gentoo, www-servers/lighttpd-1.4.20, dev-util/mercurial-1.0.1-r2

KRoN73 ★★★★★
()
Ответ на: комментарий от tailgunner

> google://lighttpd site:selenic.com, может, и найдешь что :)

ТоварищЪ, вы открыли мне глаза...

anonymous
()
Ответ на: комментарий от KRoN73

Еще хотелось бы узнать какие у вас права на ключевые файлы/директории.

anonymous
()
Ответ на: комментарий от anonymous

>А hgwebdir.fsgi у вас стартит лайти или он отдельно запускается?

Лайти запускает. Собственно, об этом его конфиг и пишется.

Права - да какие попало :) *.fcgi - 0555, /var/mercurial и подкаталоги - 0755, файлы - 644. Владелец - юзер lighttpd.

KRoN73 ★★★★★
()
Ответ на: комментарий от Sphinx

Я по нему и делал :) Однако у меня не получилось. Также у вас там по моему ошибка:

fastcgi.server += ( "/hg.fcgi" => (( "socket" => "/var/tmp/hg.socket" )) )

Здесь вы натравливаете лайти на hg.socket, а вот здесь:

name="hgwebdir"
rcvar=`set_rcvar`

load_rc_config $name

pidfile=/var/run/${name}.pid
procname="python"
socket=/var/tmp/${name}.socket

command="/usr/local/bin/spawn-fcgi"
command_args=" -f /home/scm/hg/hgwebdir.fcgi -s ${socket}
               -C /home/scm/hg -P ${pidfile} -u scm"


запускаете hgwebdir.fcgi с сокетом hgwebdir.socket.

К тому же создавать репозитарий в /home/scm на мой взгляд неправильно, лучше в /var/repos, который у меня $HOME для scm.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, на сервере действительно прописано `"/hg.fcgi" => (("socket" => "/var/tmp/hgwebdir.socket"))`, поправил.

Sphinx ★★☆☆
()

Перенес hgwebdir.fcgi и hgweb.conf в /var/www/fcgi, изменил в hgweb.conf:

[collections]
/var/repos/hg = /var/repos/hg

в /etc/lighttpd/lighttpd.conf вписал:

url.rewrite += (
    "^/hg(/?.*)$"           => "/hg.fcgi$1",
    "^/mercurial(/?.*)$"    => "/hg.fcgi$1" )

fastcgi.server += (
    "/hg.fcgi" => (( "socket"      => "/var/run/lighttpd/hgwebdir.sock",
                     "bin-path"    => "/var/www/fcgi/hgwebdir.fcgi")))

и все равно 403 - Forbidden :( Хз что ему надо, лайти стартурт, создает процессы и сокеты hgwebdir.fcgi.

Может я в конфиге лайти что напутал? Без /hg.fcgi можно как-нибудь обойтись, чтобы напрямую было?

anonymous
()
Ответ на: комментарий от anonymous

> Запусти hgwebdir.fcgi с-под консоли и посмотри на реакцию.

Ну он выдал хтмл-код, который и должен быть, наверное.

ps а каким образом узнать что выдает unix-сокет?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.