Archiv der Kategorie: ubuntuusers

[nginx] und php

Für viele Webseiten oder Anwendungen wie WordPress, Joomla sowie Contao wird php benötigt. Von Haus aus kann nginx nur html oder Bilddateien ausgeben, damit php Seiten dargestellt werden wird php-fpm benötigt.

Zunächst wird php-fpm unter dem root Benutzer installiert:
yum install php-fpm

Nach der Installation habe ich in der /etc/php.ini folgende Anpassung vorgenommen:
cgi.fix_pathinfo=0

Für die php Konfiguration der www.seite1.de wurde die Datei /etc/php-fpm.d/seite1.conf angelegt.

[seite1]
listen = /var/run/php-fpm/seite1.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = seite1
group = seite1
pm = dynamic
pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
chdir = /var/vhost/seite1/www/
php_admin_value[open_basedir] = /var/vhosts/seite1/www:/var/vhosts/seite1/temp
php_admin_value[upload_tmp_dir] = /var/vhosts/seite1/temp

Zum Schluss die folgenden Zeilen dem Server-Block in der Datei /etc/nginx/conf.d/seite1.conf hinzufügen.
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php-fpm/seite1.sock;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}

Gestartet wird php-fpm über systemctl start php-fpm.service bzw über systemctl stop php-fpm.service gestoppt.

[nginx] einrichten von vhosts

Wie beim Apache Webserver ist es auch unter nginx möglich verschiedene virtuelle hosts einzurichten. Bei nginx werden diese jedoch nicht als virtuelle hosts bezeichnet sondern als server blocks.

Damit die Seiten unter verschiedenen Benutzern bearbeitet werden können, habe ich zunächst einen Benutzer angelegt adduser seite1 /var/vhosts/seite1. Unter dem Benutzer seite1 wurden die Verzeichnisse logs und www angelegt, im Anschluss müssen noch die Rechte der Verzeichnisse angepasst werden.

chmod 755 /var/vhosts/seite1
chmod 755 /var/vhosts/seite1/www
chmod 760 /var/vhosts/seite1/logs

Damit der nginx die log Dateien in dem angegeben Verzeichnis erstellen kann muss der nginx Benutzer der Gruppe seite1 hinzugefügt werden.

Die Konfiguration des Vhosts wurde in der Datei /etc/nginx/conf.d/seite1.conf erstellt.

server {
index index.html;

server_name www.seite1.de;
access_log /var/vhosts/seite1/logs/seite1.access.log main;
error_log /var/vhosts/seite1/logs/seite1.error.log;

root /var/vhosts/seite1/www;
}

Wenn bei auftretenden Fehlern zum Beispiel die eigene 404 Seite angezeigt werden soll, reicht der folgende Eintrag in der Konfiguration.

error_page 404 errors/404.html;

[nginx] installation unter centos7

Um nginx installieren zu können wird zunächst ein Software Repository benötigt, welches unter dem Benutzer root hinzugefügt wird.
yum install epel-release

Im zweiten Schritt kann nginx installiert werden:
yum install nginx

Nach Abschluss der Installation kann der Dienst über systemctl start nginx.service gestartet werden. Damit der Zugriff per Browser möglich ist, muss der Port 80 in der Firewall geöffnet werden.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

Nun ist ein Aufruf per Browser über http://serverip möglich.

nginx Startseite

Damit nginx beim nächsten Systemstart mit gestartet wird, muss folgender Befehl ausgeführt werden:
systemctl enable nginx.service

Möchte man an dem default vhost(server block) ein paar Anpassungen vornehmen, so befindet sich die Standardkonfiguration in der Datei /etc/nginx/nginx.conf. Die html Dateien befinden sich in dem Verzeichnis /usr/share/nginx/html/.

[openhab] fs20 Funk-Dämmerungssender einbinden

Für das schalten von Aktoren kann wie in einem vorangegangenen Artikel die Anwesenheitserkennung verwendet werden. Durch eine Regel wird in einem bestimmten Zeitraum geprüft ob jemand zu Hause ist und die Aktoren werden eingeschaltet. Handelt es sich bei den Aktoren jedoch um Lampen, kann es vorkommen das Diese zu früh beziehungsweise zu spät geschaltet werden. Damit das Schalten zum richtigen Zeitpunkt erfolgt, kann der jeweilige Sonnenaufgang / Sonnenuntergang berechnet werden und mit in die Regel eingebunden werden.

Ich habe mich jedoch für einen Dämmerrungssensor entschieden, diesen gibt es für das fs20 System als Bausatz von ELV. Für das löten und zusammensetzen der einzelnen Komponenten benötigt man ca. 30 Minuten. Der Sensor bietet zwei Kanäle die einzeln konfiguriert werden können. Je nach Konfiguration und Helligkeit wird ein on bzw off gesendet. Zum auslesen des voreingestellten Hauscodes hatte ich bereits den Artikel https://www.itbasic.de/openhab-fs20-fernbedienung-und-switch-status-aktualisierung/ geschrieben.

Über die angepasste Regel wird das Licht nun in einem definierten Zeitraum ein bzw ausgeschaltet, wenn jemand zu Hause ist und der definierte Lichtwert erreicht wurde.

rule AnwesendFlur
when
Time cron "* */5 * * * ?"
then
if (now.getHourOfDay() >= 6 && now.getHourOfDay() <=22 && Presence.state == ON && FlurAutomatik.state == ON && fsda1.state == ON) {
if(FlurAlle.state == OFF){
sendCommand(FlurAlle, ON)
logInfo("PresenceCheck", "LICHT AN" )
}
} else {
if(FlurAlle.state == ON && FlurAutomatik.state == ON){
sendCommand(FlurAlle, OFF)
logInfo("PresenceCheck", "LICHT AUS" )
}
}
end

Die beiden Kanäle des Sensors wurden wie folgt in einer items Datei hinterlegt:
Switch fsda1 "Daemmer1 " (fstest) {fs20="C4A600"}
Switch fsda2 "Daemmer2 " (fstest) {fs20="C4A601"}

fs20-daemmer

die gelieferten Bauteile

 

[openhab] man kommt nach Hause und das Licht geht an

Wenn man im dunkeln nach Hause kommt, ist es manchmal hilfreich wenn das Licht automatisch für eine Gewisse Zeit eingeschaltet wird.

Folgende Regel schaltet das Licht zwischen 23 Uhr und 6 Uhr morgens ein, sofern das Licht noch nicht eingeschaltet ist und die Automatik nicht deaktiviert wurde.

var Timer timerH
rule "Coming home"
when
Item Handy1 received command ON or
Item Handy2 received command ON
then
if (now.getHourOfDay() == 23 && FlurAlle.state == OFF && FlurAutomatik.state == ON || now.getHourOfDay() <= 6 && FlurAlle.state == OFF && FlurAutomatik.state == ON ) { sendCommand(FlurAlle, ON) timerH = createTimer(now.plusSeconds(900)) [ sendCommand(FlurAlle, OFF) ] } end

Die Regel hab ich unter dem Namen homecoming.rules in dem Pfad /home/openhab/configurations/rules abgelegt.