[mirrorbrain-commits] r7698 - in trunk/docs: . _build _static installation

From: <poeml_at_mirrorbrain.org>
Date: Tue, 14 Jul 2009 00:00:17 +0200
Author: poeml
Date: Tue Jul 14 00:00:15 2009
New Revision: 7698
URL: http://svn.poeml.de/viewvc/mirrorbrain?view=revision&revision=7698

Log:
add initial dump of work-in-progress documentation

Added:
   trunk/docs/_build/
   trunk/docs/_static/
   trunk/docs/configuration.rst
   trunk/docs/configuration_reference.rst
   trunk/docs/developer.rst
   trunk/docs/index.rst
   trunk/docs/installation/
   trunk/docs/installation/gentoo.rst
   trunk/docs/installation/index.rst
   trunk/docs/installation/opensuse.rst
   trunk/docs/installation/prerequirements.rst
   trunk/docs/installation/source.rst
   trunk/docs/intro.rst
   trunk/docs/known_problems.rst
   trunk/docs/mirrors.rst

Added: trunk/docs/configuration.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/configuration.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,3 @@
+
+Configuring MirrorBrain
+=======================

Added: trunk/docs/configuration_reference.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/configuration_reference.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,3 @@
+
+Configuration Reference
+=======================

Added: trunk/docs/developer.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/developer.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,34 @@
+###############################################################################
+                       Documentation for Developers
+###############################################################################
+
+
+
+********************************************************************************
+How to contribute
+********************************************************************************
+
+To be written.
+
+
+
+********************************************************************************
+Hacking on the apache modules
+********************************************************************************
+
+To be written.
+
+
+
+********************************************************************************
+Writing extensions for the Python module
+********************************************************************************
+
+To be written.
+
+
+
+Debugging notes
+================================================================================
+
+To be written.

Added: trunk/docs/index.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/index.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,27 @@
+.. MirrorBrain documentation master file, created by
+   sphinx-quickstart on Tue Jul  7 20:18:43 2009.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Table of Contents
+=======================================
+:Release: |version|
+:Date: |today|
+
+.. toctree::
+
+   intro
+   
+   installation/index
+   configuration
+   configuration_reference
+   mirrors
+   known_problems
+   developer
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+

