Установка и настройка subversion svn и web сервера apache

Установка Subversion и websvn на Debian

Данное руководство поможет вам установить и настроить subversion и websvn на Debian сервере с следующими фишками:

  • Множество репозиториев Subversion
  • Доступ к репозиторию через WEBDAV (http,https) и ssh
  • Защищенный websvn (php приложение для легкого просмотра исходного кода)
  • Настроенная подсветка синтаксиса в websvn с помощью gnu enscript

Я специально не буду настраивать inetd с svnserve в этом руководстве. В остальном Subversion будет работать отлично и без этого. Вы можете скопировать и вставить почти всё чтобы заставить всё работать.

Пакеты которые у вас уже должны стоять: В этом руководстве подразумевается что php, apache2 у вас уже установлены и настроены. Настройка apache2 с SSL опциональна.

Настройка Subversion

Пакеты Subversion
От имени рута введите следующие комманды для установки необходимых для Subversion пакетов:

# apt-get update
# apt-get install subversion
# apt-get install libapache2-svn

Пакет libapache2-svn автоматически установит модуль апача WebDAV subversion.

Создание репозиториев

Чтобы было с чем работать в этом руководстве, создадим пару репозиториев

# mkdir /var/svn-repos/
# svnadmin create –fs-type fsfs /var/svn-repos/project_zen
# svnadmin create –fs-type fsfs /var/svn-repos/project_wombat

Директориям этих репозиториев надо задать необходимые права для апача и других пользователей. Я сделаю группу и пользователей для этого ( Здесь не надо просто копировать и вставлять !!! )

Пользователь Апача не будет добавлен в группу тк я считаю это не безопасным.

# groupadd subversion
# addgroup john subversion
# addgroup bert subversion
# addgroup you subversion
…
# chown -R www-data:subversion /var/svn-repos/*
# chmod -R 770 /var/svn-repos/*

Давайте установим простое ssh соединение, на пользовательской машине наберите слудющие комманды:

$ mkdir ~/.ssh/
$ cd ~/.ssh/
$ ssh-keygen -t dsa
$ cat ~/.ssh/id_dsa.pub | ssh you@example.com “cat - >> ~/.ssh/authorized_keys”

(!ads)

Сервер example.com это сервер где установлен наш Subversion. Для упрощенного использования ssh вы можете выбрать не использовать кодовую фразу в вашем ключе или использовать агента чтобы оставатьсся авторизованым. В противном случае кажду транзакцию между вашей машиной и сервером Subversion вам придется указывать пароль, что очень не удобно. Использовать агента можно примерно так:

$ ssh-agent
$ ssh-add
$ ssh you@example.com

Теперь все настроено, чтобы использовать репозиторий. Вы можете проверить это как показано ниже, импортируем и извлекаем:

$ mkdir ~/TEMP/
$ echo “testing svn” > ~/TEMP/testing.txt
$ svn import -m “importing test over ssh+svn” ~/TEMP/ svn+ssh://example.com/var/svn-repos/project_zen/trunk
$ svn co svn+ssh://example.com/var/svn-repos/project_zen/trunk testcheckout

Результатом буде файл testing.txt в директории testcheckout. На стороне сервера вы можете проверить репозиторий с помощью комманды svnlook.

# svnlook tree /var/svn-repos/project_zen/

Настройка Subversion WebDAV

Обычно модуль апача будет активирован по умолчанию, чтоы убедиться что это так наберите следующие комманды:

# a2enmod dav
# a2enmod dav_svn

Конфигурация хранится в файле /etc/apache2/mods-available/dev_svn.conf , но сначала сделаем файл доступа.

# htpasswd2 -c /etc/apache2/dav_svn.passwd you
# htpasswd2 /etc/apache2/dav_svn.passwd john
# htpasswd2 /etc/apache2/dav_svn.passwd sten
…

Это содержимое моего /etc/apache2/mods-available/dav_svn.conf :

  DAV svn
  SVNPath /var/svn-repos/project_zen
  AuthType Basic
  AuthName “Subversion Repository”
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
  SSLRequireSSL

  DAV svn
  SVNPath /var/svn-repos/project_wombat
  AuthType Basic
  AuthName “Subversion Repository”
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
  SSLRequireSSL

Вы можете закомментировать строчку SSlRequireSSL если вам не нужно шифрование, но тогда замените https на http в следующих коммандах.
Апач должен быть перезагружен и мы сможем проверить как то работает с пользовательской машины.

# /etc/init.s/apache2 restart
$ svn import -m “testing over https” https://example.com/svn_wombat ~/TEMP/

Настройка websvn

