Das Kopieren einer Webseite oder anlegen eines Backup einer Internetseite ist mit wget, dem standard Konsolen Programm zum herunterladen von FTP- oder HTTP-Servern unter Linux, ein leichtes. Alle Parameter von wget lassen sich, wie in der Shell üblich, beinahe beliebig miteinander kombinieren. Hier eine Kurzübersicht.

Rekursiv

wget -r http://www.example.com

Der Parameter -r bedeutet rekrusiv.

nach Dateiendungen / Dateityp

wget -A jpeg,jpg,bmp,gif,png http://www.example.com

Mit dem Parameter -A ist es möglich eine Komma separierte Liste mit Dateitypen anzugeben, welche wget herunterladen soll.

wget -nd -r http://www.example.com

Der Paramter -nd weist wget an alles in einen einzigen Ordner zu kopieren. Die Ordnerstruktur der Webseite wird dabei nicht übernommen.

Nur Unterordner

wget -r --no-parent http://www.example.com/subfolder/

Nur einen bestimmter Unterordner kann mit –no-parent bestimmt werden.

Maximale Tiefe / Rekursion

wget -r -l 2 http://www.example.com/subfolder/

Die maximale tiefe der Unterordner kann mit dem Parameter -l bestimmt werden.

robots.txt ignorieren

wget -r -e robots=off http://example.com

wget kann angewiesen werden die Einstellungen der robots.txt zu ignorieren. Mit der Option -e wird der „.wgetrc“-artigen Befehl „robots=off“ ausgeführt.

wget -P /your/savepath http://example.com

Der Pfad in den wget die Dateien speichert wird mit -P angegeben.

Viel Glück beim Sicherungen anlegen.

Keine Kommentare »
 

Aus Sicherheitsgründen ist die Anzeige von Fehlern in Magento standardmäßig deaktiviert. Sollte ein Fehler auftreten findet eine Weiterleitung zu einer Fehlerseite statt. Für Entwickler / Template Designer ist das denkbar ungünstig. Um im Magento Shopsystem die Fehleranzeige zu aktivieren muss die Datei **MAGE_ROOT***/errors/local.xml erstellt werden. Der Inhalt dieser Datei:

<?xml version="1.0"?>
<config>
    <skin>default</skin>
    <report>
        <!--
            "action" can be set to "print" to show exception on screen and "email"
            to send exception on specified email
        -->
        <action>print</action>
        <!--
            in "subject" you can set subject of email
        -->
        <subject>Store Debug Information</subject>
        <!--
            "email_address" admin email address
        -->
        <email_address></email_address>
        <!--
            "trash" is handle about trace info
            value "leave" is for store on disk
            value "delete" is for cleaning
        -->
        <trash>leave</trash>
    </report>
</config>

Eine Vorlage hierfür finden wir in /errors/local.xml.sample.

Keine Kommentare »
 

Dem Besucher die Möglichkeit zu geben die Anfahrt zu einem Unternehmensstandort berechnen zu lassen ist heut zu tage ein muss für jede Unternehmens Webseite. Unschön ist ein weiteres Fenster / Pop-Up das sich öffnet nur um eine Anfahrtsskizze über die Google Maps Funktion anzuzeigen. Im selben Fenster wollen wir Google Maps nicht öffnen. Wir wollen den Besucher nicht von der Webseite weg manövrieren.

Ein Lösungsvorschlag von mir ist das öffnen von Google Maps in einer Highlighting-Box wie der Shadowbox. Als angenehm empfunden haben viele Besucher einen zweiten Link für die Google Routen Berechnung. Bei den Vorhaben seine Anfahrtsroute zu berechnen sollte man dem Besucher nicht im Interface / Platz beschneiden.

Hierzu habe ich mithilfe von jQuery ein kleines Script geschrieben, das am besten in den Header des Dokumentes, nach dem jQuery Framework und der Shadowbox, eingebunden wird. Ein paar HTML Elemente müssen wir ebenfalls auf der Webseite platzieren um dem Besucher Interaktion zu ermöglichen.

Das Beispiel auf dieser Seite beeinhaltet die Anzeige der Anfahrt, dargestellt in der Shadowbox, ins Watergate nach Berlin.