Added: trunk/docs/installation/gentoo.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/installation/gentoo.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,114 @@
+Installation on Gentoo Linux
+================================================================================
+
+
+.. warning:: 
+   When I (Peter) took the following notes, it was my first experience in
+   setting up a Gentoo system.
+
+Because I initially emerged git, lots of Perl modules which are be neded later
+might already be on the system.
+
+curl will be useful for testing later::
+
+  emerge curl
+
+Build and start the PostgreSQL server::
+
+  emerge postgresql
+  emerge --config =postgresql-8.1.11
+  su - postgres
+  pg_ctl -D /var/lib/postgresql/data start
+
+
+Build GeoIP::
+
+  emerge geoip
+
+
+Edit :file:`/etc/make.conf` and add the following settings::
+
+  USE="postgres"
+  APACHE2_MPMS="worker"
+  APACHE2_MODULES="actions alias auth_basic authn_default authn_file authz_host autoindex dir env expires headers include info log_config logio mime mime_magic negotiation rewrite setenvif status userdir dbd"
+
+Build and start the apache server::
+
+  emerge --newuse apache
+  rc-update add apache2 default
+
+
+Add Lance's overlay to :file:`/etc/make.conf`::
+
+  PORTDIR_OVERLAY="/usr/portage/local/ramereth-overlay"
+  mkdir /usr/portage/local
+  cd /usr/portage/local
+  git clone git://github.com/ramereth/ramereth-overlay.git
+
+
+Create/edit the file :file:`/etc/portage/package.keywords` and add the following::
+
+  ~www-misc/mirrorbrain-9999
+  ~www-misc/mirrorbrain-2.8.1
+  ~www-misc/mirrorbrain-2.8
+  ~www-apache/mod_mirrorbrain-2.8.1
+  ~www-apache/mod_form-132
+  ~www-apache/mod_autoindex_mb-2.8.1
+  
+  ~dev-python/cmdln-1.1.2
+  ~dev-python/sqlobject-0.10.4
+  ~dev-python/formencode-1.2.1
+
+
+Due to lack of a dependency in dev-python/cmdln, you need to do::
+
+  emerge unzip
+
+
+Now, you can build mirrorbrain (and its components)::
+
+  emerge -va mirrorbrain
+
+You should get about the following output::
+
+  These are the packages that would be merged, in order:
+  
+  Calculating dependencies... done!
+  [ebuild  N    ] dev-python/psycopg-2.0.8  USE="-debug -doc -examples -mxdatetime" 243 kB [0]
+  [ebuild  N    ] www-apache/mod_form-132  0 kB [1]
+  [ebuild  N    ] dev-perl/HTML-Tagset-3.20  8 kB [0]
+  [ebuild  N    ] dev-python/setuptools-0.6_rc9  247 kB [0]
+  [ebuild  N    ] perl-core/Test-Simple-0.80  80 kB [0]
+  [ebuild  N    ] perl-core/Sys-Syslog-0.27  75 kB [0]
+  [ebuild  N    ] perl-core/Storable-2.18  174 kB [0]
+  [ebuild  N    ] dev-perl/Config-IniFiles-2.39  USE="-test" 38 kB [0]
+  [ebuild  N    ] dev-python/cmdln-1.1.2  86 kB [1]
+  [ebuild  N    ] dev-perl/Digest-MD4-1.5  29 kB [0]
+  [ebuild  N    ] www-apache/mod_autoindex_mb-2.8.1  302 kB [1]
+  [ebuild  N    ] virtual/perl-Test-Harness-3.10  0 kB [0]
+  [ebuild  N    ] dev-perl/Net-Daemon-0.43  28 kB [0]
+  [ebuild  N    ] dev-perl/HTML-Parser-3.60  USE="-test" 86 kB [0]
+  [ebuild  N    ] dev-python/formencode-1.2.1  USE="-doc" 187 kB [0]
+  [ebuild  N    ] virtual/perl-Test-Simple-0.80  0 kB [0]
+  [ebuild  N    ] virtual/perl-Sys-Syslog-0.27  0 kB [0]
+  [ebuild  N    ] virtual/perl-Storable-2.18  0 kB [0]
+  [ebuild  N    ] dev-python/sqlobject-0.10.4  USE="postgres -doc -firebird -mysql -sqlite" 253 kB [0]
+  [ebuild  N    ] dev-perl/HTML-Tree-3.23  119 kB [0]
+  [ebuild  N    ] dev-perl/PlRPC-0.2020-r1  18 kB [0]
+  [ebuild  N    ] dev-perl/DBI-1.601  484 kB [0]
+  [ebuild  N    ] dev-perl/DBD-Pg-1.49  144 kB [0]
+  [ebuild  N    ] www-apache/mod_mirrorbrain-2.8.1  USE="-memcache" 0 kB [1]
+  [ebuild  N    ] dev-perl/Crypt-SSLeay-0.57  121 kB [0]
+  [ebuild  N    ] dev-perl/libwww-perl-5.805  USE="ssl" 232 kB [0]
+  [ebuild  N    ] www-misc/mirrorbrain-2.8.1  0 kB [1]
+  
+  Total: 27 packages (27 new), Size of downloads: 2,948 kB
+  Portage tree and overlays:
+   [0] /usr/portage
+   [1] /usr/portage/local/ramereth-overlay
+  
+  Would you like to merge these packages? [Yes/No]
+  ...
+
+
+

Added: trunk/docs/installation/index.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/installation/index.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,11 @@
+Installation
+============
+
+.. toctree::
+    :glob:
+
+    prerequirements
+    opensuse
+    gentoo
+    source
+