Необходимые пакеты:
Чтобы работать с websvn нам потребуется установить следующие пакеты, за которыми последуют конфигурационные экраны которые вы увидите ниже.

# apt-get install enscript
# apt-get install websvn

Enscript не обязателен, но нам он будет полезен для подсветки синтаксиса в websvn.

Настройка

Enscript спросит у вас про размеры бумаги, что может показаться странным, но он это потому что enscript используется так же для конвертации ASCII файлов в PostScript. Нам нужны только его способности по подсвветке синтаксиса.
Websvn в первую очередь спросить для какого типа сервера мы его настраиваем, просто нажмите enter.
Следующие экраны спросят вас о радительской директории репозиториев ( /var/svn-repos/ в нашем случае) и конкретных директориях репозиториев, что определит какие именно репозитории появятся в websvn. Мы лишь введем родительский каталог, поэтому все репозитории появятся в websvn. Если вы хотите показать только определенные репозитории, то введите полные пути на втором экране , а родительский каталог не заполняйте.
В результате настройки у вас получится файл /etc/websvn/svn_deb_conf.inc Вы можете перенастроить пакет заново используя dpkg-reconfigure . Дальнейшая настройка websvn будет в файле /etc/websvn/config.inc. Это содержимое этго файла у меня , для подсветки синтаксиса:

setTemplatePath(”$locwebsvnreal/templates/Standard/”);
// $config->setTemplatePath(”$locwebsvnreal/templates/BlueGrey/”);
// $config->setTemplatePath(”$locwebsvnreal/templates/Zinn/”);
// $contentType[".c"] = “plain/text”; // Create a new association
// $contentType[".doc"] = “plain/text”; // Modify an existing one
unset($contentType[".sh"]); // Remove a default association -> .sh is regarded as a binary file by default, needs to be unset
// — COLOURISATION —
// Uncomment this line if you want to use Enscript to colourise your file listings
//
// You’ll need Enscript version 1.6 or higher AND Sed installed to use this feature.
// Set the path above.
//
$config->useEnscript();
// Enscript need to be told what the contents of a file are so that it can be colourised
// correctly.  WebSVN includes a predefined list of mappings from file extension to Enscript
// file type (viewable in setup.inc).
//
// Here you should add and other extensions not already listed or redefine the default ones. eg:
//
// php is default correctly colourized
$extEnscript[".java"] = “java”;
$extEnscript[".pl"] = “perl”;
$extEnscript[".py"] = “python”;
$extEnscript[".sql"] = “sql”;
$extEnscript[".java"] = “java”;
$extEnscript[".html"] = “html”;
$extEnscript[".xml"] = “html”;
$extEnscript[".thtml"] = “html”;
$extEnscript[".tpl"] = “html”;
$extEnscript[".sh"] = “bash”;
// — MISCELLANOUS —
// Uncomment this if you don’t have the right to use it.  Be warned that you may need it however!
set_time_limit(0);
// Comment this line to turn off caching of repo information.  This will slow down your browsing.
$config->setCachingOn();
// Number of spaces to expand tabs to in diff/listing view across all repositories
$config->expandTabsBy(8);
// To change the global option for individual repositories, uncomment and replicate
// the required line below (replacing ‘myrep’ for the name of the repository to be changed).
// $config->findRepository(”myrep”)->expandTabsBy(3); // Expand Tabs by 3 for repository ‘myrep’
?>

Далее настроим виртуальных хост апача для websvn
Пример с использованием SSL:

ServerAdmin webmaster@example.com
    ServerName svn.example.com
    DocumentRoot /var/www/websvn/

Options FollowSymLinks
order allow,deny
allow from all
AuthType Basic
AuthName “Subversion Repository”
Require valid-user
AuthUserFile /etc/apache2/dav_svn.passwd 

php_flag magic_quotes_gpc Off
php_flag track_vars On

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem

И без SSL:

ServerAdmin webmaster@example.com
        ServerName svn.example.com
        DocumentRoot /var/www/websvn/

Options FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthType Basic
AuthName “Subversion Repository”
Require valid-user
AuthUserFile /etc/apache2/dav_svn.passwd 

php_flag magic_quotes_gpc Off
php_flag track_vars On

2 Responses to “Установка и настройка subversion svn и web сервера apache”

  1. Настройка сервера для php и django сайтов: nginx, apache2, mysql,uWSGI | Статьи про IT Says:

    [...] Про настройку Subversion я уже писал в материале «Установка и настройка subversion svn и web сервера apache» [...]

  2. Дмитрий Says:

    Отлично !!! как раз пишу дипломную прогу для управления медиапроектами как раз хочу использовать в модуле который реализует управления файлами

Leave a Reply