Залил туда Gentoo, поставил вебсервер, mediawiki, ejabberd... Хотел поставить Google Wave, но в то время он был еще сырой, и не работал. Да и java на спарк не встает, во всяком случае у Gentoo не встает.
И тут, недавно, меня посетила еще одна мысль. Подниму ка я там scm сервер. Это позволит хранить отдельно всякие вне проектные рабочие разработки. Лишняя копия, как говорится, никогда не бывает лишней. Эта, пусть слабенькая, машинка прекрасно с справится с этой задачей.
Пусть простят меня поклонники Линуса Торвальдса - git мне никогда не нравился, хотя мне приходилось им пользоваться. На данный момент мне нравится Mercurial.
Согласно этой инструкции мы настраиваем пользователя и наслаждаемся репозиторием через ssh.
Борьба с вебмордой неожиданно затянулась. Хоть для меня скорость и не является решающим фактором - я старательно следовал инструкциям по настройке fastcgi, но добился лишь того, что я могу ходить на сервер от корня (от http://.../hg), но попытка ввести что нибудь после /hg неизменно приводит к проблемам. Сервер перенаправляет /hg на /hg.fcgi и других запросов упорно не хочет принимать. Ну не писать же везде /hg.fcgi/blablabla... лишнее.
А поскольку скорость не является для меня решающим фактором - я в конце концов нашел официальную инструкцию по настройке cgi под lighttpd. Она попроще и после нее все работает почти сразу.
Для коммитоов https не нужен, настроим авторизацию на пуш согласно той же официальной инструкции.
Но возникла проблема. htpasswd - является частью апача и в комплект lighttpd не входит. Ну не ставить же апач ради такой фигни? Значит можно выбрать другой метод авторизации. Меня бы устроила встроенная авторизация на основе /etc/passwd, но так lighttpd кажется не умеет. Здесь описаны возможность mod_auth. Генерируем /home/scm/.htdigest с его помощью.
$HTTP["querystring"] =~ "cmd=unbundle" { auth.require = ( "" => ( "method" => "digest", "realm" => "Mercurial repo", "require" => "valid-user" )) } auth.backend = "htdigest" auth.backend.htdigest.userfile = "/home/scm/.htdigest"Но этого недостаточно. Нужно еще в конкретном репозитории разрешить не-ssl пушинг, и прописать юзеров, которые могут это делать.
scm@sparc ~/hg/xap/.hg $ cat hgrc [web] push_ssl = false allow_push = dron
Теперь можно проверить... (я конечно и в процессе неоднократно проверял, сейчас финальный тест)
$ hg clone http://10.4.2.91/hg/xap ... 10 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd xap $ echo "Ридми я до сих пор не написал" > readme.txt $ hg add readme.txt $ hg commit -m "Тестовый коммит" $ hg push pushing to http://10.4.2.91/hg/xap searching for changes http authorization required realm: Mercurial repo user: dron@infosec.ru password: abort: authorization failedТудыть ее... А, забыл lighttpd перезагрузить...
... user: dron password: abort: HTTP Error 500: Internal Server ErrorДоступа чтоль не хватает?
$ cd /home/scm/hg; chmod -R g+w *(Пользователь lighttpd у нас включен в группу scm). А вот и нет... недостаточно... только
$ cd /home/scm/hg; chown -R lighttpd:lighttpd *спас сервер. Не понятно. Везде для групп стоит rw, для каталогов - rwx. Но установка одной группы в lighttpd не спасает положение.
Теперь мне совсем не ясно - зачем я заводил юзера scm? Хотя может быть для fcgi (с отдельной службой, вероятно работающей от имени scm) это и было нужно. Но пусть пока будет так.
Остались несколько проблем, и https не самая большая из них. Вот самая большая:
$ hg push ... user: dron@infosec.ru password: abort: authorization failed $ hg push ... user: dron password: adding changesets add changeset a63be34dcf21 adding manifests adding file changes adding readme.txt revisions added 1 changesets with 1 changes to 1 files updating the branch cacheВот так, dron в качестве имени - воспринимает, а dron@infosec.ru - нет. Вероятно проблема где-то mod_auth, потому что не сходится авторизация. И что с этим делать?..