Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  hosting
  mod_gzip
  mod_log_sql
  mod_geoip
  mod_bandwidth
  mod_accounting
  mod_bunzip2
  mod_mp3
  mod_shapvh
  mod_limitipconn
  mod_sqlinclude
  mod_auth_imap
  webalizer
  Apache + SSL
  auth_ldap
  Настройка AWStats
  apache 2.0
  mod_auth_external
  CMS - TYPO3
  phpBB-2/3
  mod_ntlm
  mod_ntlm2
  Nginx+php+fcgi
  OTRS на Apache1
  OTRS на Apache20
  ApacheStats
  mod_evasive
  Lighttpd
  nginx+php-fpm+mysql
  php + mssql
  MySQL + кодировки
  svn+apache+trac
  php5-oci8
  Lighttpd + Apache
  CMS Drupal 6.9
  Apache22+MySQL
  Оптимизация хоста для CMS
  блокировка spam на www
  PostgreSQL 8
  Apache 22 + PHP5 + suPHP
  lighttpd + mod_uploadprogress
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco
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=cp1251 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
Сверху должно быть что-то типа
Revision 0: /

А внизу
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

оценить статью:





Хостинг HOST-FOOD

2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

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-22, Mufanu
named 9.7.0

Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
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
2009-06-30, SergeySL
AimSniff

Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL

Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)

Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP

Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools

Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
2009-04-29, m0ps
IPSEC over GRE with RIP

Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
2009-04-24, WhiteBear777
qemu network

Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
2009-04-22, vp
freebsd + huawei 162 gsm modem

В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
2009-04-12, mvalery
Мониторинг RAID

Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
2009-04-09, texnotronic
RAID1 via LAN

Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
2009-04-03, Raven2000
Оптимизация хоста для CMS

В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
2009-04-01, atrium
VSFTPD + AD && MySQL

Настройка самого безопасного сервера FTP - vsftpd.
2009-03-31, Dron
Peoplenet + C-motech (3G)

Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
2009-03-25, lissyara
mod_auth_external

mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
2009-03-24, gx_ua
Lightsquid

Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
2009-03-18, LHC
Установка Zabbix-1.6

Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
2009-03-16, Cancer
Принт-Сервер Samba+LPD & AD

Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
2009-03-04, Mad_caterpillar
ipsec_vpnc

Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 41 чел.
За последние 30 мин было: 225 человек
За сегодня было
15719 показов,
1749 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1537 секунд
Из них PHP: 61%; SQL: 39%; Число SQL-запросов: 77 шт.
Исходный размер: 140250; Сжатая: 28010