Line 16: |
Line 16: |
| | | |
| ===Installation=== | | ===Installation=== |
− | The following Recipe for installing mirrorbrain on ubuntu 9.04 is based on information at http://mirrorbrain.org/docs/ .
| + | Please see http://mirrorbrain.org/docs/installation/debian/ . Our Sugar Labs installation instructions have become the official mirrorbrain on ubuntu instructions. |
| | | |
− | ====Install LAMP Server====
| |
− | Install a standard Ubuntu LAMP server
| |
− |
| |
− | ====Download mirrorbrain====
| |
− | <code>
| |
− | wget http://mirrorbrain.org/files/releases/mirrorbrain-2.10.0.tar.gz
| |
− | tar xzf mirrorbrain-2.10.0.tar.gz
| |
− | </code>
| |
− |
| |
− | ====Install python dependencies====
| |
− | <code>
| |
− | sudo apt-get install python-sqlobject python-psycopg2
| |
− | </code>
| |
− |
| |
− | The python cmdln module is not prepackaged for Ubutnu so it must be installed manually.
| |
− |
| |
− | <code>
| |
− | wget http://cmdln.googlecode.com/files/cmdln-1.1.2.zip
| |
− | unzip cmdln-1.1.2.zip
| |
− | cd cmdln-1.1.2
| |
− | sudo python setup.py install
| |
− | </code>
| |
− |
| |
− | ====Install perl dependencies for scanner====
| |
− | The mirrorbrain scanner is written in perl and requires several dependencies.
| |
− |
| |
− | <code>
| |
− | sudo apt-get install libconfig-inifiles-perl libwww-perl libdbd-pg-perl libdatetime-perl libdigest-md4-perl
| |
− | </code>
| |
− |
| |
− | ====Build, Install, and Configure Apache2 modules====
| |
− | Mirrorbrain requires several Apache modules, several of which must be built manually. Apache modules are built and installed using '''apxs2'''. (APache eXtenSion tool) Apxs2 is in the apache2-threaded-dev package.
| |
− |
| |
− | <code>
| |
− | sudo apt-get install apache2-threaded-dev
| |
− | </code>
| |
− |
| |
− | =====Install and Configure mod_geoip=====
| |
− | Mod_geoip is available as a prebuilt package.
| |
− |
| |
− | <code>
| |
− | sudo apt-get install libapache2-mod-geoip libgeoip-dev
| |
− | </code>
| |
− |
| |
− | Mod_geoip must be configured to find the the GeoIP data set.
| |
− |
| |
− | <code>
| |
− | sudo sh -c "cat > /etc/apache2/mods-available/geoip.conf << EOF
| |
− | <IfModule mod_geoip.c>
| |
− | GeoIPEnable On
| |
− | GeoIPOutput Env
| |
− | GeoIPDBFile /var/lib/GeoIP/GeoIP.dat Standard
| |
− | </IfModule>
| |
− | EOF
| |
− | "
| |
− | </code>
| |
− |
| |
− | Download GeoIP data set
| |
− | <code>
| |
− | wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
| |
− | sudo apt-get install gzip
| |
− | gunzip GeoIP.dat.gz
| |
− | sudo mkdir /var/lib/GeoIP
| |
− | sudo cp GeoIP.dat /var/lib/GeoIP/GeoIP.dat
| |
− | </code>
| |
− |
| |
− | Enable module.
| |
− | <code>
| |
− | sudo a2enmod geoip
| |
− | </code>
| |
− |
| |
− | Restart Apache
| |
− | <code>
| |
− | sudo /etc/init.d/apache2 restart
| |
− | </code>
| |
− |
| |
− | =====Install and Configure mod_form=====
| |
− | Mod_from must be build from sctatch.
| |
− |
| |
− | FIXME correct directory
| |
− | Download source
| |
− | <code>
| |
− | wget http://apache.webthing.com/svn/apache/forms/mod_form.c
| |
− | wget http://apache.webthing.com/svn/apache/forms/mod_form.h
| |
− | </code>
| |
− |
| |
− | build mod_form
| |
− | <code>
| |
− | sudo apxs2 -cia mod_form.c
| |
− | </code>
| |
− |
| |
− | create loader
| |
− | <code>
| |
− | sudo sh -c "cat > /etc/apache2/mods-available/form.load << EOF
| |
− | LoadModule form_module /usr/lib/apache2/modules/mod_form.so
| |
− | EOF
| |
− | "
| |
− | </code>
| |
− |
| |
− | Enable module.
| |
− | <code>
| |
− | sudo a2enmod form
| |
− | </code>
| |
− |
| |
− | Restart Apache
| |
− | <code>
| |
− | sudo /etc/init.d/apache2 restart
| |
− | </code>
| |
− |
| |
− | =====Configure mod_dsd=====
| |
− | configure mod_dsd
| |
− | <code>
| |
− | sudo sh -c "cat > /etc/apache2/mods-available/dbd.conf << EOF
| |
− | <IfModule mod_dbd.c>
| |
− | 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_sugar connect_timeout=15'
| |
− | </IfModule>
| |
− | EOF
| |
− | "
| |
− | </code>
| |
− |
| |
− | Enable module.
| |
− | <code>
| |
− | sudo a2enmod dbd
| |
− | </code>
| |
− |
| |
− | Restart Apache
| |
− | <code>
| |
− | sudo /etc/init.d/apache2 restart
| |
− | </code>
| |
− |
| |
− | =====Install and configure mod_mirrorbrain=====
| |
− | Build mod_mirrorbrain
| |
− | <code>
| |
− | sudo apxs2 -cia mod_mirrorbrain.c
| |
− | </code>
| |
− |
| |
− | create module loader
| |
− | <code>
| |
− | sudo sh -c "cat > /etc/apache2/mods-available/mirrorbrain.load << EOF
| |
− | LoadModule mirrorbrain_module /usr/lib/apache2/modules/mod_mirrorbrain.so
| |
− | EOF
| |
− | "
| |
− | </code>
| |
− |
| |
− | Enable module.
| |
− | <code>
| |
− | sudo a2enmod mirrorbrain
| |
− | </code>
| |
− |
| |
− | Restart Apache
| |
− | <code>
| |
− | sudo /etc/init.d/apache2 restart
| |
− | </code>
| |
− |
| |
− | ====Build and Install helper programs====
| |
− | build and install geoiplookup
| |
− | <code>
| |
− | gcc -Wall -lGeoIP -o geoiplookup_continent geoiplookup_continent.c
| |
− | sudo cp geoiplookup_continent /usr/bin/geoiplookup_continent
| |
− | </code>
| |
− |
| |
− | Install scanner
| |
− | <code>
| |
− | sudo cp ../tools/scanner.pl /usr/bin/scanner
| |
− | </code>
| |
− |
| |
− | ====Install postgres====
| |
− | <code>
| |
− | sudo apt-get install postgresql-8.3
| |
− | </code>
| |
− |
| |
− | =====Create the postgresql user account and database=====
| |
− | Switch to user postgress
| |
− | <code>
| |
− | sudo su - postgres
| |
− | </code>
| |
− |
| |
− | Create user
| |
− | <code>
| |
− | 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
| |
− | </code>
| |
− |
| |
− | Create database
| |
− | <code>
| |
− | createdb -O mb mb_sugar
| |
− | createlang plpgsql mb_sugar
| |
− | </code>
| |
− |
| |
− | Exit user postrges
| |
− | <code>
| |
− | exit
| |
− | </code>
| |
− |
| |
− | =====Edit host-based authentication=====
| |
− | add line 'local mb_sugar mb trust' to the end of pg_hba.conf
| |
− |
| |
− | FIXME should not be trust on production machine
| |
− | <code>
| |
− | sudo vim /etc/postgresql/8.3/main/pg_hba.conf
| |
− | </code>
| |
− |
| |
− | Start the potgres server
| |
− | <code>
| |
− | sudo /etc/init.d/postgresql-8.3 restart
| |
− | </code>
| |
− |
| |
− | =====Import intial mirrorbrain Data=====
| |
− | Import table structure, and initial data
| |
− | <code>
| |
− | psql -U mb -f sql/schema-postgresql.sql mb_sugar
| |
− | psql -U mb -f sql/initialdata-postgresql.sql mb_sugar
| |
− | </code>
| |
− |
| |
− | =====Create mirrorbrain user and group=====
| |
− | <code>
| |
− | sudo groupadd -r mirrorbrain
| |
− | sudo useradd -r -g mirrorbrain -s /bin/bash -c "MirrorBrain user" -d /home/mirrorbrain mirrorbrain
| |
− | </code>
| |
− |
| |
− | =====Create mirrorbrain.conf=====
| |
− | <code>
| |
− | sudo sh -c "cat > /etc/mirrorbrain.conf << EOF
| |
− | [general]
| |
− | instances = samba
| |
− | [samba]
| |
− | dbuser = mb
| |
− | dbpass = 12345
| |
− | dbdriver = postgresql
| |
− | dbhost = 127.0.0.1
| |
− | # optional: dbport = ...
| |
− | dbname = mb_sugar
| |
− | [mirrorprobe]
| |
− | mailto = dfarning@sugarlabs.org
| |
− | EOF
| |
− | "
| |
− | </code>
| |
− |
| |
− | Set permission and priviglies
| |
− | <code>
| |
− | sudo chmod 0604 /etc/mirrorbrain.conf
| |
− | sudo chown root:mirrorbrain /etc/mirrorbrain.conf
| |
− | </code>
| |
− |
| |
− | =====Test mirrorbrain=====
| |
− | <code>
| |
− | ./mirrordoctor.py
| |
− | </code>
| |
− |
| |
− | ====Create VirtualHost====
| |
− | <code>
| |
− | sudo sh -c "cat > /etc/apache2/sites-available/mirrorbrain << EOF
| |
− | <VirtualHost 127.0.0.1>
| |
− | ServerName mirrors.sugarlabs.org
| |
− | ServerAdmin webmaster@mirrorbrain.org
| |
− | DocumentRoot /var/www/downloads
| |
− | ErrorLog /var/log/apache2/mirrors.sugarlabs.org/error_log
| |
− | CustomLog /var/log/apache2/mirrors.sugarlabs.org/access_log combined
| |
− | <Directory /var/www/downloads>
| |
− | 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>
| |
− | EOF
| |
− | "
| |
− | </code>
| |
− |
| |
− | Enable site.
| |
− | <code>
| |
− | sudo a2ensite mirrorbrain
| |
− | </code>
| |
− |
| |
− | Restart Apache
| |
− | <code>
| |
− | sudo /etc/init.d/apache2 restart
| |
− | </code>
| |
| | | |
| <noinclude>{{ GoogleTrans-en | es =show | bg =show | zh-CN =show | zh-TW =show | hr =show | cs =show | da =show | nl =show | fi =show | fr =show | de =show | el =show | hi =show | it =show | ja =show | ko =show | no =show | pl =show | pt =show | ro =show | ru =show | sv =show }}</noinclude> | | <noinclude>{{ GoogleTrans-en | es =show | bg =show | zh-CN =show | zh-TW =show | hr =show | cs =show | da =show | nl =show | fi =show | fr =show | de =show | el =show | hi =show | it =show | ja =show | ko =show | no =show | pl =show | pt =show | ro =show | ru =show | sv =show }}</noinclude> |