Статьи

Создайте свой собственный сервер разработки с Apache, Subversion и Trac

Предисловие

Это одна из самых популярных статей моего блога; оригинальное название: Учебное пособие по установке: Ubuntu 9.04, Apache с SSL, Subversion через HTTP / HTTP и Trac . Несмотря на то, что ему сейчас 1 год, я все равно получаю благодарственные комментарии; так что я уверен, что следуя инструкциям, у вас не будет больших проблем с последней доступной версией.

Trac не очень прост в установке, а также настраивает веб-сервер Apache с https и интегрирует его с Subversion и все вместе.
Возможно, вы захотите установить его на виртуальную машину, чтобы выполнить пробный запуск, прежде чем выпускать сервер разработки в производство. Одной вещью, которая отсутствует для сервера разработки, достойного этого имени, является сервер непрерывной интеграции. Конечно, я выбрал бы Hudson , который также очень прост в установке и интеграции с вашим любимым scm. Интеграция Hudson с apache и trac была бы хорошим продолжением этого урока, о котором я, вероятно, напишу во второй раз. И я хотел бы также написать, как создать хорошую среду для работы с Git и Gitosis., Это в моем списке задач; тем временем, это очень хороший учебник для начала с gitosis: хостинг репозиториев Git, The Easy (и Secure) Way .

Если вы ищете хостинг для Linux, я предлагаю тот, который я использую, slicehost . Альтернативой trac может быть Redmine , я немного использовал его для некоторых экспериментов и был очень хорош.

Хорошая вещь об этом «руководстве по установке» заключается в том, что он модульный: вы можете просто выполнить установку компонентов, которые вас интересуют, и оставить то, что вам не нужно, или заменить их чем-то другим. Надеюсь, вы найдете это полезным.

Вступление

Это руководство проведет вас через установку Apache, HTTPS, Subversion и Trac, чтобы иметь (почти) полную среду разработки для вашей команды.

Эта статья состоит из следующих шагов

1. Установка Subversion
2. Установка Apache
3. Настройка Apache с SSL
4. Настройка Subversion с Apache (и SSL)
5. Установка Trac

Вы можете выбрать, например, чтобы увидеть, как установить Apache и SSL или использовать Apache plus Subversion без Trac.
Шаги являются добровольно изолированными и потребуют большего количества операций, чем, например, создание «apt-get install trac», который загрузит и установит все пакеты за один шаг; но, надеюсь, это позволит читателям выбрать один раздел и забыть о ненужных компонентах.
Я не буду объяснять, что такое Subversion, или что такое SSL и т. Д. Спросите у Google эту информацию: я просто говорю, что для вашего программного проекта вам может понадобиться сервер с этими инструментами, готовыми для вашей команды.

Требования

Вам нужна Ubuntu 9.04, в моем случае я использовал 64-битную версию «server edition», при установке я использовал минимальный режим сервера, нажав F4, чтобы сделать систему как можно более легкой. Но, возможно, этот учебник должен быть действительным для Debian и предыдущей версии Ubuntu; но я не проверял, что: если вы делаете, оставьте комментарий, чтобы сообщить о своем опыте.

подготовка

После установки вашего сервера вы должны убедиться, что система apt обновлена ​​с помощью доступного программного обеспечения в репозиториях. Введите следующую команду:

$ sudo apt-get update

Обновление установленных пакетов может быть хорошей идеей сделать сейчас:

$ sudo apt-get upgrade

Ответьте Да, если вас попросят загрузить и установить обновления.

1. Установка Subversion

Из командной строки введите команду:

$ sudo apt-get install subversion

Если все прошло нормально, вы можете проверить версию Subversion, установленную с помощью следующей команды:

$ svn --version
svn, version 1.5.4 (r33841)
   compiled Aug  7 2009, 02:02:06

Copyright (C) 2000-2008 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme

А пока давайте остановимся здесь: как создать хранилище Subversion, настроить пользователей и т. Д. Будет объяснено позже в связи с конфигурацией Apache2. Может быть, я напишу кое-что о том, как работать с svnserve, svnadmin и контролем доступа пользователей, в другой статье.

Позже мы увидим, как создать репозиторий, настроить его с помощью Apache и базовой аутентификации HTTP.

2. Установка Apache

Для установки apache 2 введите команду:

$ sudo apt-get install apache2

Когда вы закончите, вы сможете подключиться к браузеру по адресу http: // localhost и увидеть сообщение «Это работает!». Или вы можете проверить это в командной строке, установив и используя curl:

$ sudo apt-get install curl
$ curl http://localhost
<html><body><h1>It works!</h1></body></html>

3. Настройка Apache с SSL

