Apache2.2.9/SSL, Subversion1.5.2, Trac0.11.1onopenSUS

Source: Internet
Author: User
Tags builtin openssl rsa ssl certificate
ThisarticledescribestheinstallationofasubversionRepositoryserverincludingTracProjectManagmentonaopenSUSE11.0Server. WhatisTrac? Tracisanenhancedwikiandissuetrackingsystemforsoftwaredevelopmentprojects.

This article describes the installation of a subversion Repository server including Trac Project management on a open SUSE 11.0 Server. What is Trac? Trac is an enhanced wiki and issue tracking system for software development projects.

This article describes the installation of a subversion Repository server includingTrac Project ManagmentOn a openSUSE 11.0 Server.

What isTrac?

  • Trac is an enhanced wiki and issue tracking system for software development projects.
  • An integrated system for managing software projects.
  • An enhanced wiki.
  • A flexible web-based issue tracker.
  • An interface to the Subversion revision control system.

Have a look at their homepage: Trac Project management.

Normally any linux distribution comes with precompiled packages. Butif we want to use the Trac Project Managment we must compile the wholething ourself.

System Description:

Standard openSUSE 11.0 Server, runlevel3.
No graphical system is required because it is a Repository server and nothing more ;-)

Systemrequirements:

Install the follwing packages via openSUSE "YaST"

  • Openssl
  • Openssl-devel
  • Autconf
  • Libtool
  • Flex
  • Bison
  • Libapr0
  • Gcc-c ++
  • Gcc, make
  • Glibc-devel
  • Ctags
  • Lzo, lzo-devel
  • Gdbm, gdbm-devel
  • Libxml2-devel
  • Sqlite, sqlite-devel
  • Python, python-devel, python-doc, python-setuptools, python-XML
