Документация по ОС FreeBSD Суббота, 20.04.2024, 09:24
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Установка и настройка SVN сервера с доступом к репозиториям по http протоколу [2008]
Понадобился мне как-то svn сервер,
да ещё и с возможностью просматривать содержимое репозиториев
в самом обыкновенном браузере,
Без каких-то там ssl и прочей приблуды.
"Прогуглив" тонну статей таки поставил сервер...
После 2х дней колупаний, решил накатать статью, может кому пригодится :)

Итак, имеем: FreeBSD 6.3-RELEASE

Задачи:
Система контроля версий ( Subversion )
Доступ к репозиториям по http протоколу ( Apache )
Красивая "web морда" для репозиториев.
( Я использую Trac, о чём и тут напишу, а так "морд" полно :) )

Установка:
Ставим mysql
Для хранения правил, груп, и логов Trac`a будем использовать базы mysql.
Всё-таки рекомендую устанавливать mysql самым первым из списка, ибо он есть в зависимостях у Апача,
А моло ли что вам захочется установить из опций у индейца :)))

Очень не плохую статью по mysql`у написал Lissyara,
ознакомиться с ней можно тут: http://www.lissyara.su/?id=1189
Единственное отличее - я юзаю старенькую 4.1 )) Ну не люблю я 5ю версию :)
Посему мои 5 копеек:
Всё это делать не обязательно и, если mysql уже есть в системе, вполне можно использовать имеющуюся версию.
Проверяем, есть ли mysql в системе,
$ pkg_info | grep mysql
и если есть, то сносим его
$ cd /usr/ports/databases/mysqlXX-client && make deinstall
$ cd /usr/ports/databases/mysqlXX-server && make deinstall
$ cd /usr/ports/databases/mysql41-server
(Т.к. я не помню, с чем ставил mysql (давно было), я взял все параметры из статьи Лиса)
$ make WITH_CHARSET=cp1251 WITH_COLLATION=cp1251_bin \
WITH_LINUXTHREADS=yes BUILD_OPTIMIZED=yes \
BUILD_STATIC=yes WITHOUT_INNODB=yes \
&& make install clean


Ставим Apache 2.2.8
Я ставил индейца 2.2, но думаю что это не принципиально :)
на момент установки, в портах была версия 2.2.8
$ cd /usr/ports/www/apache22
$ make config

[X] BDB Enable BerkeleyDB dbm
[X] DAV Enable mod_dav
[X] DAV_FS Enable mod_dav_fs

$ make install clean

Собираем python 2.5
Python нужен для работы Trac системы.
Проверяем, установлен ли уже питон:
$ pkg_info | grep python
Если ответ положительный, что более чем вероятно (в списке появится что-то типа: pythonХХ-х.х.х),
То просто пропускаем этот шаг, если же питон не установлен, то:
$ cd /usr/ports/lang/python25
$ make config

Убираем пункты:
[ ] THREADS Enable thread support
[ ] IPV6 Enable IPv6 support

$ make install clean

Ставим Subversion 1.4.6
Ставилась версия 1.4.6_1
$ cd /usr/ports/devel/subversion
$ make config

[X] PYTHON Python bindings
[X] MOD_DAV_SVN mod_dav_svn module for Apache 2.X

$ make install clean

Установка Trac 0.10
На момент установки в портах была версия 0.10.4_1
$ cd /usr/ports/www/trac
$ make config

[X] SUBVERSION Support for subversion RCS

$ make install clean

Ставим mod_python
Для корректной работы Trac, нужна поддержка индейцем языка python.
$ cd /usr/ports/www/mod_python3
$ make install clean


Ставим mysql-python
Нужен для того, чтобы mysql научился понимать то,
что толкает ему питон, а в нашем случае это делает Trac :)
$ cd /usr/ports/databases/py-MySQLdb
$ make install clean


Итак, с установкой закончили.
Я не стал расписывать какая опция для каких целей указывалась,
Но ничего лишнего здесь нет, все они необходимы для нормальной функциональности :)
Если будет интересно что и для чего - можно поискать в гугле, или спросить в этой теме :)

Ну а пока - продолжим-с :)

Теперь всю эту громадину необходимо отконфигурировать...

Конфигурирование:
Конфигурируем Apache 2.2
$ edit /usr/local/etc/apache22/httpd.conf
Обычно, при сборке Subversion модули в конфиг добавляются сами,
если вдруг этого не произошло, то добавляем:
LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so

Добавляем подгрузку python_module:
LoadModule python_module libexec/apache22/mod_python.so

Конфигурируем начальные параметры:
ServerAdmin admin@domain.com # e-mail администратора :)
ServerName http://www.domain.com:80 # Адрес вашего сервера
DocumentRoot "/usr/local/www" # стартовая директория.

Находим первоначальный блок
<Directory />
 AllowOverride None
 Order deny,allow
 Deny from all
</Directory>