Anfahrt anzeigen • Route berechnen
Fremd Beispiel 2:PSD zu WordPress Theme(unten auf der Seite)

Die Einrichtung um Google Maps in der Shadowbox öffnen zu lassen gestaltet sich, wenn man weiß wie, sehr einfach.
Das jQuery Framework und die Shadowbox müssen vor Script Aufruf in das HTML Dokument eingebunden werden. Dies geschieht im Kopfbereich folgerndermaßen:

<link rel="stylesheet" type="text/css" href="shadowbox.css" />
<script src="jquery.js" type="text/javascript"></script>
<script src="shadowbox.js" type="text/javascript"></script>

Aktuelle Downloads findest du hier:

Dieses Script bindet das „click“ Event an den Link und macht es uns möglich nach einem Klick eines Benutzers mit einer eigenen Funktion zu reagieren. In unserer Funktion werden wird der Wert des Formularfeldes ermittelt und als GET Parameter (Adresse) für den iFrame der Shadowbox verwendet.

Das zweite „click“ Event öffnet ein neues Fenster / Tab mit der Adresse aus dem Formularfeld für die Google Routen Berechnung.

jQuery(document).ready(function() {
   Shadowbox.init({
       handleOversize: 'drag',
       modal: true
   });
   jQuery('#google-route-b').bind('click', function() {
       Shadowbox.open({
	   content: jQuery(this).attr('href')+jQuery('#google-route-f').attr('value'),
  	   player:  'iframe'
      });
      return false;
   });
   jQuery('#google-route-d').bind('click', function() {
	jQuery(this).attr('href', jQuery(this).attr('href')+jQuery('#google-route-f').attr('value'));
	return true;
   });
});

Der Selektor #google-route-b steht hierbei für den Link auf den geklickt werden muss um unser „Formular“ abzusenden. #google-route-f bezeichnet das Feld mit der Adresse des Besuchers. Die Rückgabe von „false“ am Ende der Funktion verhindert das öffnen von den Google Routen im selben Fenster.

#google-route-d kennzeichnet den Link um die Google Routen Berechnung. Nach dem Einfügen der Adresse aus dem Input Feld in den Link wird „true“ zurück gegeben um dem Browser zu signalisieren weiter mit seiner standard Link Routine zu arbeiten.

<input type="text" name="saddr" title="Ihre Adresse" class="input-text" id="google-route-f">
<a href="http://maps.google.de?daddr=***DEINE STRAßE, DEINE STADT***&amp;&output=embed&saddr=" title="Anfahrt anzeigen" id="google-route-b" target="_blank">Anfahrt anzeigen</a>
<a href="http://maps.google.de?daddr=***DEINE STRAßE, DEINE STADT***&amp;saddr=" title="Route berechnen" id="google-route-d" target="_blank">Route berechnen</a>

***DEINE STRAßE, DEINE STADT*** ist natürlich durch die jeweilige Firmenadresse zu ersetzen.

Keine Kommentare »
 

Das Provider oder Hoster Logo wird in Froxlor unter images/header.gif (/var/www/froxlor/images/header.gif für ehemalige Hetzner SysCP User) zusammen mit einem Stück Header grafik aufbewahrt. Durch ersetzen dieses Bildes kann man sehr leicht sein eigenes Firmenlogo integrieren. Noch eine blanko Vorlage für euch.

Froxlor Logo Header blanko
(wird auf Klick, in neuem Tab, in Originalgröße dargestellt)

Keine Kommentare »
 

Ich möchte vorweg darauf hinweisen, das es bei mir bei dem Update heute nacht um 3 Uhr etwas turbulent zur Sache ging. Keine der Anleitungen die ich online gefunden hatte hatten ihr Froxlor Installationen nach dem Upgrade von SysCP überprüft. Keine dieser Anleitungen verlief Fehlerlos bzw. ohne Folgefehler durch Konfigurationsfehler. Der Server sollte natürlich bis morgens wieder für Hosting Kunden nutzbar funktionieren. Ich hoffe dieser Ärger bleibt euch mit diesem Tutorial erspart.

