MySQL 5.6 LOW Memory VPS configuration

Nachdem ich spontan meine Cloud umziehen musste … Nein, nicht weil er kaputt gegangen ist, die Performance war sehr schlecht und der Apache auf dem Shared Hoster lief äußerst inperformant und instabil.

Als alter “Schotte” hab ich mir ein VPS gesucht, der möglichst viel Speicherplatz bietet. Mir war es dabei nicht so wichtig, möglichst viel CPU oder RAM zu haben. Meine Wahl fiel auf den Hoster 1fire.de.

1fire

Der Service-Plan war genau das was ich gesucht habe:

1fire_Plan

Nach der Installation aller nötigen Dienste wie Apache, Postfix und MySql wurde klar, bei der Speichernutzung muss ich etwas aufpassen. MySQL hat sich von dem 1024 MB direkt mal 800MB gekrallt. Das geht natürlich nicht 😉 Also was tun?

Ich habe MySql 5.6 im Einsatz hier sind die Änderungen die ich unter [mysql] eingefügt habe.

# Since 5.5.5, mysql uses innodb as default storage engine,
# but innodb requires more memory than MyIASM.
# So, on my low memory machine, I have to disable it.

# disable innodb and set MyISAM as default storage engine
skip-innodb
default-storage-engine=MyISAM
default-tmp-storage-engine=MEMORY
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0

# optimize for low memory
key_buffer=16K
table_open_cache=4
query_cache_limit=256K
query_cache_size=4M
max_allowed_packet=1M
sort_buffer_size=64K
read_buffer_size=256K
thread_stack=64K

# only local - wenn gewünscht :)
skip-networking

Hier noch der vergleich in Munin und htop

memory-day-server4-mysql-optimize server4_mem

An der Aktuellen Messung kann man schön erkennen, dass das System nun kaummehr beginnt zu swapen.

Das wars auch wieder!

Stay tuned!

TvHeadEnd meets SatIP

Heute bin ich durch Zufall auf den Thread aufmerksam geworden.

Der User”Perexg” hat heute viel Code in den Master Branch des TvHeadEnd Branch gepushed. Hier gehts zum GIT Repository.

Hier noch ganz schnell ein How To, wie Ihr den TvHeadEnd auf Debian selbst baut. Leider ist mein Build auf dem PI mid den Sourcen des Users gefailed.

apt-get update
apt-get install unzip git-core pkg-config dvb-apps     
apt-get install g++-4.7 build-essential
apt-get install libcurl4-openssl-dev libavahi-client-dev zlib1g-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev liburiparser-dev
export CC=gcc-4.7
export GCC=gcc-4.7
mkdir ~/tvheadend
cd ~/tvheadend

Option A. den Original Thread laden

git clone "https://github.com/tvheadend/tvheadend.git"
cd tvheadend

Option B, direkt das Zip herunterladen

wget https://github.com/tvheadend/tvheadend/archive/master.zip
unzip master.zip
cd tvheadend-satip/

Jetzt noch schnell bauen

./configure && make && make install
groupadd tvheadend
useradd -g tvheadend -G video -m tvheadend
usermod -G audio -a tvheadend

Wenn Ihr Probleme mit der libiconv habt, dann schaut doch mal hier rein.

Oder aber Eure ffmpeg libraries sind zu alt, da gibt es hier ein kleinen Guide.

Zum Schluss noch das Startup Script erzeugen

nano /etc/init.d/tvheadend

#!/bin/bash
### BEGIN INIT INFO
# Provides:          tvheadend
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1
# Short-Description: start/stop tvheadend Server
### END INIT INFO

TVHNAME="tvheadend"
TVHBIN="/usr/local/bin/tvheadend"
TVHUSER="tvheadend"
TVHGROUP="tvheadend"
PIDFILE=/var/run/$TVHNAME.pid

start() {
    if [ -e $PIDFILE ]; then
        PID=$(ps ax | grep -v grep | grep -w $(cat $PIDFILE) | awk '{print $1}')
        if [ -n "$PID" ]; then
            echo "$TVHNAME already running (pid $PID)."
            exit 1
        fi
    fi
    echo -n "Starting tvheadend: "
    start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user ${TVHUSER} --exec ${TVHBIN} -- \
        -u ${TVHUSER} -g ${TVHGROUP} -f -C
    echo "Done."
}