Теперь мы хотим настроить apache для запуска HTTP.
Следующая команда включит модуль Apache2 ssl с a2enmod (загадочное имя для «модуля включения Apache2»:

$ sudo a2enmod ssl

Предыдущая команда предложит вам перезапустить apache, чтобы перезагрузить конфигурацию; проигнорируйте это сообщение сейчас.

Нам нужно включить порт HTTPS (443). Отредактируйте /etc/apache2/ports.conf и убедитесь, что порт 443 определен следующим образом:

$ sudo vi /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    NameVirtualHost *:443
    Listen 443
</IfModule>

Я добавил пункт NameVirtualHost *: 443 в для SSL; это не является строго необходимым, но будет полезно позже, если вы захотите иметь VirtualHost для trac и других служб разработки.

Теперь нам нужно настроить сайт SSL. К счастью, у нас уже есть файл конфигурации для этого, нам просто нужно включить его с помощью a2ensite (загадочное имя для «apache2 enable site»)

$ sudo a2ensite default-ssl

Опять же, приведенная выше команда предложит перезагрузить конфигурацию apache, чтобы активировать изменения. На этот раз предложение почти верно. Поскольку мы внесли несколько изменений, я предпочитаю перезапустить apache с помощью следующей команды:

$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2                                                                                              apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Если все прошло хорошо, вы должны увидеть вышеупомянутое предупреждение. Вы можете игнорировать его, если только вы не хотите настроить имя сервера для своего сервера. Но это выходит за рамки, так что сделайте поиск в Google или проконсультируйтесь с экспертом Apache.

Итак, если все прошло хорошо, теперь мы должны иметь возможность подключиться к нашему серверу через SSL.
Вы можете использовать firefox или curl, как и раньше, но на этот раз URL будет https: // localhost

$ curl -k https://localhost
<html><body><h1>It works!</h1></body></html>

опция -k игнорирует проверку сертификации. Также Firefox будет жаловаться на то, что наш сертификат недействителен, но вы можете добавить его к исключениям, и он не допустит ошибок в этих сообщениях.

Если все прошло хорошо, теперь у нас должен быть готов Apache2, HTTP и HTTP.

4. Настройка Subversion с Apache (и SSL)

Прежде всего, нам нужно установить модули Subversion для Apache2.

$ sudo apt-get install libapache2-svn

Они будут включены по умолчанию. Так что вам не нужно запускать a2enmod.

Нам нужно только настроить хранилище. Давайте скажем, что наш проект называется myproject.

Прежде всего, давайте определимся, где будут создаваться наши SVN-репозитории. Мне нравится / var / local / svn:

$ sudo mkdir /var/local/svn

Затем давайте создадим репозиторий, используя следующую процедуру:

$ sudo mkdir /var/local/svn/myproject
$ sudo chown www-data:www-data /var/local/svn/myproject
$ sudo -u www-data svnadmin create /var/local/svn/myproject

Приведенные выше команды гарантируют, что пользовательские www-данные (то есть пользователь apache) могут полностью получить доступ к хранилищу для его чтения и обновления.

Нам нужно настроить хранилище в Apache. Отредактируйте /etc/apache2/mods-available/dav_svn.conf, используя:

$ sudo vi /etc/apache2/mods-available/dav_svn.conf

И добавьте раздел, подобный следующему:

<Location /svn/myproject>
  DAV svn
  SVNPath /var/local/svn/myproject
  AuthType Basic
  AuthName "My Project Subversion Repository"

  AuthUserFile /etc/subversion/myproject.passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

В приведенном выше файле мы указали, что в расположении svn наш репозиторий должен ответить. А для обновления репозитория нам нужен действительный пользователь. В соответствии с приведенной выше конфигурацией допускается анонимная консультация; но вы можете отключить его, комментируя начальные ‘#’ строки <LimitExcept … и </ LimitExcept> или просто удаляя их, как в следующем примере:

<Location /svn/myproject>

  DAV svn
  SVNPath /var/local/svn/myproject
  AuthType Basic
  AuthName "My Project Subversion Repository"
  AuthUserFile /etc/subversion/myproject.passwd
  #<LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  #</LimitExcept>
</Location>

Приведенная выше конфигурация указывает Apache, что даже для обращения к хранилищу нам нужен действительный пользователь.
Но действительным пользователям нужен пароль, и на самом деле мы указали файл пароля для нашего репозитория с именем /etc/subversion/myproject.passwd. Итак, давайте создадим файл паролей для пары пользователей:

$ sudo htpasswd -c /etc/subversion/myproject.passwd luigi
$ sudo htpasswd /etc/subversion/myproject.passwd mario

Опция -c указывает, что файл паролей должен быть создан как новый; и это необходимо только для первого пользователя. Помните о том, что -c перезаписывает существующий файл паролей, ничего не спрашивая. Лично я считаю, что это довольно глупое поведение, но так оно и есть.

Теперь мы должны быть готовы.

Давайте перезагрузим конфигурацию apache, чтобы изменения вступили в силу:

$ sudo /etc/init.d/apache2 reload

и давайте проверим в браузере, что наш репозиторий svn теперь доступен через HTTP и HTTP по следующим ссылкам:

HTTP: // локальный / SVN / MyProject /

https: // локальный / SVN / MyProject /

Мы также можем использовать curl, чтобы убедиться, что он работает:

$ curl http://username:password@localhost/svn/myproject/
<html><head><title>myproject - Revision 0: /</title></head>
<body>
 <h2>myproject - Revision 0: /</h2>
 <ul>

 </ul>
 <hr noshade><em>Powered by <a href="http://subversion.tigris.org/">Subversion</a> version 1.5.4 (r33841).</em>
</body></html>
$ curl -k https://username:password@localhost/svn/myproject/
<html><head><title>myproject - Revision 0: /</title></head>
<body>
 <h2>myproject - Revision 0: /</h2>
 <ul>

 </ul>
 <hr noshade><em>Powered by <a href="http://subversion.tigris.org/">Subversion</a> version 1.5.4 (r33841).</em>
</body></html>

Теперь мы также можем скачать наш проект с помощью SVN

$ svn co https://localhost/svn/myproject myproject --username luigi

«Луиджи» — это, очевидно, мое имя пользователя, замените его своим.
В первый раз, когда он предложит принять сертификат SSL, ответьте, чтобы принять его навсегда (p). Затем вам будет предложено ввести пароль, введите его.
Мы также можем проверить, что изменение удаленного репозитория работает с:

$ svn mkdir -m "created the trunk for the project" https://localhost/svn/myproject/trunk --username luigi

Он ответит: Совершенная редакция 1. Если это так, мы сделали.

5. Установка Trac

Чтобы установить файлы трассировки и необходимые зависимости, введите следующую команду:

$ sudo apt-get install trac
$ sudo apt-get install libapache2-mod-python

Давайте создадим каталоги для веб-папки trac:

$ sudo mkdir /var/local/trac
$ sudo chown www-data:www-data /var/local/trac

отредактируйте файл конфигурации Apache для одного из ваших включенных сайтов (в этом примере я изменяю http по умолчанию на http, но вы можете включить trac на HTTPS, изменяя default-ssl)

$ sudo vi /etc/apache2/sites-enabled/000-default

и добавьте следующие строки в конец файла перед тегом </ VirtualHost>:

        <Location /projects>
                SetHandler mod_python
                PythonInterpreter main_interpreter
                PythonHandler trac.web.modpython_frontend
                PythonOption TracEnvParentDir /var/local/trac
                PythonOption TracUriRoot /projects
                PythonOption PYTHON_EGG_CACHE /tmp
        </Location>

        # use the following for one authorization for all projects
        # (names containing "-" are not detected):
        <LocationMatch "/projects/[[:alnum:]]+/login">

            AuthType Basic
            AuthName "trac"
            AuthUserFile /etc/trac/trac.passwd
            Require valid-user
        </LocationMatch>

Создайте файл паролей для пользователей trac (если вы хотите, вы можете повторно использовать или связать файл passwd, используемый для хранилищ Subversion)

$ sudo htpasswd -c /etc/trac/trac.passwd luigi
$ sudo htpasswd  /etc/trac/trac.passwd mario
... continue this way for all your users.

Создайте среду trac для вашего проекта:

$ sudo -u www-data trac-admin /var/local/trac/myproject initenv

Он задаст вам несколько вопросов, связанных с вашим проектом. Вот мои ответы синим цветом

Project Name [My Project]> My Project
Database connection string [sqlite:db/trac.db]> [Just press Enter to accept the default]
Repository type [svn]>  [Just press Enter to accept the default]

Path to repository [/path/to/repos]> /var/local/svn/myproject

Теперь давайте перезапустим apache:

$ sudo /etc/init.d/apache2 restart

Убедитесь, что trac работает правильно, подключив браузер к http: // localhost / projects, или используйте curl, чтобы убедиться, что URL отвечает правильно, как мы делали раньше. Этот URL должен отображать ссылку на «Мой проект», нажмите на нее, и вы должны увидеть домашнюю страницу проекта. При входе в систему браузер должен попросить вас ввести имя пользователя и пароль, которые недавно были определены с помощью команды htpasswd.

Последнее, что нужно сделать: добавить себя в качестве администратора для Trac. Это откроет меню администратора и позволит выполнять большую часть операций администрирования из Интернета, что вы также можете выполнять в командной строке с помощью инструмента trac-admin.
Выполните следующую команду:

$ sudo -u www-data trac-admin /var/local/trac/myproject permission add luigi TRAC_ADMIN

Это сделает имя пользователя ‘luigi’ администратором проекта.

Вы можете настроить дополнительные параметры конфигурации в Trac, чтобы включить уведомление по электронной почте, изменить логотип проекта и т. Д. Все, что вам нужно знать, находится на веб-сайте Trac . Для проверки конфигурации здесь: http://trac.edgewall.org/wiki/TracIni

Надеюсь, все прошло хорошо. Приятного вам развития!