Vorwort

  • Es wird eine funktionsfähige Hetzner SysCP Image Installtion benötigt (SysCP Root: /var/syscp/web/)
  • Der gesamte Installationsvorgang findet über eine SSH Verbindung auf dem Server statt
  • Allgemein gilt in diesem Tutorial immer durch die entsprechenden Werte zu ersetzen

Update Vorbereitungen

  • SysCP sichern
    Zunächst sollten alle Daten von SysCP gesichert werden. Ebenso machen wir ein Backup von /etc/ da wir hier im zuge des Upgrades auch Änderungen vornehmen werden. Wir nutzen für das SysCP Datenbank Backup die Option „–add-drop-table“ um ein löschen der alten Inhalte vor dem einspielen der neuen auszulösen. Diese Option benötigen wir da wir im zuge des Updates den veränderten SysCP SQL Dump in diese selbe Datenbank wieder einspielen. Eure MySQL Zugangsdaten findet ihr in der SysCP Konfiguration (/var/syscp/lib/userdata.inc.php /).

    EMP-S:~# cp -rp /etc/ /root/etc_bak/
    EMP-S:~# cd /var/syscp/web/
    EMP-S:/var/syscp/web/# cp -rp * ../../syscp_bak/
    EMP-S:/var/syscp/web/# mysqldump --databases --opt -Q -u -p --add-drop-table syscp &gt; ../../syscp_bak/db.sql
  • sources.list erweitern

    Die Datei /etc/apt/sources.list um erweitern um:

    deb      http://debian.froxlor.org lenny main
    deb-src  http://debian.froxlor.org lenny main

    Kommando zum öffnen der Datei (erspart Tipparbeit):

    EMP-S:~# nano /etc/apt/sources.list
  • SysCP Cronjobs deaktivieren
    Durch auskommentieren der Konfiguration deaktivieren wir die SysCP Cronjobs.
    Kommando zum öffnen der Datei:

    EMP-S:~# nano /etc/cron.d/syscp

    Dateinhalt nach der Bearbeitung:

    #
    # Set PATH, otherwise restart-scripts won't find start-stop-daemon
    #
    # PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    #
    # Regular cron jobs for the syscp package
    #
    #00 */1 * * *   root    /usr/bin/php5 -q /var/syscp/web/scripts/cron_tasks.php
    #0 0 * * *      root    /usr/bin/php5 -q /var/syscp/web/scripts/cron_traffic.php
    #30 0 * * *     root    /usr/bin/php5 -q /var/syscp/web/scripts/cron_ticketarchive.php
    #0 1 * * *      root    /usr/bin/php5 -q /var/syscp/web/scripts/cron_used_tickets_reset.php
    #00 */1 * * *   root    /usr/bin/php5 -q /var/syscp/web/scripts/cron_autoresponder.php
    #00 */1 * * *   root    /usr/bin/php5 -q /var/syscp/web/scripts/cron_apsinstaller.php
    #*/15 * * * *   root    /usr/bin/php5 -q /var/syscp/web/scripts/cron_apsupdater.php
  • SQL Dump für Froxlor aufbereiten
    Hierbei ersetzen wir den Pfad /var/syscp/web/ mit /var/www/froxlor/ und den Pfad /var/syscp/ mit /var/www/ in einer Kopie unseren SysCP SQL Dumps.

    EMP-S:~# cd /var/sycp_bak/
    EMP-S:/var/sycp_bak/# cp db.sql db_new.sql
    EMP-S:/var/sycp_bak/# sed -i 's//var/syscp/web///var/www/froxlor//g' db_new.sql
    EMP-S:/var/sycp_bak/# sed -i 's//var/syscp///var/www//g' db_new.sql

