Massenprojektierung Tutorial - Teil 1 - Einrichten des Servers

Veröffentlicht am 05.08.2013, Beitrag von

 

Achtung, jetzt wird es technisch! Aber so schlimm wird es auch wieder nicht. Mit ein paar einfachen mitteln kann man seinen kleinen V-Server zum Parking- / Massenprojektierungsserver umgestalten und auf einen schlag hunderten oder tausenden Domains einen Inhalt geben.

 

 

Voraussetzung für die Massenprojektierung

Dies ist überhaupt die Voraussetzung, um mit eine Massenprojektierung durchstarten zu können. Der Server muss so ausgelegt sein, dass alle konnektierten Domains automatisch in einem gewissen Verzeichnis auf dem Server landen. Von dort aus kann man dann relativ leicht mittels PHP die Domain auslesen und weiterverarbeiten.
Benötigt wird also ein V-Server (Tipp: Hetzner, 7,90€ pro Monat) sowie das kleine kostenlose Tool namens "Putty". Putty ist ein SSH Client. Mit diesem kannst du dich mit deinem Server verbinden und grundlegende Betriebssystem-spezifische Anpassungen vornehmen.

Wenn du also nun deinen frischen, nackten Server hast, sorge dafür, dass "Debian Plain" installiert wird. Debian ist sehr Leistungsstark und nicht so überladen wie zum Beispiel eine Suse Linus Installation.
debian installieren


Nachdem die Installation abgeschlossen ist, kannst du dich mit Putty zu deinem Server verbinden.


putty


 putty-login

 

Nächster Schritt: Debian updaten, Apache2,Mysql und ProFTPd installieren

So, nun wollen wir den Server erst einmal auf den neuesten Stand bringen. Das geschieht mit dem Befehl

[quotes]apt-get update[/quotes]

sowie

[quotes]apt-get upgrade[/quotes]

Etwaige Meldungen immer mit "Ja" bestätigen.

Ist das abgeschlossen, so installieren wir uns erst einmal einen Apache2 auf den Server. Apache2 ist der Webserver. Wenn also eine Domain auf den Server konnektiert wird, wird der Apache Server angesprochen und kümmert sich um das korrekte Routing der Domain.

[quotes]apt-get install apache2[/quotes]
Wie immer, alles mit YES bzw. JA bestätigen.
Ist der Apache installiert, so kannst du einmal deine Server IP mit dem Browser aufrufen, und du siehst:
it works

Weiter gehts - als nächstes soll MySQL sowie PHPMyAdmin installiert werden. Irgendwo müssen wir unsere Domains samt Inhalt ja speichern. SQL ist dafür mehr als geeignet. Mit PHPMyAdmin kannst du deine Datenbanken und Tabellen leicht verwalten.

[quotes]apt-get install mysql-server mysql-client[/quotes]
Dein Server wird dich nach einem MySQL Root Passwort fragen. Wähle ein gutes und merke es dir natürlich ;)

Bevor wir phpMyAdmin installieren können, benötigen wir zunächst die aktuelle PHP Version. PHP wird unsere Programmiersprache für die Massenprojektierung sein, ergo sollte es auch installiert werden:

[quotes]apt-get install php5 libapache2-mod-php5[/quotes]

Ist das fertig, geht es weiter mit phpMyAdmin:

[quotes]apt-get install phpmyadmin[/quotes]

Als Web Server wählst du apache2 (mit "Leertaste" ein Sternchen setzen). Alles andere mit Yes bestätigen. Anschließend fragt dich phpMyAdmin nach deinem MySQL Root Passwort. Eingeben, weiter, fertig.Nun kannst du phpMyAdmin aufrufen: http://DEINEIP/phpmyadmin
phpmyadmin

Log dich ein mit User "root" und deinem Passwort.

phpmyadmin2

Zu phpMyAdmin kommen wir später wieder. Als nächstes benötigen wir nun ProFTPd, um auf den Server via FTP Client zugreifen zu können.

[quotes]apt-get install proftpd[/quotes]

Als Konfiguration wählst du "Standalone". Ist die Installation abgeschlossen, müssen wir noch einen FTP User anlegen und ihm ein Verzeichnis zuweisen. Dazu tippen wir in Putty ein:

[quotes]adduser jens[/quotes]
Wähle einen Namen deiner Wahl, weise ihm ein Passwort zu. Alle anderen Punkte kannst du mit der Entertaste igonieren. Am Ende bitte speichern bestätigen. Ist der Name angelegt, musst du ihm noch das Standard FTP Verzeichnis zuweisen. Hierzu gibst du ein:

