Установка Hg (mercurial) на Linux CentOS с доступом по http(s)

Версия ос CentOS

cat /etc/redhat-release
CentOS release 6.7 (Final)

В репозитории ос hg очень старый. По этому скачаем более свежую версию, заходим сюда https://www.mercurial-scm.org/wiki/Download

Выбираем нужный дистрибутив, выбрал centos 6, попал сюда: https://www.mercurial-scm.org/release/centos6/RPMS/x86_64/

Выбрал нужную версию hg (в данном случае mercurial-3.9.1), переходим на vps через ssh и устанавливаем:

rpm -Uvh https://www.mercurial-scm.org/release/centos6/RPMS/x86_64/mercurial-3.9.1-1.x86_64.rpm

Проверяем версию:

hg --version
Распределенная SCM Mercurial (версия 3.9.1)
(see https://mercurial-scm.org for more information)

Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Подразумевается что веб сервер у вас установлен. У меня на vps стоит веста панель и там уже установлена связка httpd (apache) и nginx.

По этому идём в стандартную папку для веста панели и создадим хост, где будут лежать репозитории:

cd /home/admin/web

У вас пути могут различаться. Создадим папку хоста:

mkdir repository

И перейдём в папку:

cd repository

Создадим файл конфига:

touch hgweb.config

Создадим папку для репозитория:

mkdir project1

Теперь нужно скопировать cgi скрипт (hgweb.cgi) hg в папку хоста. Он уже готовы и лежит в папке: /usr/share/doc/mercurial-Ваша_версия_из_названия. Копируем:

cp /usr/share/doc/mercurial-3.9.1/hgweb.cgi /home/admin/web/repository

Если не смогли его найти папку mercurial-3.9.1, ни чего страшного идите в папку и найдите вручную эту папку с вашей версией.

Открываем для редактирования файл hgweb.cgi (людым доступным и удобным редактором):

nano /home/admin/web/repository/hgweb.cgi

Находим параметр “config =” и вставляем наш путь к файлу конфига (который мы создали ранее):

#!/usr/bin/env python
#
# An example hgweb CGI script, edit as necessary
# See also https://mercurial-scm.org/wiki/PublishingRepositories

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/var/www/repository/hgweb.config"

# Uncomment and adjust if Mercurial is not installed system-wide
# (consult "installed modules" path from 'hg debuginstall'):
#import sys; sys.path.insert(0, "/path/to/python/lib")

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
config = "/home/admin/web/repository/hgweb.config"

Сохраняем. Открываем для редактирования конфиг hgweb.config:

nano /home/admin/web/repository/hgweb.config

Вставляем в него параметры и сохраняем:

[web]
allow_push = *
push_ssl = false
base_url = /

[paths]
HostName1.ru = /var/www/repository/HostName1.ru/
HostName2.ru = /var/www/repository/HostName2.ru/
HostName3.ru = /var/www/repository/HostName3.ru/

Обратите внимание что я вставил название созданного репозитория.

Http доступ к hg

Теперь надо настроить http доступ к репозиторию. Для этого надо добавить хосты в веб сервер. Например для httpd (apache) надо добавить в файле /etc/httpd/conf/httpd.conf

Вставляем хост:

<VirtualHost XX.XX.XX.XX:80>
ServerName hg.HostName.ru
AssignUserID user user
DocumentRoot /var/www/repository/
ScriptAliasMatch (.*) /var/www/repository/hgweb.cgi/$1

<Directory "/var/www/repository/">
AllowOverride All
</Directory>

#AuthType Basic
#AuthName "Mercurial"
#AuthUserFile /var/www/repository/.htpasswd
#Require valid-user
</VirtualHost>

Переходим в папку с репозитарием

cd /var/www/repository/

Правим hgweb.config

[web]
encoding = UTF-8
#encoding = Windows-1251
templates = /var/www/themes/boundstate
style = boundstate
allow_push = *
push_ssl = false
base_url = /
descend = True
collapse = True

[paths]
#HostName1.ru = /var/www/repository/HostName1.ru/
#HostName2.ru = /var/www/repository/HostName2.ru/
/ = /var/www/repository/**

Создаем репозитарий

hg init HostName1.ru

Меняем владельца на репозиторий, на пользователя из под которого работает веб сервер

chown -R user:user /var/www/repository/HostName1.ru/

В каждой каталоге репозитария создаем файл hgrc

например /var/www/repository/HostName1.ru/.hg/hgrc

[web]
encoding = Windows-1251
description = Компоненты HostName1.ru
contact = micro
name = HostName1.ru
Micro
Author: Micro

///

Поделиться в социальных сетях
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии