Debian-System mit Key-Authentifikation

Tags: Allgemein | Debian (Linux) | macOS / OS X (Mac) | Raspbian (Raspberry Pi) | Webserver Kommentieren

OS X / Linux

Im Folgenden beschreibe ich, wie das Ganze mit einem Linux- oder Mac-Client beim Zugriff auf einen Linux-Server funktioniert.

Lokal: Key erstellen

Key übertragen

Remote: Key zu den authorized_keys hinzufügen

Lokal: Key automatisch mit senden

Troubleshooting

Fehler: „Could not open a connection to your authentication agent.“

In diesem Fall hilft es meist, den SSH-Agent zu starten:

Quellen:

Langsame Suchfunktion in xt:commerce 3

Tags: Allgemein | Debian (Linux) | MySQL | MySQL-Server | Webserver | xt:Commerce Kommentieren

Ein Kunde hatte das Problem, dass der auf unserem Server installierte xt:commerce 3 teilweise so hohen Datenbank-Load verursachte, dass der MySQL-Server abrauchte und somit den ganzen Server kurzzeitig in einer Nicht-Erreichbarkeit stürzte. Zwar war schon länger ein Update auf eine neue xt:commerce-Version geplant, jedoch befand sich der neue Shop noch in der Entwicklung und es musste kurzfristig eine Lösung erarbeitet werden, da die Ausfälle sich häuften (teilweise bis zu 3x am Tag).

Relativ schnell entpuppte sich die Suchfunktion des xt:commerce als ausschlaggebend, welche bei meinen Tests bei einer Volltextsuche meist zwischen 40 und 50 Sekunden benötigte, dabei den MySQL-Server komplett belastet – nun stelle man sich dies am Tages-Hoch mit hunderten Besuchern vor.

Mit den folgenden Umstellungen in der MySQL-Datenbank lässt sich die Suche durch einfaches Setzen von Indizes stark beschleunigen:

Tabelle „products_description„:

  • products_id
  • language_id
  • products_name
  • products_description (FULLTEXT)
  • products_short_description (FULLTEXT)
  • products_keywords

Tabelle „products_options„:

  • language_id
  • products_options_name

Tabelle „products_attributes„:

  • products_id
  • options_id

Tabelle „products_options_values„:

  • language_id
  • products_options_values_name

Tabelle „specials„:

  • products_id

Wichtig ist, dass die neuen Indexes eine möglichst hohe Kardinalität besitzen (also viele verschiedene Werte), damit eine Performancesteigerung erreicht werden kann.

Quellen

  • http://forums.xt-commerce.com/topic/60364-suchfunktion-sehr-langsam-sessions/
  • http://thomas.eses.name/mysql-indexe-richtig-setzen/

Apache-Error: File does not exist: favicon.ico

Tags: Apache | Webserver Kommentieren

Fehlt auf einer Website das ico-Favicon (/favicon.ico), so wird bei jedem Request (Browser machen diesen Request automatisch) eine Fehlermeldung in das Apache-Error-Log geschrieben. Das erschwert nicht nur die Übersicht, sondern bläht die Datei auch unnötig auf. Eine solche Meldung im Folgenden:

 File does not exist: /var/www/htdocs/favicon.ico

Um diese Meldung zu unterbinden, muss in der .htaccess nur das Folgende eingefügt werden:

 Redirect 404 /favicon.ico

Anschließend werden die Requests nicht mehr ins Error-Log geschrieben.

exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken

Tags: Debian (Linux) | Raspbian (Raspberry Pi) | Webserver 1 Kommentar

Mein Raspberry Pi sandte mir regelmäßig die Fehlermeldung, dass das paniclog des exim4 MTA nicht leer ist. Das war natürlich extrem nervig:

exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken

Zusätzlich erhält man hier ja auch immer noch einen Auszug aus der Log-Datei:

2014-11-17 22:36:49 IPv6 socket creation failed: No such file or directory
2014-11-17 22:52:13 IPv6 socket creation failed: Address family not supported by protocol
2014-11-17 22:56:38 IPv6 socket creation failed: Address family not supported by protocol

Wie man hier nun erkennt, versucht exim4, die IPv6-Funktionalität herzustellen, scheitert jedoch. Da ich IPv6 dazu auch gar nicht brauche, habe ich mich dazu entschlossen, das Feature einfach zu deaktivieren (User: root):

  1. In der Datei /etc/exim4/update-exim4.conf.conf die Variable dc_local_interfaces bearbeiten und den Wert für die IPv6-Adresse der lokalen Loopback-Netzwerkschnittstelle „::1“ entfernen
  2. Dann noch das paniclog leer machen:
  3. Und den Dienst neu starten:

, ,

„ERR_CONNECTION_RESET“ (MediaWiki) im Chrome nach Debian Update

Tags: Apache | Debian (Linux) Kommentieren