stop() {
    if [ -e $PIDFILE ]; then
        PID=$(ps ax | grep -v grep | grep -w $(cat $PIDFILE) | awk '{print $1}')
        if [ -n "$PID" ]; then
            echo -n "Stopping $TVHNAME: "
            start-stop-daemon --stop --quiet --pidfile $PIDFILE --name ${TVHNAME}
            echo "Done."
        else
            echo "$TVHNAME is not running."
        fi
    else
        echo "$TVHNAME is not running."
    fi
}

status() {
    if [ -e $PIDFILE ]; then
        PID=$(ps ax | grep -v grep | grep -w $(cat $PIDFILE) | awk '{print $1}')
        if [ -n "$PID" ]; then
            echo "$TVHNAME is running (pid $PID)."
        else
            echo "$TVHNAME is not running."
            [ -e $PIDFILE ] && exit 1 || exit 3
        fi
    fi
}

case "$1" in
 start) start ;;
 stop) stop ;;
 status) status ;;
 restart) stop && sleep 2 && start ;;
 *) echo "Usage: $0 [start|stop|restart|status]" && exit 1 ;;
esac

exit 0

Wollt Ihr, dass der TvHeadEnd automatisch startet, dann müsst Ihr noch folgendes ausführen:

chmod +x /etc/init.d/tvheadend
update-rc.d tvheadend defaults
/etc/init.d/tvheadend start

 

 

 

Gesprächiger Apache: Unterdrücken der Serversignatur

Häuft sieht man, wenn man auf eine Webseite surft, die nicht nicht existiert diese Meldung.

apache

Häufig gibt der Apache, bereitwillig eine Menge Information preis.

Um dem Apache das ab zu gewöhnen muss man folgende Einträge in der “/etc/apache2/conf.d/security” wie folgt bearbeiten. Das funktioniert In Debian Lenny, Squeeze und Wheezy gleichermaßen.

# nano /etc/apache2/conf.d/security

ServerSignature Off
ServerTokens Prod

Danach sieht die Seite dann so aus

apache_without_token

 

[HowTo] Mod_Security für Apache

Ein schnelles Howto, wie Ihr Euren Web-Server (Apache) mit dem mod_Security absichert.

Zuerst einmal die Pakete installieren. Diese sind bei Debian und Ubuntu in den Repositories verfügbar.

# apt-get update
# apt-get install libapache-mod-security

Mit dem Befehl könnt checken ob das Module erfolgreich geladen wurde

# apachectl -M | grep --color security

Und wieder ist Apache ein Stück sicherer.

Viel Spaß & Stay tuned!

Logs unter Debian Linux wöchentlich löschen per cronjob

Heute war es mal wieder soweit. 1 GB Logfiles im System. Was also tun? Log Dateien einfach löschen wäre fatal, da diese nicht noch einmal erzeugt werden. Das System wäre somit auf einfachste weise zerschossen. Um das zu verhindern schreiben wir den Inhalt ins nichts.

# cd /var/log
# for i in *; do test -f $i -a -s $i && > $i; done

Das ich ein fauler Mensch bin und es wieder vergessen würde, machen wir daraus noch einen wöchentlichen Cronjob

#sudo crontab -e
#Password: 

#[...]
#Am Ende der Datei einfach folgendes eintragen: 
0 0 * * 1 cd /var/log && for i in *; do test -f $i -a -s $i && > $i; done

Der Cronjob leert jetzt wöchentlich die Logs.

blog.tschoerner.eu goes IPv6

Heute habe ich die Konfiguration für meinen Blog geupdated.

blog.tschoerner.eu ist nun per IPv4 und IPv6 erreichbar.

IPv6

Ob Eure Webseite via IPv6 erreichbar ist könnt Ihr hier überprüfen:  http://ipv6-test.com/validate.php

Ob Ihr über IPv4 zugreift oder IPv6 seht ihr hier. Wenn Ihr eine “normale” Adresse ohne : seht, ist es v4 anderenfalls v6

Deine IP: [VisitorCountry-IP]

Demnächst blogge ich Euch noch, wie Ihre euren VPS mittels IPv6 Tunnel konfiguriert und es gibt auch noch die Froxlor Konfig dazu.

Stay tuned!