KategorieUncategorized

Lange ist her …

Jetzt hab ich fast einen Monat nichts gebloggt 🙁 Schande über mein Haupt.

Heute möchte ich Euch geschwind ein Update geben was hoffentlich demnächst kommt.
In letzter Zeit habe ich mich verstärkt mit Grapg DBs beschäftigt. Interessant darin ist doch die das die Relationen nich wie bei gewöhnlichen DBMS entstehen.

Als Testsystem habe ich Neo4j in der Community Version genutzt.

Neo4j

neo4j_notag_whitebg

Ich hoffe Euch bald ein paar interessante Sachen zum Thema zeigen zu können!

In diesem Sinne!

 

2te IP für Debain

Falls Ihr Eurem Server mal n IPs zuweisen wollt geht das supereinfach

Ihr musst einfach folgendes in dem File /etc/network/interfaces hinzufügen

iface eth0 inet static
    address 192.168.178.XXX
    netmask 255.255.255.0
    gateway 192.168.178.1

 

Airprint auf Debian

Heut gibts ein Quick Howto, wie Ihr eurem Debian Server beibringt die Drucker via AirPrint zu teilen 🙂

Zuerteinmal müsst Ihr ein paar Pakete installieren:

apt-get install avahi-daemon cups cups-pdf python-cups

nachdem nun Cups am Start ist, müssen wir das CUPS noch konfigurieren:

nano /etc/cups/cupsd.conf

Bildschirmfoto 2014-05-15 um 20.46.43

Hier die noch die 17 editieren, damit der Zugriff nicht nur auf den Localhost beschänkt ist:

# Only listen for connections from the local machine.
Listen 631

Anschlißend diesen Teil ersetzen:

# Restrict access to the server...
<Location />
  Order allow,deny
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
</Location>

NEU …

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow @Local
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow @Local
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow @Local
</Location>

Nachdem nun Cups soweit konfiguriert ist, einfach den Service neu starten:

service cups restart

Da nicht jeder in Cups rumfummel kann, muss man noch einen User der lpadmin gruppe hinzufügen

adduser felix lpadmin

Jetzt geht es zum AirPrint Teil ….

mkdir /opt/AirPrint
cd /opt/AirPrint
wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
chmod +x airprint-generate.py
./airprint-generate.py -d /etc/avahi/services

Jetzt nochmal ein Neustart für Cups und den avahi-daemon und alles sollte funktionieren.

service cups restart
service avahi-daemon restart

… GSCHAFFT!!!

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] LNMP – VPS mit wenig Ressourcen Nginx & PHP

LNMP-debianvps-300x257Wollt auch Ihr Eurer eigener Herr über einen Server sein? Scheut Euch aber einen dedizierten Root-Server zu mieten? Die Lösung sind kleine vServer, die Euch vollen Admin Zugriff erlauben. Ihr seid euer Herr.

Hat man ein “Low powered” VPS mit wenig CPU & RAM, muss man genau hinschauen was man installiert. Eine Möglichkeit Ressourcen zu sparen ist, anstatt dem weit verbreiteten Indianer (Apache) auf den schlanken Nginx Webserver zu setzten.

Hier ein kleinen HowTo, wie Ihr Euren VPS mit Nginx & PHP einrichtet.

Als erstes sollte man die “Dotdeb” Quellen zu seinem System hinzufügen.Hierzu bearbeitet man die Sources von apt (/etc/apt/sources.list)

nano /etc/apt/sources.list

und fügt am Ende einfach diese Zeilen ein:

# DotDeb
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

Um die Paketquellen nutzen zu können, müsst ihr den “Repository-Key” noch hinzufügen, indem ihr folgende schritte ausführt:

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -

Der nächste Schritt ist optional. Ihr könnt dem System eine höhere Priorität für die DetDeb Paketquellen geben, müsst dies aber nicht. Einfach diese Datei anlegen “/etc/apt/preferences.d/dotdeb”

nano /etc/apt/preferences.d/dotdeb

folgenden Inhalt einfügen:

Package: *
Pin: release o=packages.dotdeb.org
Pin-Priority: 990

Um zu checken, aus welchem Repository nun die Pakete installiert werden einfach folgenden Befehl ausführen.

apt-cache policy nginx

Jetzt geht’s erst richtig los

Mit dem folgenden Befehl installiert Ihr Nginx & PHP

apt-get install nginx php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd

Jetzt schnell noch ein Root Verzeichnis für den Webserver anlegen

mkdir /var/www

Seit Nginx 1.4 werden die Seiten ähnlich wie bei Apache im Ordner /etc/nginx/sites-enables konfiguriert. Hier sollten Symlinks zu files im Verzeichnis /etc/nginx/sites-available erzeugt werden.

nano /etc/nginx/sites-available/server2.tschoerner.eu

und folgenden Inhalt einfügen:

server {
	listen 80;	# Der zu lauschende Port
	server_name server2.tschoerner.eu;	# Der Name für den virtuellen Host
	root /var/www;	# Der zu verwendende Ordner

	location / {
		index index.php index.html;	# Zuerst versuchen, bei einem / Aufruf die index.php zu laden, alternativ die index.html
	}

	location ~* \.php$ {	# Ermöglicht die Verarbeitung von php Dateien
		try_files $uri /index.php;
		fastcgi_index index.php;
		fastcgi_pass 127.0.0.1:9000;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param SCRIPT_NAME $fastcgi_script_name;
	}

	autoindex on;	# Funktion, ob der Verzeichnisinhalt angezeigt werden soll, wenn keine index.php oder index.html existiert
}

Jetzt besagten Symlink erzeugen:

ln -s /etc/nginx/sites-available/server2.tschoerner.eu  /etc/nginx/sites-enabled/server2.tschoerner.e

rm -rf /etc/nginx/sites-enabled/default

Und fertig … Neginx neu starten

service nginx restart

Legt nun eine Datei (phpinfo.php) in /var/www an und ruft diese im Browser auf.

Wenn Ihr jetzt einen Fehler bekommt “502 Bad Gateway”, dann müsst Ihr noch folgende Zeile in der Datei (/etc/php5/fpm/pool.d/www.conf) ändern:

#ALT
listen = /var/run/php5-fpm.sock

#Zu:
listen = 127.0.0.1:9000

PHP durchstarten und fertig 🙂

/etc/init.d/php5-fpm restart

Alles zu Thema MySQL blogge ich demnächst.

Natürlich könnt Ihr auch hier die bereits geboggten Performance Enhancements eines PHP Caches nutzen.

 

 

DNS Ausfall

Wir Ihr vielleicht mitbekommen habt, gibt es heute bei einigen Zentralen DNS Servern Probleme.

Dazu gehört auch mein DNS-Provider ClouDNS.net. Alle DNS-Server stehen zur Zeit unter einer heftigen ddos Attacke. Aus diesem Grund sind einige Seiten nur schwer aufzulösen und es kommt zu Antwortzeiten > 1s. Dies führt dann im Browser dazu, dass die Seite nicht geöffnet wird.