Added: trunk/docs/installation/opensuse.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/installation/opensuse.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,110 @@
+
+
+
+
+
+Installation on openSUSE Linux or SLE
+================================================================================
+
+Add the needed repositories (use the subdirectory matching your distribution):
+
+* http://download.opensuse.org/repositories/Apache:/MirrorBrain/
+* http://download.opensuse.org/repositories/devel:/languages:/python/
+* http://download.opensuse.org/repositories/server:/database:/postgresql/
+
+You can do this via commandline (we are using openSUSE 11.1 in our example)::
+
+  zypper ar http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_openSUSE_11.1 Apache:MirrorBrain 
+  zypper ar http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_11.1 devel:languages:python 
+  zypper ar http://download.opensuse.org/repositories/server:/database:/postgresql/openSUSE_11.1 server:database:postgresql
+
+Here's a list of packages needed to have one host running the database and the redirector:
+
+  apache2 apache2-mod_asn apache2-mod_geoip apache2-mod_mirrorbrain
+  apache2-webthings-collection apache2-worker GeoIP libapr-util1-dbd-pgsql
+  libGeoIP1 mirrorbrain mirrorbrain-scanner mirrorbrain-tools
+  perl-Config-IniFiles perl-DBD-Pg perl-Digest-MD4 perl-libwww-perl postgresql
+  postgresql-ip4r postgresql-server python-cmdln python-psycopg2
+  python-sqlobject
+
+.. note:: If the web server is set up on a separate host than the database
+          server, the web server needs only the package libapr-util1-dbd-pgsql
+          and no other postgresql* packages.
+
+You can install the packages via the following commandline::
+
+  zypper install apache2-worker \
+  apache2-mod_asn apache2-mod_mirrorbrain \
+  postgresql-server postgresql-ip4r \
+  mirrorbrain mirrorbrain-scanner mirrorbrain-tools 
+
+The packages not mentioned in this commandline are drawn in via package
+dependencies.
+
+
+.. Configure GeoIP
+.. ----------------------------------------------
+.. 
+.. Edit /etc/apache2/conf.d/mod_geoip.conf:
+.. 
+.. <IfModule mod_geoip.c>
+..    GeoIPEnable On
+..    GeoIPDBFile /var/lib/GeoIP/GeoIP.dat
+..    #GeoIPOutput [Notes|Env|All]
+..    GeoIPOutput Env
+.. </IfModule>
+.. 
+.. (Change GeoIPOutput All to GeoIPOutput Env)
+.. 
+..         Note that a caching mode like MMapCache needs to be used, when Apache runs with the worker MPM.In this case, use
+.. 
+..         <IfModule mod_geoip.c>
+.. [50px-]    GeoIPEnable On
+..            GeoIPDBFile /var/lib/GeoIP/GeoIP.dat MMapCache
+..            GeoIPOutput Env
+..         </IfModule>
+
+
+
+********************************************************************************
+Installing mod_asn
+********************************************************************************
+
+mod_asn is optional for MirrorBrain. MirrorBrain runs fine without it. If you
+don't need mirror selection based on network prefix or autonomous system, you
+don't need to install mod_asn.
+
+.. note::
+   There is a bug in the :program:`mb` tool that it depends on the existance on
+   the database table ``pfx2asn`` which is created when mod_asn is installed.
+
+To install mod_asn, refer to the `its documentation`__.
+
+__ /mod_asn/docs/
+
+
+
+********************************************************************************
+Troubleshooting
+********************************************************************************
+
+If Apache doesn't start, or anything else seems wrong, make sure to check
+Apache's error_log. It usually points into the right direction.
+
+A general note about Apache configuration which might be in order. With most
+config directives, it is important to pay attention where to put them - the
+order does not matter, but the context does. There is the concept of directory
+contexts and vhost contexts, which must not be overlooked.  Things can be
+"global", or inside a <VirtualHost> container, or within a <Directory>
+container.
+
+This matters because Apache applies the config recursively onto subdirectories,
+and for each request it does a "merge" of possibly overlapping directives.
+Settings in vhost context are merged only when the server forks, while settings
+in directory context are merged for each request. This is also the reason why
+some of mod_asn's config directives are programmed to be used in one or the
+other context, for performance reasons.
+
+The install docs you are reading attempt to always point out in which context
+the directives belong.
+

