The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Установка и настройка доступа к mercurial по http через nginx в Debian/Ubuntu (mercurial cvs http nginx)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: mercurial, cvs, http, nginx,  (найти похожие документы)
From: DebianWorld.Ru <debian.world.ru@gmail.com.> Newsgroups: email Date: Mon, 11 Nov 2009 17:02:14 +0000 (UTC) Subject: Установка и настройка доступа к mercurial по http через nginx в Debian/Ubuntu Оригинал: http://debianworld.ru/articles/ustanovka-i-nastrojka-dostupa-k-mercurial-po-http-cherez-nginx-v-debian-ubuntu/ Введение Mercurial - это кросплатформенная распределённая система управления версиями (DCVS). Основная часть кода написана на языке Python, а наиболее чувствительные к производительности части выполнены в качестве Python-расширений на C. В настоящее время Mercurial используют такие проекты, как: Python, Netbeans, Mozilla и Mozdev, OpenOffice.org и многие другие. Одной из самых распространенных задач, возникающих после установки Mercurial является настройка доступа к репозиториям по http-протоколу. Эта задача с точки зрения "Организации доступа на чтение к Mercurial через Apache/mod_wsgi"). Далее будет описан вариант доступа на чтение/запись с помощью http-сервера nginx. Общая схема развертывания следующая: * http-сервер nginx будет принимать все соединения с Mercurial * для запросов на изменение nginx будет запрашивать логин/пароль * запросы на чтение и успешные запросы на запись будут проксироваться на встроенный в Mercurial http-сервер Установка Nginx, Mercurial В первую очередь необходимо установить http-сервер nginx и mercurial: $ sudo aptitude install nginx mercurial Настройка Mercurial После того, как система контроля установлена, необходимо обеспечить безопасный доступ к репозиториям. Пользователь и директория для репозиториев Mercurial В первую очередь, необходимо создать нового пользователя, в домашнем каталоге которого будут находиться все репозитории mercurial: $ sudo adduser --home /home/hg --disabled-password hg Далее, необходимо создать директории для репозиториев и лог-файлов: $ sudo -u hg mkdir /home/hg/repos $ sudo -u hg mkdir /home/hg/logs И в конце, выставить права доступа на директории: $ sudo chmod u=rwx,g=rwx,o= -R /home/hg Не лишним так же будет добавить информацию о пользователе mercurial: $ sudo su - hg $ echo "[ui]" > ~/.hgrc $ echo "username = DebianWorld.Ru <debian.world.ru@gmail.com.>" >> ~/.hgrc Новый репозиторий Mercurial После того, все подготовительный процедуры выполнены, можно создавать репозиторий и делать первую правку в нем # Все действия будут выполняться от пользователя hg $ sudo su - hg # Создается новый репозиторий $ hg init ~/repos/Debian.World.Ru # Вносится изменение - создается новый файл $ cd ~/repos/Debian.World.Ru/ $ echo "Mercurial on DebianWorld.Ru" > read.me # Проверка видимости изменений $ hg status ? read.me # Добавление файла в репозиторий $ hg add adding read.me # Внесение изменений в проект $ hg ci -m "init revision" Настройка доступа к репозиториям mercurial После того, как репозиторий создан и сделаны первые правки, можно приступать к настройке доступа по http. В первую очередь создается файл настроек для публикации проектов: # продолжается выполнение команд от пользователя hg $ vim ~/repos/hgweb.config В него вносится информация о том, где располагаются имеющиеся репозитотрии (в нашем случае он один, но теоретически их может быть много): [collections] /home/hg/repos = /home/hg/repos Левая часть - это префикс пути, который надо убрать из URL адреса. Правая часть - полный путь к каталогу, где содержатся репозитории. Например, если была бы строка / = /home/hg/repos, то URL репозитория был бы http://hg.debianworld.ru/home/hg/repos/DebianWorld.Ru. А так, указывая, что надо исключать /home/hg/repos, новый URL репозитория будет http://hg.debianworld.ru/DebianWorld.Ru. Далее, в проекте пишем права доступа. Открываем файл: # продолжается выполнение команд от пользователя hg $ vim ~/repos/Debian.World.Ru/.hg/hgrc Пишем: [web] style = gitweb push_ssl = false allow_push = * Таким образом: * отключается SSL (чего вполне достаточно для большинства не коммерческих проектов) * позволяется выполнять изменения всем пользователям, так как функцию аутентификации берет на себя nginx (см. далее) Настройка Nginx Следующим шагом, необходимо настроить nginx на прием соединений к репозиториям, проверку логина/пароля при внесении изменений и проксирование содинение на встроенный сервер Mercurial. Создание виртуального хоста Nginx Чтобы создать виртуальный хост, необходимо создать файл: $ sudo vim /etc/nginx/sites-available/hg.debianworld.ru И вписать в него: upstream backend { # адрес mercurial http-севера server 127.0.0.1:8080; } server { listen 80; server_name hg.debianworld.ru; access_log /home/hg/logs/nginx_access.log; error_log /home/hg/logs/nginx_error.log crit; location / { # ограничение доступа на запись limit_except GET { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.hg.htpasswd; proxy_pass http://backend; } proxy_pass http://backend; } } Далее, необходимо включить хост: $ sudo ln -s /etc/nginx/sites-available/hg.debianworld.ru \ /etc/nginx/sites-enabled/hg.debianworld.ru Чтобы новый хост заработал, необходимо перестартовать nginx: $ sudo /etc/init.d/nginx restart Настройка учетных записей (htpasswd) Следующим шагом необходимо заполнить файл учетных записей, которым позволено вносить изменения в репозиторий. Делается это с помощью утилиты htpasswd. Если apache никогда не устанавливался на машине, то необходимо установить пакет apache2-utils, чтобы была возможность работать с этой утилитой: $ sudo aptitude install apache2-utils После того, как пакет поставлен, можно создавать пользователей: # Создается файл учетных записей и вносится пользователь hgviewer $ sudo htpasswd -c /etc/nginx/.hg.htpasswd hgviewer # Вносится пользователь hgother $ sudo htpasswd /etc/nginx/.hg.htpasswd hgother Запуск встроенного сервера Mercurial После того, как настроен mercurial,nginx и создан файл паролей, можно запускать встроенный в mercurial http-сервер на 8080 порту: $ sudo -u hg hg serve --webdir-conf /home/hg/repos/hgweb.config \ --address 127.0.0.1 --port 8080 --encoding utf8 Сервер запускается от пользователя hg, чтобы был доступ к репозиторию и правки вносились от его имени. указывается файл конфигурации доступных проектов. Для корректного отображения русских символов указывается кодировка utf8. Кроме того, если добавить опцию "--daemon", то сервер Mercurial будет работать как демон. Проверка доступа к репозиторию по http Все ниже следующие операции будут выполняться на удаленной машине, то есть не на той, где расположен Mercurial. Получение исходного кода: $ hg clone http://hg.debianworld.ru/Debian.World.Ru/ destination directory: Debian.World.Ru requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files updating working directory 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Создание локальных изменений: $ cd Debian.World.Ru $ echo "123" >> read.me $ hg status M read.me $ hg commit -m "second commit" Внесение изменений в проект: $ hg push pushing to http://hg.debianworld.ru/Debian.World.Ru/ searching for changes http authorization required realm: Restricted user: hgother password: adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, selfchief (?), 05:31, 23/11/2010 [ответить]  
  • +/
    А как сделать автозапуск hg serve? Точнее где бы взять скрипт инициализации?
     
  • 2, alecs (??), 10:31, 06/06/2011 [ответить]  
  • +/
    proxy_pass  http://backend;

    Убрать вторую строчку !!!
    Иначе всех пускать будет !

     
  • 3, Евгений (??), 17:34, 21/09/2011 [ответить]  
  • +/
    Скажите, как создать 1 пользователя администратора , который принимает правки , и пользователя разработчика , который может смотреть и загружать новые версии но без одобрения администратора , файл не будет изменен ??
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру