Установка и настройка 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
Апрель 17th, 2011 at 14:35
[...] Про настройку Subversion я уже писал в материале «Установка и настройка subversion svn и web сервера apache» [...]
Май 12th, 2011 at 23:00
Отлично !!! как раз пишу дипломную прогу для управления медиапроектами как раз хочу использовать в модуле который реализует управления файлами