Froxlor Installieren

  • Froxlor Installation über APT Paketmanagement System
    EMP-S:~# apt-get update
    EMP-S:~# apt-get install froxlor
  • Besitzer und Gruppe des Froxlor Verzeichnisses anpassen
    EMP-S:~# chown -R www-data:www-data /var/www/froxlor/
  • Alte SysCP Konfiguration in Froxlor nutzen
    EMP-S:~# cp /var/syscp_bak/lib/userdata.inc.php /var/www/froxlor/lib/
  • Bearbeitete Kopie der SysCP Datenbank für Froxlor einspielen
    EMP-S:~# mysql -u -p
    mysql&gt; use syscp  
    mysql&gt; source /var/syscp_bak/db_new.sql
  • Symlinks für phpMyAdmin und Squirrelmail erstellen
    EMP-S:~# ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
    EMP-S:~# ln -s /usr/share/squirrelmail/ /var/www/squirrelmail
  • Verzeichnisse kopieren
    Wichtig ist hierbei Rechte und Benutzer beizubehalten. Die User Unterverzeichnise in fcgi/ logs/, tmp/ und webs/ sollten den entsprechenden fcgi Benutzer (Kunden) gehören. Das Verzeichnis mails/ dem Benuter vmail. Das bewirkt die Option -p beim Kopieren mit cp.

    EMP-S:~# cp -rp /var/syscp/fcgi/ /var/www/
    EMP-S:~# cp -rp /var/syscp/logs/ /var/www/
    EMP-S:~# cp -rp /var/syscp/mails/ /var/www/
    EMP-S:~# cp -rp /var/syscp/tmp/ /var/www/
    EMP-S:~# cp -rp /var/syscp/webs/ /var/www/
  • Apache Konfiguration für Froxlor anpassen
    Hierbei muss der Pfad /var/syscp/web/ in /var/www/froxlor geändert werden. Der Ordnung halber ist es empfehlenswert die Konfigurationsdatei entsprechend umzubenennen und den Symbolischen Link auf die Konfiguration zu ändern.

    EMP-S:~# sed -i 's//var/syscp/web///var/www/froxlor//g' /etc/apache2/sites-available/syscp
    EMP-S:~# mv /etc/apache2/sites-available/syscp /etc/apache2/sites-available/froxlor
    EMP-S:~# rm /etc/apache2/sites-enabled/00-syscp
    EMP-S:~# ln -s /etc/apache2/sites-available/froxlor /etc/apache2/sites-enabled/froxlor
  • Suexec Pfade für Froxlor anpassen
    In der Datei /etc/apache2/suexec/www-data den Pfad /var/syscp/ in /var/www/ ändern.

    EMP-S:~# sed -i 's//var/syscp///var/www//g' /etc/apache2/suexec/www-data
  • Postfix Konfiguration für Froxlor anpassen
    Konfigurations Option virtual_mailbox_base in /etc/postfix/main.cf von /var/syscp/mails/ in /var/www/mails/ ändern.

    EMP-S:~# sed -i 's//var/syscp/mails///var/www/mails//g' /etc/postfix/main.cf
  • Squirrelmail Konfiguration für Froxlor anpassen
    Die Pfade /var/syscp/squirrelmail/data/ und /var/syscp/squirrelmail/attach/ müssen in der Datei auf /var/www/squirrelmail/*/ angepasst werden.

    EMP-S:~# sed -i 's//var/syscp///var/www//g' /etc/squirrelmail/config.php

    Anmerkung
    In dieser Datei können Providername, Logo und dergleichen für Squirrelmail angepasst werden. Nutzt die Gelegenheit sonst macht ihr das nie.

  • Froxlor Cronjob erstellen
    Wir erstellen die Datei /etc/cron.d/froxlor

    EMP-S:~# nano /etc/cron.d/froxlor

    und füllen sie mit den Werten für die Froxlor Cronjobs:

    #
    # Set PATH, otherwise restart-scripts won't find start-stop-daemon
    #
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    #
    # Regular cron jobs for the froxlor package
    #
    */1 * * * *     root    /usr/bin/php5 -q /var/www/froxlor/scripts/froxlor_master_cronjob.php
  • Apache und Postfix neu starten

    EMP-S:~# /etc/init.d/apache2 restart
    EMP-S:~# /etc/init.d/postfix restart

Froxlor Konfiguration

Froxlor ist nun unter Eurer IP:Euerm Port (Standard 81) erreichbar.

  • Installationsassistent
    Den neuen Prozess Spawn Manager habe ich auch nicht aktiviert. Ich warte erstmal ein paar Erfahrungsberichte ab.
  • Fehlerquelle: php.ini Settings
    Die Zeile

    open_basedir = "{OPEN_BASEDIR}"

    sollte in den php.ini Konfigurationen durch

    {OPEN_BASEDIR_C}open_basedir = "{OPEN_BASEDIR}"

    ersetzt werden. Ansonsten könnte es zu Fehlern in PHP Applikationen kommen. Im Falle Magento bekommt man die Ausgabe „No input file specified“.

