Apache minimalconfiguration nur für dav_svn

madmax

New Member
Guten Tag,

ich setze seit längerer Zeit nur lighttpd auf meinem Server ein, möchte nun
aber einen Apache installieren um SVN anzubieten. Der Apache Server soll auf einem anderen Port lauschen und lighttpd soll die Verbindungen weiterleiten.
Das letzte mal hatte ich vor 3-4 Jahren Apache installiert (1.3) und bin überascht dass sich die Konfiguration so geändert hat. Früher hatte ich alles in der apache.conf, jetzt gibt es so Ordner wie mods_enabled, sites_enabled...
Ich habe nun eine weile gesucht um herauszufinden was ich alles benötige, das Problem ist aber dass Apache in der Standartkonfiguration bei mir über 230mb RAM nach dem starten benötigt. Damit bin ich aber an der Leistungsgrenze meines VServers (512MB). Könnt ihr mit sagen welche Module ich sicher entfernen kann damit ich weiter testen kann?

Das sind die Module die zur Zeit geladen werden:
Code:
madmax@srv:~$ ls /etc/apache2/mods-enabled/
alias.load            autoindex.load        dir.load
auth_basic.load       cgid.conf             env.load
authn_file.load       cgid.load             mime.load
authz_default.load    dav.load              negotiation.load
authz_groupfile.load  dav_svn.conf          setenvif.load
authz_host.load       dav_svn.load          status.load
authz_user.load       dir.conf

Speicher vor dem starten:
Code:
VPS Speichernutzung:
Momentan genutzt:       408.484 MB
Maximal genutzt:        417.238 MB
Zugesichert:            512 MB
Maximal nutzbar:        768 MB

Speicher nach dem starten:
Code:
VPS Speichernutzung:
Momentan genutzt:       627.922 MB
Maximal genutzt:        765.25 MB
Zugesichert:            512 MB
Maximal nutzbar:        768 MB

daher bekomme ich viele:
Code:
[Sat Nov 15 11:49:17 2008] [alert] (12)Cannot allocate memory: apr_thread_create: unable to create worker thread

die Testkonfiguration:
Code:
NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                RedirectMatch ^/$ /apache2-default/
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

<Location /srv/repos>

  DAV svn

  SVNParentPath /srv/repos

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /tmp/user
  AuthzSVNAccessFile /tmp/access
  Require valid-user
</Location>
CustomLog /var/log/apache2/svn.log "%t %u %{SVN-ACTION}e" env=SVN-ACTION

</VirtualHost>

ich benötige beim Apache kein PHP, CGI, .htaccess etc. das erledigt alles
meine lighttpd installation. Apache soll ausschließlich für SVN verwendet werden. Leider habe ich nicht gefunden welche Module dav_svn dringend benötigt und welche ich gefahrlos weglassen kann. Z.B welche Module für die Authentifikation (auth*) ich benötige. Der SVN wird nur von 3-5 Leuten benutzt, daher kann er auch dahingehend optimiert werden.

Ich höffe mir kann jemand helfen alles unnötige loszuwerden.

Grüße und schönen Samstag,
madmax
 
welche ich gefahrlos weglassen kann.
Dann installier dich einfach nur das nötigste. Das Paketmanagement der Distribution sorgt schon dafür, dass nichts fehlt.

Der SVN wird nur von 3-5 Leuten benutzt, daher kann er auch dahingehend optimiert werden.
Wenn diese Leute alle die selben Rechte haben, reicht auch eine Autentifizierung per HTTP-Auth. Die ist im Apache-Core bereits enthalten.

Was auch ginge (und was auch performanter ist als SVN über HTTP) wäre svn+ssl. Dafür brauchst du gar keinen Apache.
Du machst einfach einen User svn auf deiner Kiste und trägst in die authorized_keys für jeden, der zugreifen soll seinen Key ein und das Kommando, mit dem er den svn bedient (alle benutzen den selben Systemuser und werden per SSH-Key identifiziert).

