Beiträge getagged mit Server

Traffic Monitoring mit vnstat

Viele Internetnutzer haben mittlerweile eine Trafficflatrate und müssen sich über das verbauchte Transfervolumen keine Gedanken machen, aber im Wohnheim, bei Servern oder UMTS Verträgen sind Trafficbeschränkungen noch gang und gäbe. Da ich gern informiert sein wollte, wie viel Traffic mein Server verbraucht habe ich mir vnstat installiert.

Unter Ubuntu kann man vnstat einfach mit dem Paketmanager installieren. Danach muss man das Netzwerkinterface, welches überwacht werden soll, hinzufügen.

sudo apt-get install vnstat
sudo vnstat -u -i

Von nun an Zeichnet vnstat auf, wie viel Traffic über die angegebene Schnittstelle verschickt oder empfangen wird. Etwas später kann man sich dann den verbrauchten Traffic anzeigen lassen:

david@ubuntu-server:~$ vnstat
Database updated: Mon Mar 15 18:50:01 2010

	eth0

	   received:       1.09 GB (68.7%)
	transmitted:     507.82 MB (31.3%)
	      total:       1.58 GB

	                rx     |     tx     |  total
	-----------------------+------------+-----------
	yesterday     16.37 MB |   74.81 MB |   91.19 MB
	    today      4.15 MB |   49.71 MB |   53.86 MB
	-----------------------+------------+-----------
	estimated         5 MB |      62 MB |      67 MB

Mit den Optionen –months –days –hours kann man sich dann die jeweiligen Zusammenfassungen anzeigen lassen.

Da ich gern eine tägliche Zusammenfassung per Mail haben wollte, habe ich mir noch ein Shellscript geschrieben, welches mir täglich eine Übersicht des verbrauchten Traffics schickt. So hat man mit vnstat ein einfaches, aber ausreichendes Traffic Monitoring installiert. Zusätzlich könnte man sich noch das vnstat PHP frontend installieren.

, ,

4 Kommentare

Einstieg in GIT? Warum?

In der Webentwicklung ist der Umstieg auf GIT ein echter Trend. Vor einem Monat gab Fabien Potencier den Wechsel von svn zu GIT in der Entwicklung der neuen Symfony Version bekannt, CakePHP hat den Wechsel genauso wie phpBB schon vor einer ganzen Weile gemacht. Als Weitere wären da auch noch PHPUnit oder RubyOnRails. Dieser Trend hat natürlich auch mich interessiert, weshalb ich mein neues Projekt gleich mit GIT aufgesetzt habe. Am Anfang braucht man natürlich etwas Starthilfe, weil GIT vom Ansatz her anders als Subversion ist, aber diese Hilfe findet man in den zahlreichen Tutorials schnell.

Warum nutze ich GIT:

  • Die Geschwindigkeit:
    Da das gesamte Repository lokal gespeichert ist, sind die üblichen Arbeitsschritte wesentlich schneller als bei vielen anderen Versionsverwaltungen.
  • Offline Arbeiten
    Durch das lokale Repository kann man wunderbar Offline arbeiten. Wenn man dann später wieder online ist, kann man alle Änderungen einfach in  ein anderes Repository schieben.
  • Einfaches Taggen und Branching
    Natürlich gibt es auch bei GIT Konflikte, aber das Erstellen von Branchs und Tags ist SEHR einfach.
  • Jedes Repository ist ein Backup
    Mit GIT macht man keinen Checkout eines neuen Repositories sondern ein Clone, so hat man mit jedem neuen Repository ein komplettes Backup/eine komplette Kopie des Repositories. Bei einem Ausfall des “Hauptrepositories” kann man so sehr schnell auf ein anderes Repository umstellen.
  • Commits einfach Vorbereiten
    Git hat eine sogenannte Staging Area der man alle Änderungen für den nächsten Commit hinzufügen kann, wenn man nicht alle Dateien oder einzelne Datei Commiten möchte.

Weitere Gründe findet man hier.

Erste Schritte mit GIT:

Nun zu meinem kleinen Tutorial

Installation:

Unter Linux reicht es das Paket “git-core” zu installieren. Für Mac OS gibt es hier einen Installer und für Windows hier.

Einstellungen:

Als erstes muss man seinen Namen und die Emailadresse einstellen:

git config --global user.name "<Benutzername>"
git config --global user.email "<Email>"

Erstes Repository:

Nachdem wir uns mit GIT bekannt gemacht haben, können wir unser erstes Repository erstellen. Ich nehme einfach ein vorhandenes Projekt und führe git init aus:

david@ubuntu-server:~$ cd /home/david/project/
david@ubuntu-server:~/project$ git init
Initialized empty Git repository in /home/david/project/.git/

Jetzt fügt man einfach alle Dateien hinzu und macht den ersten commit.

david@ubuntu-server:~/project$ git add .
david@ubuntu-server:~/project$ git commit -m "initial commit"
[master (root-commit) 25c342d] initial commit
 5234 files changed, 502420 insertions(+), 0 deletions(-)
 create mode 100644 Readme
 create mode 100644 apps/admin/config/adminConfiguration.class.php
 create mode 100644 apps/admin/config/app.yml
...

Jetzt ändern wir etwas und zeigen an, was die Unterschiede sind:

david@ubuntu-server:~/project$ vim Readme
david@ubuntu-server:~/project$ git status
# On branch master
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#	modified:   Readme
#
no changes added to commit (use "git add" and/or "git commit -a")
david@ubuntu-server:~/project$ git diff Readme
diff --git a/Readme b/Readme
index a40145f..5c72d5b 100644
--- a/Readme
+++ b/Readme
@@ -1 +1,2 @@
+
 A Readme TestFile
david@ubuntu-server:~/project$ git commit -m "Readme File" Readme
[master 15563d6] Readme File
 1 files changed, 1 insertions(+), 0 deletions(-)

Mit git status sieht man also die geänderten Dateien, mit git diff die Unterschiede und mit git commit commitet man die Änderungen. Da GIT keine Dateien sondern Inhalte verwaltet muss man jede Änderung vor einem Commit hinzufügen, sowohl bei neuen Dateien als auch von bereits verwalteten Dateien.

Wie geht es nun weiter? Git kann natürlich noch viel mehr als nur commits und Unterschiede anzeigen. Viele weitergehende Informationen findet ihr im opensource Buch “Pro GIT” oder in folgenden Tutorials auf meinem Blog.

, , ,

Keine Kommentare

Serverumzug fast fertig

In letzter Zeit habe ich wenig von mir hören lassen. Diese Zeit habe ich für meinen Serverumzug genutzt.

Meinen alten Server hatte ich gekündigt und einen Neuen bei HostEurope bestellt. Dort habe ich nun einen virtuellen Linux Server und ein extra Webpack für meine Emailaccounts. Meine Internetseiten laufen also auf dem Vserver und meine Mails auf einem von HostEurope verwalteten Mailserver (bleibt mir als viel Konfigurationsaufwand erspart). Ich hoffe mit dieser Wahl bleibt mir ein neuer Serverwechsel erst einmal erspart, zumindest bis jetzt bin ich sehr zufrieden mit dem Wechsel.

Da ich derzeit wenig Zeit habe selbst Artikel zu schreiben, versorge ich euch einfach mit ein paar interessanten Links zu anderen Blogs:

Zum einen wäre da der Artikel “Dateidownload via PHP mit Speedlimit und Resume” auf phpgangsta.de oder die GIT 101 Präsentation von Scott Chacon.
Außerdem war ich auf der Suche nach einem Online Quelltext Editor, welcher Syntax Highlighting für verschiedene Sprachen kann. Gefunden habe ich EditArea.

Und last but not least gab es eine neues PHP Update und ein neues Symfony Update.

, ,

Keine Kommentare

Einfache Lasttests mit Apache ab

Heute möchte ich euch ein kleines, aber nützliches Tool vorstellen.

Um die Verfügbarkeit einer Internetseite unter hohen Belastungen zu testen, kann man einen Lastgenerator benutzen. Dieser generiert viele Anfragen gleichzeitig und simuliert so ein hohes Benutzeraufkommen. Apache ab ist ein konstruierter Lastgenerator, welcher nicht versucht einen realistischen Nutzer vorzutäuschen, sondern viele Anfragen an eine konkrete Seite schickt.

Ein konkreter Test mit Apache ab ist relativ einfach und sieht wie folgt aus:


macbook:~ david$ ab -n 200 -c 50 http://test.webserver/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking test.webserver (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests

Server Software:        Apache/2.2.12
Server Hostname:        test.webserver
Server Port:            80

Document Path:          /
Document Length:        927 bytes

Concurrency Level:      50
Time taken for tests:   22.955 seconds
Complete requests:      200
Failed requests:        0
Write errors:           0
Total transferred:      243400 bytes
HTML transferred:       185400 bytes
Requests per second:    8.71 [#/sec] (mean)
Time per request:       5738.652 [ms] (mean)
Time per request:       114.773 [ms] (mean, across all concurrent requests)
Transfer rate:          10.36 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   2.0      1       6
Processing:  1026 5446 2558.8   5007   12242
Waiting:     1025 5432 2554.1   4918   12194
Total:       1029 5448 2558.0   5013   12243

Percentage of the requests served within a certain time (ms)
  50%   5013
  66%   5494
  75%   5937
  80%   6548
  90%  10424
  95%  11114
  98%  11738
  99%  12195
 100%  12243 (longest request)

Dieser Befehl hat 200 Anfragen ausgeführt, von denen maximal 50 gleichzeitig verschickt wurden. Es wurden 8.71 Anfragen pro Sekunde geschickt. Eine Anfrage dauerte ca. 114.773 ms. Die Statistiken geben noch Auskunft über das übertragene Datenvolumen, Übertragungsdauer und Erreichbarkeit.

Mit Apache ab kann man relativ einfach und schnell Lasttests durchführen, aber einen echten Nutzer simulieren kann man damit nicht.

, , , ,

2 Kommentare

Buch: Grundlagen von Datenbanksystemen


Da ich mich derzeit auf ein paar Klausuren vorbereiten muss, komme ich nicht wirklich dazu meinen Blog zu pflegen. Deshalb möchte ich euch heute ein Buch vorstellen, welches ich im letzten Semester genutzt habe um mich auf eine Informatik Klausur vorzubereiten. Gerade für Webentwickler spielen Datenbanken eine große Rolle, fundiertes theoretisches Hintergrundwissen kann deshalb nicht Schaden. Darum möchte ich euch das Buch  ”Grundlagen von Datenbanksystemen” von A. Elmasri und B. Navathe vorstellen. Inhaltlich deckt das Buch folgende Schwerpunkte ab:

  • Grundkonzepte
    (Architektur, ER, EER)
  • Datenmodelle und Datenbanksprachen
    (RDB, relationale Algebra, OODB, SQL)
  • Entwurfsfragen
    (Normalisierung, Entwurf)
  • Mehrnutzerbetrieb
    (Transaktionen, Nebenläufigkeit, Sicherheit)

Mit diesen Schwerpunkten ist es für eine Einführungsvorlesung oder die praktische Arbeit eines Webentwicklers bestens geeignet. Durch die Zusammenfassungen am Ende eines Kapitels und die vielen praxisnahen Beispiel schaffen es die Autoren einen einfachen Einstieg in das theoretische Hintergrundwissen für Datenbanksysteme zu liefern. Durch die Wiederholungsfragen und Übungen zu jedem Kapitel kann man gleichzeitig prüfen, ob man den Stoff verstanden hat. Für Praktiker ist vor allem das Kapitel Entwurfsfragen interessant, dadurch kann man schon beim nächsten Datenbankentwurf Fehler vermeiden, welche einem sonst erst später auffallen.

Das Buch aus dem Pearson Verlag ist ca. 560 Seiten stark und empfehlenswerte Lektüre sowohl für Studenten, als auch für Praktiker.

, , , , ,

Keine Kommentare

PHP Entwicklungsserver auf dem Mac

Da ich meine PHP Anwendungen gerne lokal entwickle, um lästiges hin und her kopieren oder lange Wartezeiten zu vermeiden, brauche ich einen Webserver mit PHP und MySql (eventuell noch ein paar PEAR oder PECL Pakete, Imagemagick … ) auf meinem Laptop.
Da ich seit einem halben Jahr mit einem MacBook arbeite (was das Arbeiten an sich sehr vereinfacht), konnte ich nicht einfach “apt-get install apache2 … ” in die Konsole eingeben, sondern musste mir etwas anderes einfallen lassen. Die Pakete von Hand zu installieren, wirkte mir zu aufwändig, deshalb habe ich erstmal vorlieb mit XAMPP nehmen müssen. Das hat für den Anfang auch ganz gut funktioniert, nur hat es mich nicht wirklich glücklich gemacht, da alles etwas umständlich ist und die Konfiguration meist sehr stark vom spätere Livesystem abweicht.

Die für mich perfekte Lösung habe ich erst durch den Tip eines Freundes bekommen (keine Ahnung warum ich da nicht selbst drauf gekommen bin). Ich habe mir einfach VirtualBox installiert, eine virtuelle Maschine angelegt und Ubuntu Server installiert. Und siehe da, alles funktioniert wie ich es mir vorgestellt habe. Die Vorteile:

  • kein hin und her kopieren über die langsame Internetleitung/Offline arbeiten
  • Konfiguration wie das spätere Livesystem/saubere Entwicklungsumgebung
  • Beliebige Wahl des Betriebssystems
  • relativ einfach zu installieren
  • kein Webserver im normalen System nötig
  • bei Konfigurationsfehler setzt man die Maschine einfach zurück

Wenn ich jetzt also entwickeln möchte, wecke ich die Virtuelle Maschine aus dem Schlaf auf, mounte meine home directory und öffne den Webserver. Die IP des Webservers habe ich mir dafür in die /etc/hosts geschrieben.

, , , ,

Keine Kommentare

Apache Mod Rewrite aktivieren

Wenn man eine Internetseite für Suchmaschinen optimieren will, kommt man um ein URL rewriting nicht herum. Das Apache Modul mod_rewrite ist genau so ein URL rewriter, aber um ihn zu benutzen, muss das Modul erst einmal aktiviert bzw. geladen werden. Und genau das, werde ich hier in einem kurzen Tutorial erklären.

Debian:

Unter Linux Debian kann man mod rewrite mittels “a2enmod” recht einfach aktivieren, dafür einfach als Superuser (root) folgendes per SSH senden:

a2enmod rewrite

Nun bei Schritt 2. (Linux) weiter machen.

Linux:

Erstelle einen symbolischen Link von der Datei “/etc/apche2/mods-enabled/rewrite.load” zur Datei    “/etc/apache2/mods-available/rewrite.load”, um rewrite.load mit dem nächsten Apache restart zu laden.

ln  /etc/apache2/mods-available/rewrite.load /home/david/Desktop/rewrite.load –symbolic

(Pfad zu apache2 kann abweichen.)

Nun müssen wir noch das Umschreiben der URL im Vhost erlauben. Den <Directory *> Bereich des Verzeichnisses, in dem rewrite erlaubt werden soll, findet man meistens in der passenden .conf Datei in /etc/apache2/sites-enabled in dem jeweiligen Vhost (<vhost>). Hier nun den Eintrag AllowOverride suchen und auf All setzen. Dann den Eintrag Options suchen und um +FollowSymLinks erweitern. Das Ganze sieht dann ungefähr so aus:

AllowOverride All
Options +FollowSymLinks

(Unter Options können natürlich noch andere Werte auftauchen, diese einfach stehen lassen.)

Nun den Apache noch neu starten und mod rewrite sollte aktiviert sein und funktionieren.

/etc/init.d/apache2 restart

XAMPP unter Windows:

Um das Modul mod_rewrite zu aktivieren in der Datei “\apache\conf\httpd.conf” im XAMPP Ordner die Zeile “#LoadModule rewrite_module modules/mod_rewrite.sosuchen und die Raute am Anfang der Zeile entfernen. Ergebnis:

LoadModule rewrite_module modules/mod_rewrite.so

Den <Directory *> Bereich des Verzeichnisses, in dem rewrite erlaubt werden soll in der selben Datei suchen. Hier nun den Eintrag AllowOverride suchen und auf All setzen. Dann den Eintrag Options suchen und um +FollowSymLinks erweitern. Das Ganze sieht dann ungefähr so aus:

AllowOverride All
Options +FollowSymLinks

(Unter Options können natürlich noch andere Werte auftauchen, diese einfach stehen lassen.)

Jetzt den Apache2 noch neu starten und alles ist fertig.

Fehler:

Eine gute Zusammenfassung der häufigsten Fehler findet man hier.

, ,

3 Kommentare