|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> WWW
—> svn+apache+trac
Установка и настройка SVN сервера с доступом к репозиториям по http протоколу.
Автор: FenX.
Понадобился мне как-то svn сервер,
да ещё и с возможностью просматривать содержимое репозиториев
в самом обыкновенном браузере,
Без каких-то там ssl и прочей приблуды.
"Прогуглив" тонну статей таки поставил сервер...
После 2х дней колупаний, решил накатать статью, может кому пригодится :)
Итак, имеем:
$ uname -r
7.0-RELEASE-p6
Задачи:
Система контроля версий ( Subversion )
Доступ к репозиториям по http протоколу ( Apache )
Красивая "web морда" для репозиториев.
( Я использую Trac, о чём и тут напишу, а так "морд" полно :) )
Установка:
Ставим mysql
Для хранения правил, груп, и логов Trac`a будем использовать базы mysql.
Всё-таки рекомендую устанавливать mysql самым первым из списка, по разного рода соображениям :)
Очень не плохую статью по mysql`у написал Lissyara,
рекомендую с ней ознакомиться http://www.lissyara.su/?id=1189
Для тех, кому лень читать - краткий курс молодого бойца:
Всё это делать не обязательно и, если mysql уже есть в системе, вполне можно использовать имеющуюся версию.
$ pkg_info | grep mysql
и если есть, то данный шаг пропускаем, иначе:
$ cd /usr/ports/databases/mysql50-server
$ make WITH_CHARSET=utf8 WITH_COLLATION=cp1251_bin \
BUILD_OPTIMIZED=yes BUILD_STATIC=yes \
&& make install clean
Ставим apache httpd server
Я ставил индейца 2.2, но думаю что это не принципиально :)
на момент установки, в портах была версия 2.2.9
$ cd /usr/ports/www/apache22
$ make config
[X] THREADS Enable threads support in APR
[X] BDB Enable BerkeleyDB dbm
[X] SVN Enable Subversion support
[X] DAV Enable mod_dav
[X] DAV_FS Enable mod_dav_fs
| $ make install clean
Собираем python
Python нужен для работы Trac системы.
Проверяем, установлен ли уже питон:
$ pkg_info | grep python
Если ответ положительный, что более чем вероятно (в списке появится что-то типа: pythonХХ-х.х.х),
То просто пропускаем этот шаг, если же питон не установлен, то:
$ cd /usr/ports/lang/python25
$ make config
Убираем пункты:
[ ] IPV6 Enable IPv6 support
| $ make install clean
Ставим subversion
Для версии 1.5.4_2
$ cd /usr/ports/devel/subversion
$ make config
[X] MOD_DAV_SVN mod_dav_svn module for Apache 2.X
[X] NEON WebDAV/Delta-V repo access module (neon)
[X] BDB db4 repository backend
| $ cd ../py-subversion
$ make install clean
Установка trac
На момент установки в портах была версия 0.11.2
$ cd /usr/ports/www/trac
(все опции оставил по дефолту)
$ 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
| Конфигурируем начальные параметры:
# e-mail администратора :)
ServerAdmin admin@domain.com
# Адрес вашего сервера
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
# Несколько стандартных опций, которые не указаны в httpd.conf,
# но нужны для нормальной работы апача :)
Include etc/apache22/extra/httpd-default.conf
| Теперь самое главное - создаём свои "хосты" :)
Вообще - просто мне так удобнее,
когда репозиторий доступен не по domain.com/svn, а по svn.domain.com...
Поэтому я пошёл путём разбивки на виртуальные хосты.
Да и может позже пригодиться,
когда понадобиться прикрутить на одну машину более одного сайта :)
Итак:
$ edit /usr/local/etc/apache22/extra/httpd-vhosts.conf
Удаляем все приведённые там примеры хостов и создаём свои:
<VirtualHost *:80>
# e-mail админа сервера.
ServerAdmin admin@domain.com
# корень хоста.
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
# это связано с тем, что svn сервер будет искать корень репозитория
# по пути от корня, указанного в этой дерективе.
# и дабы в последствии избежать ошибок её можно убрать)
# если же svn сервер будет не корнем хоста,
# то корень svn`а должен располагаться на уровень ниже от DocumentRoot пути.
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
# корень SVN сервера, где будут храниться репозитории.
SVNParentPath /usr/local/www/apache22/svn
# тип авторизации. basic - использовать авторизацию по htpasswd
AuthType Basic
# сообщение в окне авторизации :)
AuthName "My SVN Server"
# фаил содержащий пароли для авторизации.
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 и перечень пользователей в неё входящих.
devel = FenX, Admin, Tartos
# группа занимающаяся переводами.
trans = Jarek
# корень нашего SVN сервера
[/]
# доступ для анонимов на чтение.
* = r
# директория проекта myproject
[myproject:/]
# группе devel глобально разрешено чтение\запись
@devel = rw
# директория translate в репозитероии myproject
[myproject:/translate]
# группе trans разрешено чтение\запись.
@trans = rw
# директория разработчиков.
[myproject:/development]
# запрет для всех пользователей.
* =
# разрешён доступ на чтение\запись только группе девелоперов.
@devel = rw
| Ну с этим думаю всё :)
Создаём trac проект
$ trac-admin /usr/local/www/apache22/trac/proj initenv
!!! Комментариями указаны опции, которые необходимо указывать !!!
# указываем имя проекта. ex.: My SVN Project
Project Name [My Project]>
# mysql://trac:ваш_пароль@localhost/trac
Database connection string [sqlite:db/trac.db]>
# оставить как есть, т.е. просто тыкаем enter :)
Repository type [svn]>
# путь до корня репозитория. ex.: /usr/local/www/apache22/svn/myproject
Path to repository [/path/to/repos]>
| Добавляем нашего админа:
$ 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.
Ну вот в принципе и всё.
Проект полностью настроен.
Теперь запускаем:
$ echo 'apache22_enable="YES"' >> /etc/rc.conf
$ /usr/local/etc/rc.d/apache22 start
Если всё ок, то проверяем работает ли :)
$ ps axw | grep httpd
580 ?? Ss 0:02,64 /usr/local/sbin/httpd -DNOHTTPACCEPT
3489 ?? I 0:00,03 /usr/local/sbin/httpd -DNOHTTPACCEPT
.....
3534 ?? I 0:00,02 /usr/local/sbin/httpd -DNOHTTPACCEPT
| Если и у вас так же, то заходим по ссылке:
http://svn.domain.com/myproject
Сверху должно быть что-то типа
А внизу
Powered by Subversion version 1.5.1 (r32289).
| если это так, то всё гут :)
теперь проверяем трак:
http://proj.domain.com
Если открылся трак и даже без мата, то значит всё вообще гут :)
Надеюсь что ничего не забыл.
Ну и конечно комментарии приветствуются :)
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=8418.
размещено: 2008-05-23,
последнее обновление: 2009-04-13,
автор: FenX
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs
Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD
Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC
Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat
Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot
Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless
Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение
Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга
Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
|
Комментарии пользователей [18 шт.]