Anlässlich des „SSL Heartbleed“-Bugs aktualisierte ich alle Systeme, was soweit so automatisch auch ganz gut funktionierte. Lediglich ein auf SSL betriebenes MediaWiki klagte über nicht geladene Script- und Style-Ressourcen, die das visuelle Bild komplett zerstörten. Mein Chrome meldete in der Konsole stets ERR_CONNECTION_RESET.
Nach einigen Tests und Recherchen war das Problem leider nicht ausfindig zu machen. Auch ein Deaktivieren des mod_pagespeed, mehrfache Neustarts des Apache und eine Überprüfung der maximalen Verbindungsanzahl brachte mich nicht weiter, bis ich auf mod_spdy stieß, was ja in direkter Verbindung mit SSL steht. Nach kurzer Recherche hieß es auf der Projektseite (https://code.google.com/p/mod-spdy/):

SECURITY UPDATE (8 Apr 2014): All mod_spdy users should upgrade to mod_spdy 0.9.4.2 immediately to fix the heartbleed bug in mod_spdy’s linked version of OpenSSL. See  issue 85  for details.

Eine temporäre Deaktivierung bzw. Aktualisierung des Moduls brachte dann auch schon das MediaWiki wieder zum Laufen.

, , , ,

Linux: Dateien nach Inhalt suchen

Tags: Debian (Linux) | Webserver Kommentieren

Oftmals hat man ein Web-Projekt auf einem Server und sucht eine bestimmte Datei, von der man nur einen Teil des Inhaltes kennt. Anstatt nun alle auf dem Server befindlichen Dateien herunterzuladen und lokal zu durchsuchen, bietet sich an, dies über die Shell zu tun:

Hiermit wir rekursiv im aktuellen Verzeichnis nach dem String STRING gesucht. Das Ergebnis könnte diesem gleichen:

Apache: Zugriff nur von bestimmter IP-Adresse zulassen

Tags: Apache | Debian (Linux) | Webserver Kommentieren

Innerhalb der „Directory“ Direktiven Folgendes angeben:

Hiermit werden nur die IPs

  • 192.168.1.*
  • 82.65.156.12

für den Zugriff freigegeben.

RapidSSL-Zertifikat unter Debian mit Apache2 installieren

Tags: Debian (Linux) | Webserver Kommentieren

Verwendetes System:

  • Debian Squeeze amd64
  • Apache/2.2.16 (Debian)

Installation eines „GeoTrust RapidSSL Wildcard“-Zertifikats unter Apache2 (Debian).
Exemplarisch wird hier als Hostname my-hostname.de verwendet.

Hostname setzen

Die folgenden Zeilen an die Datei /etc/hosts anfügen, ggf. alte Einträge löschen ( vi /etc/hosts ):

Hostnamen in die Datei /etc/hostname schreiben ( vi /etc/hostname):

Den Hostnamen im System setzen:

Konfiguration des Webservers

Änderungen an der /etc/apache2/ports.conf:

Wenn ihr nur die Verfügbarkeit auf Port 443 (https) wünscht und keine Reaktion auf Port 80 (http), kommentiert die Zeile

einfach aus. Zusätzlich gebt dem NameVirtualHost noch den epliziten Port hinzu. Restliche Einstellungen sollten bereits so vorhanden sein.

Inhalt meiner /etc/apache2/ports.conf:

Inhalt meiner /etc/apache2/config-default:

Inhalt meiner /etc/apache2/config-default-ssl:

Inhalt meiner /etc/apache2/sites-available/default:

Inhalt meiner /etc/apache2/sites-available/default-ssl:

Erstellung eines Test-Zertifikats

um die Funktionen des Webservers zu prüfen, würde ich erst einmal ein unsigniertes Testzertifikat erstellen. Das geht so:

Bestellung des „GeoTrust RapidSSL Wildcard“-Zertifikats

Zertifikat beantragt als Apache 2 ohne CSR.

Änderungen an der /etc/apache2/config-default-ssl:

Schlussendlich noch den Apache neu starten:

Quellen

Die hosts-Datei

Tags: Debian (Linux) | Domains | macOS / OS X (Mac) | Webserver | Windows 2 Kommentare

OS X

Bearbeitung über:

Linux

Bearbeitung über:

Windows 95, Windows 98 und Windows ME

Windows NT, Windows 2000, Windows 2003, Windows XP, Windows Vista, Windows 7

Bearbeitung über:

Starten des bevorzugten Editors als Administrator (rechte Maustaste), anschließend Öffnen über Datei -> Öffnen o.ä.

Große MySQL-Datenbanken beschleunigen

Tags: MySQL-Server | Webserver Kommentieren

In einem aktuen Fall war eine Datenbank mit ca. 60.000 Einträgen und vielen Spaltendaten bei der Abfrage simpler gefilterter Daten mit einem Limit von 0, 10 langsam und es hieß diese zu optimieren. Neben der Überprüfung der Abfragen über

EXPLAN SELECT * FROM *

in welcher dann ersichtlich ist, welche Keys hinzugezogen werden (diese sind oft ausschlaggebend für die Geschwindigkeit der Abfrage), sollte man sich ebenfalls einmal den Query-Cache des Servers ansehen.
Hierfür gibt es (oder auch noch nicht, dann hinzufügen) eine Abfrage in der my.cnf namens query_cache_limit, welche oftmals auf 0 steht. Damit ist der Query Cache deaktiviert und es werden keine Abfragen gecached. Das Caching der Abfragen speichert diese zwischen und führt diese nicht jedes Mal erneut aus (sofern sich die Tabelle nicht geändert hat). Das ist auf jeden Fall ratsam, wenn eine Datenbank nicht ständig geändert wird. Man stelle diesen Wert einfach mal auf 8M o.Ä. und beobachte in phpMyAdmin die Statusvariablen unter „Abfragen Cache“. Dort erkennt man die Auslastung des aktuellen Cache, wie viele Abfragen aufgenommen und insbesondere wie viele herausgeschmissen wurden (weil der Cache zu klein ist).
In unserem Fall haben wir einen Geschwindigkeitsschub von 1127ms (also über eine Sekunde) erreichen können. Gebe zu: Der Server ist eine kleine Krücke. Aber die Resultate überzeugen.

TOP