Настройка Apache2.2+Nginx+eAccelerator+SVN+Trac на медленном VDS — часть вторая

    Первая часть

    Сразу хочу заметить, что статья эта не претендует на авторитетность — делал всё в первый раз на удалённой машине с Линуксом. Соответственно, прошу особо не пинать, а лучше высказывать замечания — как что-то можно было сделать по-другому, или советы по настройке. Всё нижеперечисленное было сделано по мануалам из гугла.


    С Subversion и Trac пришлось помучаться — здесь напишу финальный, заработавший вариант.

    UPD: Рекомендуется сначала попробовать поставить из репозитория, указав соответствующий источник

    apt-get install subversion


    Subversion — руководствовался в основном этим.


    apt-get install apache2-threaded-dev # ставим apxs2
    apt-get install libapache2-svn python-subversion libapache2-mod-python
    a2enmod mod_python # заготовка на будущее, под трак - включаем Питон


    Качаем и ставим Subversion — свеженький

    cd /tmp
    wget subversion.tigris.org/downloads/subversion-1.5.0.tar.bz2
    bunzip subversion-1.5.0.tar.bz2
    tar -xvf subversion-1.5.0.tar.bz2
    cd subversion-1.5.0
    ./configure --with-apxs=/usr/bin/apxs2
    make
    make check # самая долгая операция
    make install


    На этом установка Subversion заканчивается (да-да, всё очень просто), и начинается его настройка.

    При установке svn должен был ругнуться, что не будет ничего писать в httpd.conf — это и к лучшему.
    Сделаем всё сами, ручками.

    cd /etc/apache2/mods-available
    echo "LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so" > dav_svn.load
    echo "LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so" > authz_svn.load


    Проверьте — закинул ли svn при установке такие модули. Если нет — они лежат в папке /tmp/subversion-1.5.0/subversion/ — в соответствующих каталогах.

    Разрешаем их в Апаче

    cd ../mods-enabled
    ln -s ../mods-available/dav.load
    ln -s ../mods-available/dav_svn.load


    Затем идём в apache2.conf и вставляем туда (в конец) следующее:

    <VirtualHost *>
    ServerName svn.yourdomain.com

    DocumentRoot /var/svn
    ServerAdmin svn@youdomain.com
    ErrorLog /var/log/apache2/svn-error.log
    CustomLog /var/log/apache2/svn-access.log combined

    <Location />
    DAV svn
    SVNPath /var/svn
    SVNIndexXSLT "/svnindex.xsl"

    AuthType Basic
    AuthName "Your Domain's Subversion Repository"
    AuthUserFile /etc/apache2/svn.htpasswd
    Require valid-user




    Потом идём в /etc/nginx/nginx.conf и там прописываем секцию для созданного субдомена — как это делать — описано в предыдущей статье. Из файловых исключений можно убрать всё — иначе не будут показываться исходные тексты файлов.

    Осталось создать сам репозиторий.

    mkdir /var/svn
    svnadmin create /var/svn
    chown -R www-data:www-data /var/svn


    И пароль!

    cd /etc/apache2/
    htpasswd -c svn.htpasswd yourname
    /etc/init.d/apache2 reload


    Вуаля, — если при заходе на svn.чтовытампрописали — вы можете залогиниться и видите SVN — то всё прошло успешно!

    Единственное, что я не сумел побороть — это

    cd /tmp/subversion-1.5.0/tools/xslt
    svn import svnindex.xsl svn.yourdomain.com/svnindex.xsl -m "Improved web interface."
    svn import svnindex.css svn.yourdomain.com/svnindex.css -m "Improved web interface."


    Писал, что неверный протокол — тут, как я понял, на уровне ядра заморочка. Если кто-то поможет — буду очень рад.

    Мне пришлось делать

    cd /tmp/subversion-1.5.0/tools/xslt
    svn import svnindex.xsl file:///var/svn/svnindex.xsl -m "Improved web interface."
    svn import svnindex.css file:///var/svn/svnindex.xsl -m "Improved web interface."


    SVN заработал!

    Осталось настроить Trac!

    Я не стал особо морочиться и пошёл по инструкции.

    apt-get install build-essential # для easy=install
    easy-install Trac


    Как вариант — можно сделать так

    cd /tmp
    wget ftp.edgewall.com/pub/trac/Trac-0.11.tar.gz
    tar -xvf Trac-0.11.tar.gz
    cd Trac-0.11
    python ./setup.py install


    Трак установился, теперь создадим для него папку и базу.

    Создаём MySQL-базу «trac». Затем

    mkdir /var/trac
    trac-admin /var/trac initenv

    Что касается MySQL — то указываем вместо sqlite —
    mysql://user:pass@host:port/trac

    База trac должна быть пустой.

    На вопрос про путь к svn — отвечаем — /var/svn

    Если вы всё сделали правильно — то Trac нам об этом сразу скажет.

    Настроим авторизацию Траку

    htdigest -c .htauth realm username # где realm - название проекта английскими буквами, username - ваше имя пользователя для трака
    # введите пароль
    trac-admin /var/trac
    # в запущенном trac-admin ввести
    permission add username TRAC_ADMIN


    Остаётся только запустить trac!

    tracd -p 8000 --auth=*,/var/trac/.htauth,realm /var/trac -s

    Где realm — то, что вы указали при создании пароля, -s — сингл-проект, -p — порт 8000, звёздочка — что любой трак-проект. Вроде так.

    Теперь при заходе

    your.ip.is.here:8000 — вуаля — перед нами Трак!

    Уф, вроде всё. Мог забыть какие-то возникшие косяки — экспериментировал немного — пишите, постараюсь ответить и дополнить.
    Поделиться публикацией

    Комментарии 9

      +1
      у вас же там дебиану/убунту - зачем ставить SVN из сырцов, да еще и без заворачивания в пакет?
      чем вас не устроил родной из репозитария?
        –1
        Удивительное рядом - из репозитория subversion отчего-то работать не хотел.
        Конечно, я поздно сообразил, что лучше бы прописать репозиторий для свежего, - зато из сурцов получилось надёжнее и дало больше экспириенса
          0
          После того, как обновите систему, расскажете, насколько "надёжно" заработает софт, установленный через make install.
            0
            ну хотя бы в статью добавьте варнинг о том, что такой метод установки не лучший + допишите лучший - apt-get install subversion
              0
              Ага, добавил update
          0
          а я не понял зачем еще апачи поднимать ? можно поставить просто nginx и все будет прекрасно работать
            0
            на FirstVDS на апаче крутится ISPManager
            Конечно, можно полностью вырубить Апач и врубать только когда понадобится что-то сделать с ISPMgr, но я решил попробовать совместить - заодно и получить экспириенс в настройке.

            Думаю, что когда вернусь в конце августа из отпуска - раскошелюсь на дедик из keyweb - и там попробую поднять Nginx+FastCGI - на этой вдске сил пока не хватает моральных - только-только всё настроил)

            Хотя, скоро вордпресс-блог перетяну куда-нибудь и поэкспериментирую, возможно.

            Кроме того, не хочется пока врубаться в nginx url rewrite engine - или как он там называется
              0
              Хотя ещё можно метнуться в lighthttpd-сторону=)

              Посмотрим, может, скоро третью статью напишу)
                0
                Уж не знаю, как там на "медленном", а я потратил много времени: пробовал просто tracd, nginx+fastcgi, apache2+mod_python. Вышло так, что в любом случае эта помойка отъедает до 40% CPU на одного пользователя (особенно тупит в разделе timeline) как с sqLite, так и с MySql. Причём в случае c MySQL был начисто проиндексирован репозиторий.

                Не покидало ощущение того, что занимаешься резьбой по калу, весь процесс занимает море времени, проходящего в поиске разного рода воркэраундов. Какая-то это студенческая поделка, мне кажется.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.