и заменяем его на
<Directory />
 Options Includes Indexes FollowSymLinks
 AllowOverride All
 Allow from all
</Directory>

Удаляем первоначальный блок управления сайтом,
который без коментов выглядит так:
<Directory "/usr/local/www/apache22/data">
 Options Indexes FollowSymLinks
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>

Он нам не понадобится.

ну и наконец убираем комментарии со следующих строк:
Include etc/apache22/extra/httpd-autoindex.conf
# Нужен для подгрузки некоторых стандартных директорий и алиасов.
Include etc/apache22/extra/httpd-vhosts.conf
# Управление виртуальными хостами :)
Include etc/apache22/extra/httpd-manual.conf
# Подгружает мануал по апачу, может пригодиться.
Include etc/apache22/extra/httpd-default.conf
# Несколько стандартных опций, которые не указаны в httpd.conf,
# но нужны для нормальной работы апача :)

Теперь самое главное - создаём свои "хосты" :)
Вообще - просто мне так удобнее,
когда репозиторий доступен не по domain.com/svn, а по svn.domain.com...
Поэтому я пошёл путём разбивки на виртуальные хосты.
Да и может позже пригодиться,
когда понадобиться прикрутить на одну машину более одного сайта :)

Итак:
$ edit /usr/local/etc/apache22/extra/httpd-vhosts.conf
Удаляем все приведённые там примеры хостов и создаём свои:
<VirtualHost *:80>
 ServerAdmin admin@domain.com
 # e-mail админа сервера.
 DocumentRoot "/usr/local/www/apache22/domain.com"
 # Директория под страничку :)
 ServerName domain.com
 # имя адреса, к которому привязан данный хост.
 ServerAlias www.domain.com
 # Дополнительное имя, по которому будут на этот хост попадать.
 ErrorLog "/usr/local/www/apache22/domain.com/error.log"
 # Лог ошибок для данного хоста
 CustomLog "/usr/local/www/apache22/domain.com/access.log" common
 # Лог передаваемой информации для данного хоста.
</VirtualHost>

Создаём хост для нашего SVN`a
<VirtualHost *:80>
 DocumentRoot "/usr/local/www/apache22/"
 ServerName svn.domain.com
 ErrorLog "/usr/local/www/apache22/svn-error.log"
 CustomLog "/usr/local/www/apache22/svn-access.log" common
 #
 # Это всё как и раньше, а вот тут сам блок для работы с SVN`ом.
 #
 <Location />
 DAV svn
 # говорит апачу какой модуль использовать для обработки информации.
 SVNListParentPath on
 # Разрешить просматривать корневой коталог
 # В принципе - бессмысленная опция, т.к. не работает при включении
 # анонимного доступа :)
 SVNParentPath /usr/local/www/apache22/svn
 # Корень SVN сервера, где будут храниться репозитории.
 AuthType Basic
 # Тип авторизации. basic - использовать авторизацию по htpasswd
 AuthName "My SVN Server"
 # Имя SVN сервера :) Будет отображаться в окне авторизации.
 AuthUserFile /usr/local/www/apache22/svn/svn-passwd
 # Фаил содержащий пароли для авторизации.
 AuthzSVNAccessFile /usr/local/www/apache22/svn/svn-access
 # Фаил с настройками прав доступа к репозиторию.
 #
 # Ниже приведён блок, с доступом на чтение для всех
 # Для чтения авторизация не нужна, для записи
 # - будет требоваться авторизация.
 # Если нужно чтобы и для чтения проходили авторизацию,
 # То заменить ВЕСЬ ниже следующий блок на Require valid-user
 #
 <LimitExcept GET PROPFIND OPTIONS REPORT>
 Require valid-user
 </LimitExcept>
 </Location>
</VirtualHost>

Теперь создаём блок для нашей "web морды" к SVN`у
<VirtualHost *:80>
 DocumentRoot "/usr/local/www/apache22/trac/proj"
 # Как и раньше - директория, где будет храниться трак :)
 ServerName proj.domain.com
 # Не забыли ещё, для чего это?)))
 ErrorLog "/usr/local/www/apache22/trac/proj-error.log"
 CustomLog "/usr/local/www/apache22/trac/proj-access.log" common
 # Ничего нового :)
 #
 # А вот собственно настройка самого проекта :)
 #
 <Location />
 SetHandler mod_python
 # подключаемый модуль, для обработки информации.
 PythonInterpreter main_interpreter
 # Использовать основной питоновский интерпретатор.
 PythonHandler trac.web.modpython_frontend
 # Думаю из названия модуля понятно,
 # что подрубить трак как веб страницу :)
 PythonOption TracEnv /usr/local/www/apache22/trac/proj
 # Путь к корню нашей мордашки :)
 #
 # Корневая директория
 # Т.е. по запросу какой ссылки будет выдаваться морда трака.
 # В нашем случае это proj.domain.com.
 # Если вместо / дописать что-то типа /trac
 # То трак откроется только по ссылке proj.domain.com/trac
 #
 PythonOption TracUriRoot /
 </Location>
 #
 # Блок утпарвелия логинами для трака.
 # В приведённом здесь примере trac будет использовать тот же фаил-базу,
 # что и subversion
 #
 <Location /login>
 AuthType Basic
 # тип авторизации
 AuthName "eA Rus Auth"
 # заголовок окна авторизации
 AuthUserFile /usr/local/www/free-source.org/svn/svn-passwd
 # фаил-база, содержащий логины и пароли.
 Require valid-user
 # выдаёт вывод окна ввода логина и пароля.
 </Location>
</VirtualHost>

Ну, думаю что Apache мы настроили :) Запускать его пока рановато, ибо будет много мата :)
Но зато уже отконфигурен и можно про него на время забыть :)

Конфигурируем mysql
Ну думаю, что конфигурацию mysql`а можно взять как-раз таки из статьи Лиса,
едиснтвенное - нам нужно создать свою базу и юзера для неё.
$ mysql -uroot -p

mysql> CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON trac.* TO trac@localhost IDENTIFIED BY 'указать_пароль';


Ну и всё собстно :)

Создаём все необходимые директории.
Ну для начала полистаем чуть выше и посмотрим, какие пути мы использовали.
Вот их все необходимо создать :)
А то ваш сервер вас такими словами обзывать будет :)

И так:
$ mkdir -p /usr/local/www/apache22/domain.com
$ mkdir -p /usr/local/www/apache22/svn
$ mkdir -p /usr/local/www/apache22/trac/proj
$ cd /usr/local/www/apache22/svn
$ mkdir myproject


Теперь выдаём права на директории:
$ chown -R www:www /usr/local/www
С правами всё)

Создаём репозиторий
$ svnadmin create /usr/local/www/apache22/svn/myproject

Теперь создаём фаил-базу с паролями для нашего репозитория.
$ htpasswd -cm /usr/local/www/apache22/svn/svn-passwd admin
Здесь:
htpasswd - утилита Apache`a, для генерации нужных нам паролей.
-cm - ключи
 ключ c - создать новый фаил, если уже есть - перезаписать.
 ключ m - использовать md5.
admin - имя пользователя, для которого будет добавлена запись.

Для добавления новых пользователей используйте команду:
$ htpasswd -m /usr/local/www/apache22/svn/svn-passwd user-name

Создаём фаил с привелегиями пользователей для репозитория.
$ edit /usr/local/www/apache22/svn/svn-access
[groups]
 # Блок, содержащий группы.
devel = FenX, Admin, Tartos
# Группа devel и перечень пользователей в неё входящих.
trans = Jarek
# Группа занимающаяся переводами.

[/]
 # Корень нашего SVN сервера
* = r
# Доступ для анонимов на чтение.
[myproject:/]
 # директория проекта myproject
@devel = rw
# группе devel глобально разрешено чтение\запись
[myproject:/translate]
 # директория translate в репозитероии myproject
@trans = rw
# группе trans разрешено чтение\запись.
[myproject:/development]
 # директория разработчиков.
* = 
# запрет для всех пользователей.
@devel = rw
#разрешён доступ на чтение\запись только группе девелоперов.

Ну с этим думаю всё :)

Создаём trac проект
$ trac-admin /usr/local/www/apache22/trac/proj initenv
!!! Комментариями указаны опции, которые необходимо указывать !!!
Project Name [My Project]> # Указываем имя проекта.
# mysql://trac:ваш_пароль@localhost/trac
Database connection string [sqlite:db/trac.db]>
Repository type [svn]> # Оставить как есть :)
Path to repository [/path/to/repos]> # /usr/local/www/apache22/svn/myproject

Добавляем нашего админа:
$ trac-admin /usr/local/www/apache22/trac/proj permission add admin TRAC_ADMIN

После того, как репозиторий будет создан, можно отредактировать его фаил конфигов.
$ edit /usr/local/www/apache22/trac/proj/conf/trac.ini
редактировать можно по своему вкусу :)
Там в основном мелочные настройки,
основные мы уже сделали при создании проекта trac`a.

Ну вот в принципе и всё.
Проект полностью настроен.

Теперь запускаем:
$ /usr/local/etc/rc.d/apache22 start
Если всё ок, то проверяем работает ли :)
Заходим по ссылкам:
_http://svn.domain.com/myproject
Сверху должно быть что-то типа
Revision 0: /

А внизу
Powered by Subversion version 1.4.6 (r28521).

если это так, то всё гут :)

теперь проверяем трак:
_http://proj.domain.com

Если открылся трак и даже без мата, то значит всё вообще гут :)

Надеюсь что ничего не забыл.

Ну и конечно комментарии приветствуются :)



Источник: http://www.lissyara.su/?id=1669
Категория: Установка и настройка | Добавил: oleg (25.05.2008) | Автор: FenX
Просмотров: 1407 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024