SysCP entfernen

Prüft nochmals alle Funktionen bevor ihr euer SysCP vom Server entfernt.

  • SysCP löschen
    Das „immutable“ Attribut von den fcgi Scripts entfernen (chattr -i) und den SysCP Ordner vom Dateisystem löschen.

    EMP-S:~# chattr -i -R /var/syscp/fcgi/
    EMP-S:~# rm -r /var/syscp/

    Vergesst die Backups nicht. /root/etc_bak/ und /var/syscp_bak/. Aufheben oder löschen. Wie es euch lieb ist.

  • Jagd nach Überlebenden
    Wer lustig ist kann nun noch nach überbleibseln von SysCP auf dem Server suchen und diese beseitigen. Den Datenbankname könnte man noch von syscp auf froxlor ändern. Ebenso den Unix Benutzer syscp. Weitere Überbleibsel findet man auch mit dem Kommando:

    grep -r syscp *

Froxlor ist nun via Debian APT Paketmangement Software updatebar installiert und konfiguriert. Ich hoffe bei euch läuft das mit Hilfe der Anleitung weniger turbulent und stressig. Abweichung und weitere Tipps sind erwünscht. Möchte jemand das Tutorial zu einem Update Script zusammenfassen? 😛

10 Kommentare »
 

Das Beenden bzw. killen von Prozessen unter Linux / Unixoiden Systemen erfolgt in der Regel über das kill-Kommando in der Konsole. Bevor dieses Kommando zum „killen“ des Prozessen benutzbar ist muss jedoch die Prozess ID ermittelt werden. Für das ermitteln der Prozess ID empfehle ich die Konsolen-Kommando Kombination:

ps aux | grep <PROZESSNAME>

<PROZESSNAME> ist mit dem Prozess Name zu ersetzen. Beispielsweise „apache“. Das „apache“ Beispiel beschert mir auf einem Server diese Ausgabe:

www-data 18148  0.0  0.1 232000  8664 ?        S    Nov18   0:00 /usr/sbin/apache2 -k start
www-data 18158  0.0  0.1 232000  8688 ?        S    Nov18   0:00 /usr/sbin/apache2 -k start

Es ist auch möglich, sofern der genaue Prozessename bekannt ist, das Kommando „pidof“ zu nutzen.

pidof <PROZESSNAME>

Der Output zu diesem Befehl enthält die Prozess ID’s oder die Prozess ID je nach Anzahl der laufenden Prozesse mit dem selben Namen.

8664 8688

Der zweite Schritt ist das eigentliche Beenden des Prozesses mit Hilfe des Kommandos kill.

kill <PROZESSID> <PROZESSID>

Prozess ID’s können mit einem Leerzeichen separiert angegeben werden. Sollte sich auf diesem Wege ein Prozess nicht beenden lassen kann mit der Option „-9“ des Befehls kill entgegen gewirkt werden.

kill -9 <PROZESSID>

In diesem Fall wird der Prozess „hart“ beendet. Es können ebenfalls mehrere ID’s mit einem Leerzeichen separiert werden.
Eine andere Art mehrere Prozesse auf einen Streich zu terminieren stellt der Befehl killall da.

killall -i <PROZESSNAME>

Der Parameter „-i“ sorgt dafür das vor dem Beenden jedes Prozesses nochmals nachgefragt wird ob man ihn wirklich beenden möchte. Weitere wichtige Optionen sind die Befehle:

  • -u <UNIXUSERID> beendet die Prozesse des gewählen UNIX Benutzers
  • -g <PROZESSGRUPPENID> beendet die Prozesse der gewählten Prozessgruppe

Die Möglichkeit mehrere Prozesse mit einem Befehl zu beenden hat mir persönlich oft weitergeholfen als Server Dienste am spinnen waren. Schönes Wochenende. 😉

EDIT: Beachte das du zum killen einiger Prozesse als root angemeldet sein musst.

Keine Kommentare »