[quotes]nano /etc/passwd[/quotes]

nano ist ein Texteditor. Hier suchst du nun die Zeile mit deinem Usernamen (ganz unten). Die Stelle "/home/[deinUsername] ersetzt du bitte mit "/var/www/[deinUsername]". Mit STRG-x wirst du zum Speichern aufgefordert. Gib Yes / Ja ein und fertig.

Jetzt kommen wir zum Endspurt! Du musst nun das Verzeichnis mit deinem Usernamen in /var/www anlegen und ihm die nötigen Rechte geben. Hierzu wechselst du mittels Befehl "cd /var/www" in das entsprechende Verzeichnis und erstellst anschließend mit "mkdir [deinUsername]" das Verzeichnis. Jetzt gibst du dem Verzeichnis noch die nötigen Userrechte, damit du via FPT Client Dateien ändern kannst:

[quotes]chown -R [deinUsername]:www-data *[/quotes]

Soweit so gut, aber eine Datei musst du schließlich noch bearbeiten, damit alle deine Domains in deinem Username-Verzeichnis landen können. Bitte gib ein:

[quotes]cd /etc/apache2/sites-available[/quotes]

und öffne die Datei default:

[quotes]nano default[/quotes]

nano default

Jetzt änderst du die Zeile mit dem "DocumentRoot" von

DocumentRoot /var/www
in
DocumentRoot /var/www/deinUsername/

außerdem ersetzen:

 <Directory /var/www/>
in
<Directory /var/www/deinUsername/>

und mittels STRG-x speichern.

Jetzt noch ein

[quotes]apache2ctl restart[/quotes]

und du hast es endlich geschafft ;)

Rufst du deine ServerIP noch einmal auf, solltest du so eine Seite sehen:

index of

 

Wenn du ein absoluter Server-Neuling bist und auch von PHP keine Ahnung hast, solltest du nun eine Pause machen und dich erst einmal freuen, dass alles so gut funktioniert hat! 

Geht es dir wieder besser? Gut, dann bauen wir uns jetzt noch schnelle eine PHP Datei, welche deine Domains erkennt und später in deiner SQL Datenbank passenden Content ausspucken kann.

 

Die Massen-Projektierungs-Sammelstelle

Das Prinzip ist einfach: Alle Domains, die du auf deinen Server konnektierst, landen in dem Verzeichnis /var/www/deinUsername. Dort wird eine index.php aufgerufen. Diese schaut sich an, welche Domain gerade auf dieses Verzeichnis zugreift, sucht in der Datenbank nach dieser Domain. Existiert diese, werden sämtliche Eintrage (wir werden später aus der Datenbank den Meta Title, Description, Kurztext sowie gescrapten Content und ggf. Unterseiten auslesen) ausgelesen und an das Template übergeben und schön ausgespuckt.

Hierzu legst du dir lokal eine index.php an und öffnest sie (ich empfehle den kostenlosen Editor PSPad, dieser lässt sich übrigens auch mit FTP Programmen wie Filezilla verknüpfen, so kannst du sehr komfortabel "live" coden). PHP Dateien fangen IMMER mit "<? php " an und hören mit "?>" auf!
Möchten wir nun herausfinden, welche Domain auf das Verzeichnis zugreift, so tragen wir in die Datei ein:

[quotes]$domain = $_SERVER['HTTP_HOST'];
$parts = explode(".", $domain);
$domain = $parts[count($parts) -2];
$endung = $parts[count($parts) -1];
$endung = str_replace(":80", "", $endung);
$domain = "$domain.$endung";
print "<h1>$domain wurde aufgerufen</h1>";[/quotes]

Der ganze Code sorgt dafür, dass auch tatsächlich nur die Domain ausgelesen wird, und nicht noch etwaige Portangaben oder Subdirs/Subdomains. Ich habe mal die Domain "briefkaesten.org" auf meinen Massen-Projektierungsserver kopiert und aufgerufen, und siehe da:

briefkaesten

Jetzt können wir uns zunächst natürlich relativ leicht ein Template zusammenbauen. Aber das ganze lässt sich etwas besser perfektionieren, wenn wir auch selber eingreifen können. Dazu bauen wir einen kleinen Adminbereich, in dem wir bequem neue Domains anlegen können und die wichtigsten Daten wie zum Beispiel Keywords manuell eingeben und in einer Datenbank speichern.

Das aber gibt es erst im nächsten Teil des Tutorials. Und keine Angst, auch das Script, wenn es fertig gestellt ist, wird es zum Download geben ;)


Kommentare

  1. Siegmar

    5. August 2013 at 13:23

    @Jens: In der Tat – das war nun mal eine wirklich sehr technische Anleitung. Also wenn ich mal ein paar Stunden freie Zeit habe, dann werde ich das aber mal durcharbeiten. Ein paar freie Domains liegen bei mir natürlich auch noch rum, und dann könnte ich diese auch mal nutzen. Ich bin schon auf Deine Anleitung zum Download gespannt ?

  1. Andre

    5. August 2013 at 13:54

    Tolle Anleitung, Jens. Super beschrieben. Nun hab ich mal eine Frage: Ist es zum Beispiel möglich, die Domains, die bei z.B. Schlundtech registriert sind, auf einen v-Server umzuleiten ? Eigentlich ja, da ja nur die IP Adresse bei Schlundtech angegeben werden muß ! Oder ?

    • Jens

      5. August 2013 at 13:55

      Hi Andre,
      klar, das ist möglich. Du musst Schlund’s eigene Nameserver nutzen und als IP deine Server IP eintragen.

    •  
  1. Timo

    5. August 2013 at 13:59

    Hallo Jens,

    ein ähnliches System habe ich auch bereits laufen, nur ohne automatische Contenterstellung. Da bin ich schon sehr gespannt drauf

    Interessante Frage wäre auch, wie man bei so einem Multidomain-System ein gutes Tracking (zB mit Analyitcs oder Piwiks) einrichten kann. Hast du da auch eine Lösung für?

    Viele Grüße,
    Timo

    • Jens

      5. August 2013 at 14:02

      Hi Timo,
      ja, man kann theoretisch einen eigenen Counter dafür aufsetzen. Prinzipiell reicht es ja, bei jedem Aufruf den Referer zu tracken. Dann kann man später Bots ausschließen und das ganze auswerten. Eine kleine Lösung hierfür habe ich sicherlich dann noch parat ?

    •  
  1. Abro

    5. August 2013 at 15:03

    1)
    Bei diesem Projekt im Grunde völlig stressfrei, trotzdem ein guter Aufhänger um noch einmal darauf hinzuweisen, dass auch Browserheader Usereingaben sind, die validiert und escaped werden sollten. Screenshot: https://twitter.com/der_abro/status/364385456152014848

    2)
    Absolut geniale Artikelserie. Weiter so! <3

    • Jens

      5. August 2013 at 15:06

      Danke für den Hinweis ?

    •  
  1. Ronny

    6. August 2013 at 10:49

    Kleiner fehler? $domain.$endung ergibt „domaincom wurde aufgerufen“, da muss also der punkt nor wieder mit rein ? nur falls später die komplette domain in der db abgefragt werden soll.

    • Jens

      6. August 2013 at 11:13

      Nö, da alles in Anführungszeichen ist, wird der Punkt mitgenommen und ausgegeben.
      Ohne Anführungszeichen müsste es natürlich heißen:
      $domain.“.“.$endung;

    •  
  1. Andreas

    6. August 2013 at 22:04

    Vielen Dank für das Tutorial. Besonders für Anfänger ist das eine gute Hilfe.

  1. Ivo

    17. August 2013 at 09:47

    Sehr gute Anleitung. Bin schon auf die folgenden Artikel gespannt.

    Grüße Ivo

  1. Valerij

    26. August 2013 at 09:47

    Hallo,

    danke für die gute technische Anleitung!

  1. kent

    27. August 2013 at 06:20

    Super Anleitung. Ich warte auf die folgenden Artikel! danke schön..

  1. Jan

    27. August 2013 at 14:06

    Hallo Jens,

    danke für die tolle Anleitung. Wenn ich mal etwas Zeit habe werde ich es mal ausprobieren. Könntest du vielleicht mal ein oder auch zwei Tutorial für die Scrapebox machen?

  1. Markus

    29. August 2013 at 12:43

    Hallo Jens,

    Respekt, was du dir (und uns :-)) hier für eine Arbeit machst. Ich bin absoluter Newbie auf diesem Gebiet und werde noch etwas brauchen, um das Ganze umzusetzen.

    Eine Frage beschäftigt mich allerdings die ganze Zeit:

    Wenn ich alles richtig verstanden haben, legst du hier ja eine Art „Baukasten“ an, bei dem immer nur die Komponenten rausgezogen werden, die der Besucher gerade aufruft. Somit sind es ja keine wirklich eigenständigen Projekte.

    Hat das Ganze dann überhaupt eine Chance auf irgendwelche halbwegs guten Rankings zu bestimmten Keys? Oder greift man damit nur die TypeIns ab?

    Grüße
    Markus



Kommentar abgeben
Nach oben