Now we start: Download, compile and install Apache 2.2.9
$>cd /usr/local/src
$>wget http://gd.tuwien.ac.at/infosys/servers/http/apache/dist/httpd/httpd-2.2.9.tar.gz
...
$>tar xzvf httpd-2.2.9.tar.gz
$>cd httpd-2.2.9
$>./configure --prefix=/usr/local/apache2 --enable-mods-shared="all ssl dav_lock" --enable-maintainer-mode --enable-dav --enable-dav-fs --enable-dav-lock --enable-cgi --enable-deflate --enable-auth-digest --enable-rewrite --enable-actions --enable-so --enable-ssl=/usr/ssl
...
$>make
$>make install
Now we generate an SSL certificate for the Webserver:
$>cd /usr/local/apache2/conf
$>mkdir ssl.crt ssl.key
$>openssl req -new -x509 -days 3650 -keyout ./ssl.key/server.key -out ./ssl.crt/server.crt -subj '/CN=host.domain Certificate'
...
$>cp ssl.key/server.key ssl.key/server.key.org
$>openssl rsa -in ssl.key/server.key.org -out ssl.key/server.key
...
$>chmod 400 ssl.key/server.key
$>chmod 400 ssl.key/server.key.org
Download, compile and install mod_python-3.3.1
$>cd /usr/local/src
$>wget http://mirror.deri.at/apache/httpd/modpython/mod_python-3.3.1.tgz
...
$>tar xzvf mod_python-3.3.1.tar.gz
$>cd mod_python-3.3.1
$>./configure --with-apxs=/usr/local/apache2/bin/apxs
...
$>make
$>make install
Download, compile and install Ruby 1.8.7
$>cd /usr/local/src
$>wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz
...
$>tar xzvf ruby-1.8.7.tar.gz
$>cd ruby-1.8.7
$>./configure
...
$>make
$>make install
Download, compile and install Swig 1.3.36
$>cd /usr/local/src
$>wget http://downloads.sourceforge.net/swig/swig-1.3.36.tar.gz?modtime=1214350580&big_mirror=0
...
$>tar xzvf swig-1.3.36.tar.gz
$>cd swig-1.3.36
$>./configure --with-python=/usr/bin/python --with-perl=/usr/bin/perl --with-ruby=/usr/local/bin/ruby --without-php4
...
$>make
$>make check
$>make install
Download, compile and install Neon 0.28.3
$>cd /usr/local/src
$>wget http://www.webdav.org/neon/neon-0.28.3.tar.gz
...
$>tar xzvf neon-0.28.3.tar.gz
$>cd neon-0.28.3
$>./configure --with-expat --with-libxml2 --with-ssl --with-libs=/usr/ssl --enable-shared=yes
...
$>make
$>make install
Download, compile and install Pysqlite 2.4.1
$>cd /usr/local/src
$>wget http://initd.org/pub/software/pysqlite/releases/2.4/2.4.1/pysqlite-2.4.1.tar.gz
...
$>tar xzvf pysqlite-2.4.1.tar.gz
$>cd pysqlite-2.4.1
$>python setup.py build
$>python setup.py install
Download, compile and install Subversion 1.5.2
$>cd /usr/local/src
$>wget http://subversion.tigris.org/downloads/subversion-1.5.2.tar.gz
...
$>tar xzvf subversion-1.5.2.tar.gz
$>cd subversion-1.5.2
$>rm -rf /usr/local/lib/libsvn*
$>rm -rf /usr/local/lib/svn-python/*
$>rm -rf /usr/local/lib/libexpat* /lib/libexpat* /usr/lib/libexpat*
$>sh ./autogen.sh
$>./configure --with-ssl=/usr/ssl --with-neon=/usr/local --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-apxs=/usr/local/apache2/bin/apxs --with-zlib=/usr/lib --with-swig=/usr/local/bin/swig PYTHON2=/usr/bin/python PERL=/usr/bin/perl --without-jdk --without-jikes --without-junit
...
$>make
$>make install
$>make swig-py
$>make install-swig-py
$>make swig-pl
$>make install-swig-pl
$>echo /usr/local/lib/svn-python > /usr/lib/python/site-packages/svn-python.pth
Download, compile and install Clearsilver 0.10.5
$>cd /usr/local/src
$>wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
...
$>tar xzvf clearsilver-0.10.5
$>cd clearsilver-0.10.5
$>vi scripts/document.py (change the first line to "/usr/bin/python" instead of /bin/env python)
...
$>./configure --with-apache=/usr/local/apache2 --with-python=/usr/bin/python --with-ruby=/usr/local/bin/ruby --with-perl=/usr/bin/perl --disable-csharp --disable-java --enable-gettext
...
$>make
$>make install
$>cd python
$>make install #(That should install the Python bindings for ClearSilver)
Download, compile and install Docutils 0.5
$>cd /usr/local/src
$>wget http://prdownloads.sourceforge.net/docutils/docutils-0.5.tar.gz?download
...
$>tar xzvf docutils-0.5.tgz
$>cd docutils-0.5
$>python setup.py build
$>python setup.py install
$>cd /tools
$>./buildhtml.py ../
Download, compile and install Trac 0.11.1
$>cd /usr/local/src
$>wget http://ftp.edgewall.com/pub/trac/Trac-0.11.1.tar.gz
...
$>tar xzvf Trac-0.11.1.tar.gz
$>cd Trac-0.11.1.tar.gz
$>python ./setup.py install
...
$>cd /usr/local/apache2/htdocs
$>ln -s /usr/local/share/trac/htdocs trac (we link the trac stuff to apache2 htdocs)
This will byte-compile the python source code and install it in thesite-packages directory of your python installation. The directories Cgi-bin, templates, htdocs, wiki-defaultAre all copied $ Prefix/share/trac. The script will also install Trac-adminCommand-line tool, used to createand maintain project environments ." Trac-admin"Is the command center of Trac. Create" user "and" group "for Subversion:
$>groupadd svn-grp
$>useradd svn -G svn-grp -s /bin/bash
$>passwd svn (some password for user svn)
Now we create a Subversion Repository:
$>mkdir /data
$>mkdir /data/repos-new
$>chown -R svn.svn-grp /data/*
...
$>now login as user "svn" !!! (you are now user svn) !!!
$>svnadmin create /data/repos-new/MyProject --fs-type fsfs
$>svn mkdir file:///data/repos-new/MyProject/trunk -m "trunk"
...
$>su root (type password for root, you are now user root) !!!
Create a Trac Enviorment from the Repository:
$>trac-admin /data/repos-new/MyProjectTrac initenv
change: Project Name [My Project]> to MyProject,
change: Path to Repository [/var/svn/test] to /data/repos-new/MyProject
$>chgrp -R svn-grp /data/repos-new/
$>chmod -R 770 /data/repos-new/
Now enable the Project Enviorment and start Apache2: Change and add the following lines to your configuration:
$>vi /usr/local/apache2/conf/httpd.conf
(change the Apache user to "svn")
(change the Apache group to "svn-grp")
...
add the following lines to point to your project:
------------------
SetEnv PYTHON_EGG_CACHE /home/svn
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi

SetEnv TRAC_ENV "/data/repos-new/MyProject"

------------------
(save the configuration and start Apache2 like)
$>/usr/local/apache2/bin/apachectl start
Open your webbrowser and type "Http: // yourip-or-domain/trac ".If everything is perfect you can see the welcome message. Also have a look at "Browse Source"Button, there you can see the added subversion "Trunk"Directory. Authentication for user login: Change and add the following lines to your configuration:
$>cd /data/repos-new
$>touch svn-auth-file
$>chown svn.svn-grp svn-auth-file
$>chmod 440 svn-auth-file
...
add all user who should have access to the Repository via:
$>htpasswd2 -cb /data/repos-new/svn-auth-file user password

and change the Location settings in httpd.conf:
------------------

DAV svn
SVNPath /data/repos-new/MyProject
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /data/repos-new/svn-auth-file
Require valid-user

------------------
(save the configuration and restart Apache2)
$>/usr/local/apache2/bin/apachectl stop
$>/usr/local/apache2/bin/apachectl startssl
Don't forget to change "ssl. conf" and "httpd. conf" if you use ssl!Sample ssl. conf:
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin


Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

SSLPassPhraseDialog builtin
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/usr/local/apache2/logs/ssl_mutex


DocumentRoot "/usr/local/apache2/htdocs"
ServerName server.domain:443
ServerAdmin email@domain.com
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key


SSLOptions +StdEnvVars


SSLOptions +StdEnvVars

SetEnvIf User-Agent ".*MSIE.*" /
nokeepalive ssl-unclean-shutdown /
downgrade-1.0 force-response-1.0
CustomLog /usr/local/apache2/logs/ssl_request_log /
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x /"%r/" %b"
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]



If you get fault messages from Apache2?
* If you get the following:
Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server...

Add to /usr/local/apache2/httpd.conf "LoadModule" lines:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
. And add "/usr/local/lib" to /etc/ld.so.conf and then run /etc/ldconfig.
...
* If you get the following:

ExtractionError: Can't extract file(s) to egg cache/n/nThe following error
occurred while trying to extract file(s) to the Python egg/ncache:/n/n
[Errno 13] Permission denied: '/root/.python-eggs'/n/nThe Python egg cache
directory is currently set to:/n/n /root/.python-eggs/n/nPerhaps your
account does not have write access to this directory?
You can/nchange the cache directory by setting the PYTHON_EGG_CACHE environment/nvariable
to point to an accessible directory./n.

Add following line to /usr/local/apache2/bin/envvars:
export PYTHON_EGG_CACHE=/home/svn

And start Apache2 now.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.