Eine Zeile der authorized_keys sieht dann ungefähr so aus:
Code:
command="svnserve -r <Path to Repo-Root> -t --tunnel-user=<Username>",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty <SSH-Key>

Dieses Setup lässt kein Login zu sondern _nur_ den Zugriff auf SVN.
 
Last edited by a moderator:
Hallo,

danke für deine Hilfe. Ich möchte eigentlich schon Apache dafür einsetzen ( performance ist bei den paar usern nicht so wichtig) da ich dann das Repository mit SVN access manager administrieren kann um bestimmten usern nur Leserechte zu geben. Nun bin ich gerade dabei herauszufinden welche module ich benötige damit die Konfiguration wie auf SVN Access Manager Documentation beschrieben funktioniert.
Ich werde mal versuchen kein Modul zu laden damit der Apache überhaupt startet und dann die dazuzumachen von welchen ich denke dass sie benötigt werden.
Schauen ob es funktioniert.

danke trotzdem für deine Hilfe
madmax

Edit:
Also folgende von mir asu gesehen aufs minimalste beschnittene Konfiguration funktioniert schon mal nicht:
Code:
## LOAD MODULES
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so


### Section 1: Global Environment
ServerRoot "/etc/apache2"
Listen 8080
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
Listen 81
##
## Server-Pool Size Regulation (MPM specific)
##
<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers       5
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

User www-data
Group www-data

AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

TypesConfig /etc/mime.types

DefaultType text/plain

HostnameLookups Off

ErrorLog /var/log/apache2/error.log

LogLevel warn

# Include ports listing
Include /etc/apache2/ports.conf

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

ServerTokens Full

ServerSignature On

<IfModule mod_autoindex.c>
    IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=*
    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
    AddIconByType (TXT,/icons/text.gif) text/*
    AddIconByType (IMG,/icons/image2.gif) image/*
    AddIconByType (SND,/icons/sound2.gif) audio/*
    AddIconByType (VID,/icons/movie.gif) video/*
    AddIcon /icons/binary.gif .bin .exe
    AddIcon /icons/binhex.gif .hqx
    AddIcon /icons/tar.gif .tar
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
    AddIcon /icons/a.gif .ps .ai .eps
    AddIcon /icons/layout.gif .html .shtml .htm .pdf
    AddIcon /icons/text.gif .txt
    AddIcon /icons/c.gif .c
    AddIcon /icons/p.gif .pl .py
    AddIcon /icons/f.gif .for
    AddIcon /icons/dvi.gif .dvi
    AddIcon /icons/uuencoded.gif .uu
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
    AddIcon /icons/tex.gif .tex
    AddIcon /icons/bomb.gif core
    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^
    DefaultIcon /icons/unknown.gif

    ReadmeName README.html
    HeaderName HEADER.html
    IndexIgnore .??* *~ *# RCS CVS *,v *,t
</IfModule>

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/
        <Directory />
            Options FollowSymLinks
            AllowOverride None
        </Directory>
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
       ServerSignature On
       <Location /srv/repos>
         DAV svn
         SVNParentPath /srv/repos
         AuthType Basic
         AuthName "Subversion Repository"
         AuthUserFile /tmp/user
         AuthzSVNAccessFile /tmp/access
         Require valid-user
         SVNIndexXSLT /svnstyle/svnindex.xsl
        </Location>
        CustomLog /var/log/apache2/svn.log "%t %u %{SVN-ACTION}e" env=SVN-ACTION
</VirtualHost>

Der Fehler:
Code:
Starting web server (apache2)...apache2: Syntax error on line 2 of /etc/apache2/apache2.conf: Cannot load /usr/lib/apache2/modules/mod_dav_svn.so into server: /usr/lib/apache2/modules/mod_dav_svn.so: undefined symbol: dav_xml_get_cdata
 failed!
 
Last edited by a moderator:
Back
Top