Added: trunk/docs/installation/prerequirements.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/installation/prerequirements.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,7 @@
+Prerequirements
+===============
+
+A recent enough version of the Apache HTTP server is required. 2.2.6 or later
+should be used. In addition, the apr-util library needs to be 1.3.0 or newer.
+This is because the DBD database pool functionality was developed mainly
+between 2006 and 2007, and reached production quality at the time.

Added: trunk/docs/installation/source.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/installation/source.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,350 @@
+Installation from source
+========================
+
+
+Install Apache 2.2.6 or later. 
+
+
+The main Apache module can be built with the following steps::
+
+  # unpack the tarball
+  cd mod_mirrorbrain
+  apxs2 -c mod_mirrorbrain.c
+
+To install the module in the right place, you would typically call::
+
+  apxs2 -i mod_mirrorbrain.c
+
+Building, installing and activation can typically be combined in one apxs call::
+
+  apxs2 -cia mod_mirrorbrain.c
+
+
+After installation of mod_mirrorbrain, you'll need to:
+
+
+* install GeoIP library, commandline tools, and geoip apache module
+  (openSUSE/SLE packages: GeoIP, libGeoIP1, apache2-mod_geoip)
+
+* configure mod_geoip::
+
+    GeoIPEnable On
+    GeoIPOutput Env
+    GeoIPDBFile /var/lib/GeoIP/GeoIP.dat MMapCache
+
+  (You would typically put this into the server-wide context of a virtual host.)
+
+  Note that a caching mode like MMapCache needs to be used, when Apache runs with the worker MPM.
+  See http://forum.maxmind.com/viewtopic.php?p=2078 for more information.
+
+* install mod_form. The sources are here:
+
+  * http://apache.webthing.com/svn/apache/forms/mod_form.c
+  * http://apache.webthing.com/svn/apache/forms/mod_form.h
+
+- install the following Python modules:
+
+  * python-cmdln
+  * python-sqlobject
+  * python-psycopg2
+
+- for the scanner, which is written in Perl, a few Perl modules are required:
+  * perl-Config-IniFiles
+  * perl-libwww-perl
+  * perl-Digest-MD4 (it is not *really* needed, but prevents an ugly error message)
+  * perl-DBD-Pg
+
+- configure the database to use with MirrorBrain, and continue with the respective
+  description below:
+
+
+  * install the PostgreSQL database adapter for the DBD library
+    Note that if the web server is set up seperately from the database server,
+    only the web server needs this package.
+  
+  * install postgresql and start it
+
+  * create the postgresql user account and database::
+
+
+       su - postgres
+       
+       root_at_powerpc:~ # su - postgres
+       postgres_at_powerpc:~> createuser -P mb
+       Enter password for new role: 
+       Enter it again: 
+       Shall the new role be a superuser? (y/n) n
+       Shall the new role be allowed to create databases? (y/n) n
+       Shall the new role be allowed to create more new roles? (y/n) n
+       CREATE ROLE
+       
+       postgres_at_powerpc:~> createdb -O mb mb_samba
+       CREATE DATABASE
+       postgres_at_powerpc:~> createlang plpgsql mb_samba
+       postgres_at_powerpc:~> 
+
+
+       postgres_at_powerpc:~> cp data/pg_hba.conf data/pg_hba.conf.orig
+       postgres_at_powerpc:~> vi data/pg_hba.conf
+
+       # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
+       # "local" is for Unix domain socket connections only
+       #local   all         all                               ident sameuser
+       local   all         all                               password
+       # IPv4 local connections:
+       host    all         all         127.0.0.1/32          password
+       # IPv6 local connections:
+       host    all         all         ::1/128               password
+       # remote connections:
+       host    mb_samba    mb          10.10.2.3/32          password
+
+       
+      
+  *  Tuning:
+
+     If the database will be large, reserve enough memory for it (mainly
+     by setting shared_buffers), and in any case you should switch off
+     synchronous commit mode (synchronous_commit = off). This can be set in
+     data/postgresql.conf.
+
+     Start the server::
+
+       root_at_powerpc:~ # rcpostgresql restart
+
+  * import table structure, and initial data::
+
+       psql -U mb -f sql/schema-postgresql.sql mb_samba
+       psql -U mb -f sql/initialdata-postgresql.sql mb_samba
+
+
+* Create a user and group::
+
+    groupadd -r mirrorbrain
+    useradd -r -o -g mirrorbrain -s /bin/bash -c "MirrorBrain user" -d /home/mirrorbrain mirrorbrain
+
+* create :file:`/etc/mirrorbrain.conf` with the content below. File permissions
+  should be 0640, ownership root:mirrorbrain::
+
+    [general]
+    instances = samba
+  
+    [samba]
+    dbuser = mb
+    dbpass = 12345
+    dbdriver = postgresql
+    dbhost = your_host.example.com
+    # optional: dbport = ...
+    dbname = mb_samba
+    
+    [mirrorprobe]
+    mailto = your_mail_at_example.com, another_mail_at_example.com
+
+
+* Note: the "mb" tool referenced below is (for convenience) a symlink to the
+  mirrordoctor.py script.
+
+* now you should be able to type 'mb list' without getting an error.
+  It'll produce no output, but exit with 0. If it gives an error, something is
+  wrong.
+
+* collect a list of mirrors (their HTTP baseurl, and their rsync or FTP baseurl
+  for scanning). For example::
+
+    http://ftp.isr.ist.utl.pt/pub/MIRRORS/ftp.suse.com/projects/
+    rsync://ftp.isr.ist.utl.pt/suse/projects/
+
+    http://ftp.kddilabs.jp/Linux/distributions/ftp.suse.com/projects/
+    rsync://ftp.kddilabs.jp/suse/projects/
+
+
+
+  Now you need to enter the mirrors into the database; it could be done using the
+  "mb" mirrorbrain tool. (See 'mb help new' for full option list.)::
+
+    mb new ftp.isr.ist.utl.pt \
+           --http http://ftp.isr.ist.utl.pt/pub/MIRRORS/ftp.suse.com/projects/ \
+           --rsync rsync://ftp.isr.ist.utl.pt/suse/projects/
+
+    mb new ftp.kddilabs.jp \
+           --http http://ftp.kddilabs.jp/Linux/distributions/ftp.suse.com/projects/ \
+           --rsync rsync://ftp.kddilabs.jp/suse/projects/
+
+
+  The tool automatically figures out the GeoIP location of each mirror by itself.
+  But you could also specify them on the commandline.
+
+  If you want to edit a mirror later, use::
+
+    mb edit <identifier>
+
+  To simply display a mirror dataset, you'd use 'mb show kddilabs', for instance.
+
+  Finally, each mirror needs to be scanned and enabled::
+
+    mb scan --enable <identifier>
+
+  See the output of 'mb help' for more commands.
+
+
+
+* configure Apache:
+
+  * load the Apache modules::
+
+     a2enmod form
+     a2enmod dbd
+     a2enmod mirrorbrain
+
+  * create a DNS alias for your web host, if needed
+
+  * configure the database adapter (mod_dbd), resp. its connection pool.
+    Put the configuration into server-wide context. Config example::
+
+      # for prefork, this configuration is inactive. prefork simply uses 1
+      # connection per child.
+      <IfModule !prefork.c>
+              DBDMin  0
+              DBDMax  32
+              DBDKeep 4
+              DBDExptime 10
+      </IfModule>
+
+  * configure the database driver.
+    Put the following configuration into server-wide OR vhost context. Make the file
+    chmod 0640, owned root:root because it will contain the database password::
+
+      DBDriver pgsql
+      # note that the connection string (which is passed straight through to
+      # PGconnectdb in this case) looks slightly different - pass vs. password
+      DBDParams "host=localhost user=mb password=12345 dbname=mb_samba connect_timeout=15"
+
+
+  * configure mod_mirrorbrain.
+    You probably want to reate a vhost (e.g.
+    /etc/apache2/vhosts.d/samba.mirrorbrain.org.conf) and add the MirrorBrain
+    configuration like shown here::
+
+      <VirtualHost your.host.name:80>
+          ServerName samba.mirrorbrain.org
+      
+          ServerAdmin webmaster_at_mirrorbrain.org
+      
+          DocumentRoot /srv/samba/pub/projects
+      
+          ErrorLog     /var/log/apache2/samba.mirrorbrain.org/logs/error_log
+          CustomLog    /var/log/apache2/samba.mirrorbrain.org/logs/access_log combined
+
+          <Directory /srv/samba/pub/projects>
+              MirrorBrainEngine On
+              MirrorBrainDebug Off
+              FormGET On
+              MirrorBrainHandleHEADRequestLocally Off
+              MirrorBrainMinSize 2048
+              MirrorBrainHandleDirectoryIndexLocally On
+              MirrorBrainExcludeUserAgent rpm/4.4.2*
+              MirrorBrainExcludeUserAgent *APT-HTTP*
+              MirrorBrainExcludeMimeType application/pgp-keys
+
+              Options FollowSymLinks Indexes
+              AllowOverride None
+              Order allow,deny
+              Allow from all
+          </Directory>
+      
+      </VirtualHost>
+
+  * restart Apache, while watching the error log::
+
+      tail -F /var/log/apache2/*_log &
+      rcapache2 restart
+
+    
+  * mirror surveillance needs to be configured. Put this into /etc/crontab::
+
+      -* * * * *                mirrorbrain   mirrorprobe -t 20 &>/dev/null
+
+    Likewise, configure scanning::
+
+      44 0,4,8,12,16,20 * * *   mirrorbrain   mb scan -j 3 -a
+
+
+TODO: describe how to test that the install was successful
+    (When testing, consider any excludes that you configured, and which may
+    confuse you.)
+
+
+TODO: describe decent logging setup
+
+
+* further things that you might want to configure:
+
+  * mod_autoindex_mb, a replacement for the standard module mod_autoindex::
+
+      a2dismod autoindex
+      a2enmod autoindex_mb
+      Add IndexOptions Metalink Mirrorlist
+      # or IndexOptions +Metalink +Mirrorlist, depending on your config
+
+  * add a link to a CSS stylesheet for mirror lists::
+
+      MirrorBrainMirrorlistStylesheet "http://static.opensuse.org/css/mirrorbrain.css"
+
+    and for the autoindex::
+
+      IndexStyleSheet "http://static.opensuse.org/css/mirrorbrain.css"
+
+  * prepare the metalink hashes. 
+
+    * First, add some configuration::
+
+        MirrorBrainMetalinkPublisher "openSUSE" http://download.opensuse.org
+        MirrorBrainMetalinkHashesPathPrefix /srv/metalink-hashes/ppc
+
+    * install the "metalink" tool from http://metamirrors.nl/metalinks_project
+      (openSUSE package called metalink, http://download.opensuse.org/repositories/network:/utilities/)
+      and create the actual hashes::
+
+        metalink-hasher update -t /srv/metalink-hashes/ppc/srv/ftp/pub/opensuse/ppc /srv/ftp/pub/opensuse/ppc
+
+    * add the hashing command to /etc/crontab to be run every few hours.
+
+
+.. note:: That's how far the instructions go. I hope they are useful. Please
+          subscribe to the mirrorbrain mailing list, see
+          http://mirrorbrain.org/communication .  Questions can be answered there,
+          feedback is appreciated.
+
+
+
+
+Memcache support
+================
+
+Memcache support is optional. You should not need it normally, so it is
+suggested that you just ignore this. When compiling with memcache support,
+-DWITH_MEMCACHE needs to be among the compile flags.
+apxs2 -c -Wc,"-DWITH_MEMCACHE -Wall -g" mod_mirrorbrain.c
+If you use an apr-util version prior to 1.3, the memcache client support isn't included. Then you'll
+need to get and build libapr_memcache, and then you'll probably build mod_mirrorbrain like this:
+apxs2 -c -I/usr/include/apr_memcache-0 -lapr_memcache '-Wc,-Wall -DWITH_MEMCACHE -g -D_GNU_SOURCE' mod_mirrorbrain.c
+
+Further steps required for memcache support would be:
+
+- install memcached
+- make sure it listens on localhost only (/etc/sysconfig/memcached)
+- start it ("/etc/init.d/memcached start")
+- configure it to start at boot ("chkconfig -a memcached")
+- install mod_memcache from http://code.google.com/p/modmemcache/
+  (openSUSE package apache2-mod_memcache); a2enmod memcache
+
+Configuration example::
+
+    <IfModule mod_memcache.c>
+        MemcacheServer 127.0.0.1:11211 min=0 smax=4 max=16 ttl=600
+    </IfModule>
+    <IfModule mod_mirrorbrain.c>
+        MirrorBrainMemcached On
+        MirrorBrainMemcachedLifetime 1800
+    </IfModule>
+
+

Added: trunk/docs/intro.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/intro.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,19 @@
+Introduction
+============
+
+MirrorBrain is an open source framework to run a content delivery network using
+mirror servers. It solves a challenge that many popular open source projects
+face - a flood of download requests, often magnitudes more than a single site
+could practically handle.
+
+A central (and probably the most obvious) part is a "download redirector" which
+automatically redirects requests from web browsers or download programs to a
+mirror server near them.
+
+Choosing a suitable mirror for a users request is the key, and MirrorBrain uses
+geolocation and global routing data to make a sensible choice, and achieve
+load-balancing for the mirrors at the same time. The used algorithm is both
+sophisticated and easy to control and tune. In addition, MirrorBrain monitors
+mirrors, scans them for files, generates mirror lists, and more.
+
+

Added: trunk/docs/known_problems.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/known_problems.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,16 @@
+Known problems
+==============
+
+Database reconnections issues
+-----------------------------
+
+If the database goes away (or is restarted), it is not clear at the moment if
+the pgsql database adapter used by Apache's DBD library reconnects cleanly.
+Sometimes it seems that it doesn't reconnect, and a graceful restart of Apache
+is needed. This needs further inspection.
+
+
+Passwords containing spaces
+-----------------------------
+
+Passwords containing spaces in :file:`/etc/mirrorbrain.conf` are known not to work.

Added: trunk/docs/mirrors.rst
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/docs/mirrors.rst	Tue Jul 14 00:00:15 2009	(r7698)
_at_@ -0,0 +1,34 @@
+Prerequirements for mirrors
+===========================
+
+
+* must run rsync, FTP or HTTP for scanning. rsync is best.
+
+
+Creating and maintaining the mirror database
+============================================
+
+
+Creating a new mirror
+---------------------
+
+Run the :program:`mb new` command, like this::
+
+  mb new opensuse.uib.no -H 'http://opensuse.uib.no/' -F 'ftp://opensuse.uib.no/pub/Linux/Distributions/opensuse/' -R rsync://opensuse.uib.no/opensuse-full/
+
+This creates a new entry in the mirror database for this mirror.
+
+
+Listing mirrors
+---------------
+
+mb list
+
+
+Displaying details about a mirror
+---------------------------------
+
+Changing a mirror
+---------------------
+
+mb edit


_______________________________________________
mirrorbrain-commits mailing list
Archive: http://mirrorbrain.org/archive/mirrorbrain-commits/

Note: To remove yourself from this list, send a mail with the content
 	unsubscribe
to the address mirrorbrain-commits-request_at_mirrorbrain.org
Received on Mon Jul 13 2009 - 22:00:18 GMT

This archive was generated by hypermail 2.3.0 : Mon Feb 20 2012 - 23:47:04 GMT