-
Notifications
You must be signed in to change notification settings - Fork 8
Installation auf Debian squeeze auf Amazon EC2
Dies ist eine kompakte Anleitung zur Installation von Scrape-A-RIS auf einer Amazon-EC2-Instanz mit Debian 6.0.1. Ziel ist hier das schnelle Aufsetzen einer kostengünstigen Testumgebung.
Erstellt: 02.05.2013, zuletzt aktualisiert: 14.05.2013
Es wird benötigt:
- Ein Amazon AWS-Account zum Start einer EC2-Instanz
- Der private Teil eines SSH Schlüsselpaars von Amazon als .pem-Datei
- Ein Terminal mit SSH-Client, wie unter Linux, Mac OS X oder unter Cygwin auf Windows verfügbar
Die Instanz wird von einem AMI Image eingerichtet, das auf dieser Debian-Seite verlinkt wird:
http://wiki.debian.org/Cloud/AmazonEC2Image
Dort gibt es auch noch andere Images zur Auswahl. Dieser Aufruf führt direkt zum Anlegen der neuen Instanz in der Amazon-Zone EU-West (Irland):
https://console.aws.amazon.com/ec2/home?region=eu-west-1#launchAmi=ami-0f01367b
Es handelt sich um ein 64bit Debian squeeze 6.0.1 mit 8 GB Root-Volume auf EBS. Das Root-Volume ist also nicht-flüchtig und die Daten überstehen auch einen Neustart.
Hinweis: Für den Betrieb wäre diese Instanz noch nicht geeignet, da die 8 GB Speicher nicht für eine nennenswerte Datenbank ausreichen. 10gen hat einige Empfehlungen, wie man EC2 und EBS für Performance und Verfügbarkeit einrichtet. Stichwort: RAID.
Ich verwende die Größe M1-Small.
Beim Einrichten erstellt man ein neues Key-Pair oder wählt ein bereits erzeugtes aus. Das benötigt man zur Verbindung mit SSH.
Mein Key-Pair heißt marian.pem. Nachdem die Instanz fertig eingerichtet ist, kopiere ich mir den öffentlichen DNS-Namen aus der Konsole und starte meine SSH-Verbindung so:
ssh -i pfad/zur/datei/marian.pem root@ec2...amazonaws.com
Wichtig: SSH erfordert, dass die Datei marian.pem restriktive Nutzerrechte hat und meckert im Fall, dass
die Rechte zu freizügig gesetzt sind. Mit dem Befehl chmod 0600 pfad/zur/datei/marian.pem kann man
die Rechte einschränken.
Nun bin ich als root eingeloggt.
apt-get update
apt-get upgrade
apt-get install python-virtualenv python-dev libxslt1-dev
Damit MongoDB funktionieren kann, müssen wir die Locale-Einstellung anpassen. Mit diesem Befehl startet man die interaktive Konfiguration:
dpkg-reconfigure locales
Ich installiere en_US.utf8hinzu und wähle dies auch als Default.
Siehe http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian/
apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
touch /etc/apt/sources.list.d/10gen.list
echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | tee /etc/apt/sources.list.d/10gen.list
apt-get update
apt-get install mongodb-10gen
Der erste Start nach der Installation wird nicht funktionieren. Der Grund dafür ist der zu geringe Speicherplatz des Root-Laufwerks. Wir schaffen Abhilfe, indem wir einen Eintrag an die Konfigurationsdatei von MongoDB anhängen.
echo "smallfiles=true" >> /etc/mongodb.conf
Nun starten wir erneut.
/etc/init.d/mongodb start
mkdir scraper
cd scraper/
virtualenv venv
source venv/bin/activate
git clone git://github.com/marians/scrape-a-ris.git
cd scrape-a-ris/
pip install argparse importlib
pip install -r requirements.txt
cp config_example.py config.py
Jetzt bietet es sich an, die config.py zu bearbeiten. Falls Du dabei Hilfe benötigst, findest Du diese in der allgemeinen Installationsanleitung. Danach können wir einen ersten Test wagen:
python main.py -v
python main.py -v --start 2013-01 --end 2013-01 -q
python main.py --status
Fertig ist die Testumgebung.
Wie schon erwähnt, gibt es Tipps von 10gen zur optimalen Konfiguration von EBS Storage für schnelle und robuste MongoDB Server.
Wer dieser Anleitung hier gefolgt ist und diese Instanz nun doch etwas skalieren möchte, kann grob nach dem folgenden Schema verfahren:
- Neues EBS-Volume nach Geschmack und Bedarf anlegen und formatieren
- Verzeichnis
/var/lib/dbanlegen - Neues Volume in
/var/lib/dbmounten - MongoDB Server stoppen
- Verzeichnis
/var/lib/mongodbnach/var/lib/db/mongoverschieben - MongoDB Konfiguration anpassen (
dbpath=/var/lib/db/mongosetzen,smallfiles=trueraus nehmen) - MongoDB Server starten