Previous Entry Share Next Entry
Как настроить публичный репозиторий на Ртути.
zhtw
Я использую Ртуть. Я люблю Ртуть. Если хочется расшарить ртутный репозиторий по http, нет ничего проще, чем использовать встроенный http-сервер.

Просто запускаете hg serv и готово. Чтобы запустить hg serv с несколькими репозиториями, можно ему передать простой файлик конфигурации через ключ --web-conf:

hg serve --web-conf conf

В файлике conf должно быть что-то вроде этого:


[paths]
oop = /var/hg/k806/oop
da = /var/hg/k806/da
os = /var/hg/k806/os
algorithms = /var/hg/k806/algorithms


Можно также указать явно порт, на котором будет слушать встроенный веб-сервер, с помощью ключа -p.

Чтобы запускать сервер автоматически при старте системы и иметь возможность удобного перезапуска, а также ротирования логов, можно воспользоваться бернштейновскими daemontools (я бы даже сказал, нет инчего лучше для этих целей).

Что для этого нужно? Нужно создать каталог, где будет конфигурация вашего репозитория, например /etc/hg-k806. В этом каталоге нужно создать файлик run со следующим содержимым:


#!/bin/sh
exec setuidgid nobody envdir env sh -c 'hg serv -p $port --web-conf conf'


Туда же положить вышеуказанный файлик conf. Там же создать каталог env с файликом port, в который записать номер порта, на котором будет слушать сервер.

В принципе этого уже достаточно. Но если хочется ротировать логи, то можно еще создать подкаталог log с файликом run следующего содержания:


#!/bin/sh
exec multilog t /var/log/hg-k806


Сами репозитарии должны находится в тех местах, которые указаны в conf.

Все. Теперь, после создания символической ссылки на каталог /etc/hg-k806 из каталога /service (основного каталога, в котором svscan ищет конфигурации сервисов), веб-сервер будет стартовать автоматически. Управлять им можно стандартным способом утилитой svc:

svc -t /etc/hg-k806 — рестартовать,
svc -d /etc/hg-k806 — остановить,
svc -u /etc/hg-k806 — поднять и так далее.

Daemontools берет на себя всю заботу о логах, сохрании pid'а и пр.
Но самое удобное заключается в том, что скрипт run можно запускать и вручную, что удобно для отладки и позволяет автору сервера не думать о проблеме, которая решена уже миллион раз миллионом людей.

С тех пор как я узнал о daemontools, я использую их везде и для всего. Это чрезвычайно удобный набор утилит.
Важно заметить, что распространенный подход, когда каждая программа сама берет на себя заботу о сохранинии pid'а и пр. после daemontools кажется (и является!) убогим. Это, совершенно очевидно, очень плохой подход. Daemontools предоставляет настоящий unix way для демонизации серверов.

Ну и последнее. Если на сервере работает что-нибудь еще, кроме Ртутного веб-интерфейса, имеет смысл запускать его на каком-нибудь своем порту, а на 80 повесить nginx. Это полезно и для настройки виртуального хоста.

Вот фрагмент nginx.conf, который смотрит на наш hg-k806:


server {
 listen 80;
 listen [::]:80;
 server_name hg.k806.ru;
 location / {
  proxy_pass http://localhost:4080/;
 }
}


Как это все выглядит в жизни: hg.k806.ru. Или еще: hg.umc8.ru

?

Log in