Service/mirrors: Difference between revisions

Dfarning (talk | contribs)
m fix command
Dfarning (talk | contribs)
m move install instructions to the official mirror brain documentation
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>