Ну что же. Задача обрисована в заголовке. Cтавиться всё это будет под Debian Etch, что без сомнения облегчит задачу.
Хотя это и не кошерно, предполагается, что все команды исполняются от root'а.
Первым делом установим апач и 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/.
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 (в 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/