Содержание

Установка Apache2 + SSL + Subversion + Trac под Debian

Ну что же. Задача обрисована в заголовке. Cтавиться всё это будет под Debian Etch, что без сомнения облегчит задачу.

:!: Хотя это и не кошерно, предполагается, что все команды исполняются от root'а.

Настройка Apach2 и SSL

Первым делом установим апач и OpenSSL

apt-get install apache2 openssl

Подключим модуль ssl выполнив команду

a2enmod ssl

В файл /etc/apache2/ports.conf добавим строчку Listen 443, разрешив апачу прослушивать 443й порт, для приёма https запросов. Сделать это можно к примеру так:

echo "Listen 443"  >> /etc/apache2/ports.conf

Создадим сертификат для нашего будущего сервера. К сожалению, в Debian Etch убрали скрипт apache2-ssl-certificate, но мы его извлечём из небытия (SSL то очень хоцца).

apache2-ssl-certificate

#!/bin/sh -e
 
if [ "$1" != "--force" -a -f /etc/apache2/ssl/apache.pem ]; then
  echo "/etc/apache2/ssl/apache.pem exists!  Use \"$0 --force.\""
  exit 0
fi
 
if [ "$1" = "--force" ]; then
  shift
fi     
 
echo
echo creating selfsigned certificate
echo "replace it with one signed by a certification authority (CA)"
echo
echo enter your ServerName at the Common Name prompt
echo
echo If you want your certificate to expire after x days call this programm 
echo with "-days x" 
 
# use special .cnf, because with normal one no valid selfsigned
# certificate is created
 
export RANDFILE=/dev/random
openssl req $@ -config /usr/share/apache2/ssleay.cnf \
  -new -x509 -nodes -out /etc/apache2/ssl/apache.pem \
  -keyout /etc/apache2/ssl/apache.pem
chmod 600 /etc/apache2/ssl/apache.pem
ln -sf /etc/apache2/ssl/apache.pem \
  /etc/apache2/ssl/`/usr/bin/openssl \
  x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0

Кроме того, потребуется ещё конфигурационный файл

/usr/share/apache2/ssleay.cnf

#
# SSLeay example configuration file.
#

RANDFILE                = $ENV::HOME/.rnd

[ req ]
default_bits            = 1024
default_keyfile         = privkey.pem
distinguished_name      = req_distinguished_name

[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = GB
countryName_min                 = 2
countryName_max                 = 2

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Some-State

localityName                    = Locality Name (eg, city)

organizationName                = Organization Name (eg, company; recommended)
organizationName_max            = 64

organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_max      = 64

commonName                      = server name (eg. ssl.domain.tld; required!!!)
commonName_max                  = 64

emailAddress                    = Email Address
emailAddress_max                = 40

Теперь создадим каталог /etc/apache2/ssl и выполним скрипт:

mkdir -p /etc/apache2/ssl
sh apache2-ssl-certificate

Приступим к настройке виртуального сервера.

В каталоге /usr/apache2/site-available сделаем копию файла default обозвав его к примеру project-ssl.

Отредактируем его самую малость

/usr/apache2/site-available/project-ssl

NameVirtualHost *:443
<VirtualHost *:443>
  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/apache.pem
 
  ...
 
</VirtualHost>

Теперь разрешим наш новый виртуальный хост и перезапустим апач

a2ensite project-ssl
/etc/init.d/apache2 restart

…и поимеем безмерное блаженство подключившись к своему компу по защищённому протоколу https://localhost/.

Установка Subversion

apt-get install libapache2-svn subversion subversion-tools

Подготовим репозиторий

cd /home
mkdir -p projects/project/svn
cd projects/project
chown www-data svn
su www-data -c "svnadmin create svn/"

Создаём его от имени пользователя www-data для того, что бы apache имел к нему доступ.

Теперь вернёмся к нашим баранам, то есть апачу.

Создадим каталоги

mkdir /home/projects/project/html
mkdir /home/projects/project/logs

Каталог html на самом деле не понадобится когда мы установим trac но пусть будет.

Файл /usr/apache2/site-available/project-ssl исправим следующим образом

/usr/apache2/site-available/project-ssl

NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/apache.pem
 
    ServerAdmin your@email.address
 
    DocumentRoot /home/projects/project/html
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/projects/project>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
 
    <Location /svn>
        DAV svn
        SVNPath /home/projects/project/svn
        AuthType Basic
        AuthName "My Subversion Repository"
        AuthUserFile /home/projects/project/.htpasswd
        Require valid-user
    </Location>
 
    ErrorLog /home/projects/project/logs/error.log
 
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
 
    CustomLog /home/projects/project/logs/access.log combined
    ServerSignature On
</VirtualHost>

Добавим авторизационный файл и пользователей в него

htpasswd -c -m /home/projects/project/.htpasswd user1
htpasswd -m /home/projects/project/.htpasswd user2
...

и переназначим права на него

chown www-data /home/projects/project/.htpasswd
chmod 600 /home/projects/project/.htpasswd

Теперь можно перезапустить апач и проверить доступность svn-репозитория https://localhost/svn/

Данная часть статьи написана на основе статьи »Configure Apache SSL and Subversion in Debian in 683 seconds»

Trac

Теперь примемся за установку Trac (в Debian Etch это версия 0.10.3-1).

apt-get install trac

Создадим каталог для trac-проекта и сам проект

su www-data -c "mkdir trac"
su www-data -c "trac-admin /home/projects/project/trac initenv"                                  

Скрипт задаст несколько вопросов. Единственный вопрос который потребует коррекции это про расположение svn-репозитория /home/projects/project/svn.

:!: Репозиторий должен располагаться на той же машине где и trac и trac должен иметь к нему доступ и на чтение и на запись.

Теперь можно проверить, как установился наш trac-проект запустив stand alone сервер

su www-data -c "tracd --port 8000 /home/projects/project/trac"

и открыв в браузере адрес http://localhost:8000/trac

Далее установим mod_python и подключим его

apt-get install libapache2-mod-python libapache2-mod-python-doc
a2enmod mod_python

Добавим в файл /etc/apache2/sites-available/project-ssl следующий блок

/etc/apache2/sites-available/project-ssl

    ...
 
    <Location />
        SetHandler mod_python
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnv /home/projects/project/trac
        PythonOption TracUriRoot /
    </Location>
 
    ...

Если необходима возможность аутентификации то добавим блок

/etc/apache2/sites-available/project-ssl

    ...
 
    <Location /login>
        AuthType Basic
        AuthName "MyCompany Trac Server"
        AuthUserFile /home/projects/project/.htpasswd
        Require valid-user
    </Location>
 
    ...

Перезапустим апач и проверим наш trac https://localhost/

Ссылки

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

Так же планируется статья описывающая настройку trac и его расширений.

Ivan A-R 25.04.2007 16:18