Hallo zusammen,
da ich keine fertige (deutsche) Anleitung gefunden habe wie man das macht, habe ich mich durch die englischen Anleitungen gekämpft und versuche hier für die Nachwelt die Stolpersteine festzuhalten.
Als Grundlage dienten mir die beiden folgenden Anleitungen und natürlich Google:
https://www.digitalocean.com/commun...ginx-mysql-and-php-femp-stack-on-freebsd-10-1
https://doc.freenas.org/9.3/freenas_jails.html
Jail erstellen
Der benötigte Webserver wird innerhalb einer Jail installiert (eine Art Virtual Machine). Diese Jail ist ein in sich geschlossenes System und startet dann bei jedem Reboot automatisch mit. Auch der darin enthaltene Webserver startet später von selber.
Klickt im Webinterface vom FreeNAS auf "Jails" und dann auf "Add Jail".
Im darauf folgendem Fenster klickt ihr auf "Erweiterter Modus". Darin gebt ihr eurer Jail einen Namen und stellt die IP unter der später euer Webserver erreichbar sein soll. In meinem Fall nenne ich das Kind beim Namen: "Webserver" und dieser soll unter 192.168.1.200 erreichbar sein. So sieht es dann bei mir aus:
mit einem Klick auf "OK" wird dann die Jail erstellt. Dieser Vorgang dauerte bei mir etwa 10 Minuten und ist wohl stark von der Internetverbindung abhängig. Unten wird euch aber ein Prozessbalken angezeigt.
Im Anschluss kann man über den Punkt "Jails" --> "View Jails" --> Seine Jail auswählen und dann unten auf die Jail-Eigene Shell klicken.
Zugriff per SSH vorbereiten
Ich möchte später mit SSH auf diese Jail zugreifen und darin dann auch SuperUser-Rechte haben. Zunächst muss dafür ein neuer User erstellt werden. Warum auch immer ist ein SSH-Zugriff mit root nicht zulässig.
User erstellen:
Nach der Eingabe eines Benutzernamens und den vollen Namen, muss dieser User noch der Gruppe "Wheel" zugeordnet werden. Dies ermöglich dem User später sich zum SuperUser zu "transformieren": Alle weiteren Angaben können auf den Defaultwerten (steht in eckigen Klammern) bleiben. Es reicht also ansonsten immer nur mit Enter zu bestätigen. Bei der Eingabe des Passwortes wird dieses Linux-typisch nicht angezeigt (auch nicht mit *sternchen*). Ganz zum Schluss bekommt man das ganze nochmal als Kontroll-Übersicht (wo das Passwort dann als Sternchen dargestellt ist) welches mal mit "Y" bestätigen muss.
Passwort für root festlegen
Als nächstes ist es erforderlich, dem User "root" ein Passwort zu geben.
SSH Starten und benutzen
Um den SSH-Dienst zu starten gebt ihr nun ein:
Ab jetzt sollte (hoffentlich) ein SSH-Zugriff möglich sein. Da nicht alle Befehle innerhalb des Shell-Fensters klappen (Strg-Kombinationen), nutze ich ab jetzt den Zugang über SSH. In meinem Fall ist das Betriebssystem ohnehin Linux und daher öffne ich das Terminal [Super+T]. Bei Windows-Rechnern kann man ab jetzt mit Putty weiter machen.
Für den Zugriff mit dem Terminal logge ich mich jetzt mit dem eben erstellten User ein:
Anschließened noch das Passwort und ihr werdet freundlich begrüßt:
Um jetzt root-Privilegien zu haben gebt ihr den Befehl
Nano als Texteditor installieren
um es bei der Konfioguration von Dateien etwas leichter zu haben, installiere ich mir das Programm "nano"
Nach der Eingabe nochmal mit "Y" bestätigen.
Der Download von nano erfolgt automatisch
SSH automatisch starten
Damit bei reboot der SSH-Dienst von selber startet, muss noch ein Eintrag in der rc.conf geändert werden. Zum bearbeiten der Datei öffne ich diese mit nano
Darin enthalten findet Ihr den Eintrag
der dann geändert wird auf
Die Datei wird gespeichert mit
Den Dateinamen dann mit Enter bestätigen.
Anschließend kann man nano mit
Installation vom Webserver nginx und PHP
Mit dem folgendem Befehl wird der Webserver und php installiert. Dabei werden zwei Mal Eingaben von "Y" erforderlich sein:
Der Download von Nginx und php erfolgt auch hier automatisch
Sobald die Installation abgeschlossen ist, ist der folgende Befehl nötig:
Damit auch diese Dienste automatisch starten, ist wieder ein Eintrag in der rc.conf notwenig. Also öffne ich wieder die Datei mit Nano:
Ich erweitere die Datei am Ende um die beiden folgenden Zeilen:
PHP konfigurieren:
Nun muss die Datei php-fpm.conf bearbeitet werden. Auch hier arbeite ich natürlich wieder mit nano:
Darin geht ihr zur Position...
...und ersetzt diese durch:
Dann sucht ihr nach der Position:
und entfernt die Semikolons davor (Semikolon davor = Kommentar/unwirksam). Es sieht dann so aus:
Die Datei php-fpm.conf dann wieder mit
Nun brauchen wir noch eine php.ini. Diese kann zunächst aus der Vorlage kopiert werden:
Wechselt das Verzeichnis mit
und kopiert aus der Vorlage mit:
Die php.ini muss nun wieder mit nano bearbeitet werden.
Darin sucht ihr den Eintrag...
...entfernt auch hier das Semikolon davor und stellt den Eintrag auf "0"
wieder mit
PHP starten
Die Konfiguration von PHP ist damit abgeschlossen und php kann gestartet werden mit:
Konfiguration vom Webserver "Nginx"
Damit dieser konfiguriert werden kann, muss er erst gestartet werden. Das geht mit dem Befehl:
Anschließend wechselt das Verzeichnis...
Öffnet die Datei nginx.conf mit nano:
Den Inhalt könnt ihr nun komplett ersetzten zu:
Bei "server_name" müsst ihr natürlich die IP bzw. den Namen euren Servers angeben.
wieder mit
Verzeichnis für die Log-Daten erstellen:
Leer Logdateien erstellen:
Da es sich bei dem Documentroot um eine symbolische Verlinkung handelt, löschen wird das Verzeichnis und erstellen es anschließend neu:
Die neue Konfiguration kann jetzt mit der Eingabe von...
...auf Syntaxfehler geprüft werden. Die Ausgabe sollte wie folgt sein:
Anschließend nginx neu starten mit:
Zur Prüfung ob alles klappt, erstellt ihr eine index.php im Dokumentroot mit nano
und gebt dieser den Inhalt:
wieder mit
Wenn alles geklappt hat, kann man nun mit einem Browser auf den neuen Webserver zugreifen (also in meinem Fall 192.168.1.200) und seht die Ausgabe von phpinfo().
Einfacher Zugriff auf Documentroot
SSH vom FreeNAS muss dafür eingeschaltet und konfiguriert sein!
Ich starte eine sftp-Verbindung mit FileZilla und gebe bei der IP die IP vom FreeNAS ein (NICHT vom Webserver!). Beim Port gebe ich 22 an und die root-Zugangsdaten vom FreeNAS. Im Anschluss finde ich das Documentroot hier:
/mnt/[Name vom FreeNAS-Pool]/jails/[Name des Jails (also Webserver)]/usr/local/www/nginx
Dort ist dann auch die eben erstellte Datei index.php zu finden. Aus Sicherheitsgründen sollte diese nach erfolgreichem Test wieder entfernt werden!
Beste Grüße
Heliophob
da ich keine fertige (deutsche) Anleitung gefunden habe wie man das macht, habe ich mich durch die englischen Anleitungen gekämpft und versuche hier für die Nachwelt die Stolpersteine festzuhalten.
Als Grundlage dienten mir die beiden folgenden Anleitungen und natürlich Google:
https://www.digitalocean.com/commun...ginx-mysql-and-php-femp-stack-on-freebsd-10-1
https://doc.freenas.org/9.3/freenas_jails.html
Jail erstellen
Der benötigte Webserver wird innerhalb einer Jail installiert (eine Art Virtual Machine). Diese Jail ist ein in sich geschlossenes System und startet dann bei jedem Reboot automatisch mit. Auch der darin enthaltene Webserver startet später von selber.
Klickt im Webinterface vom FreeNAS auf "Jails" und dann auf "Add Jail".
Im darauf folgendem Fenster klickt ihr auf "Erweiterter Modus". Darin gebt ihr eurer Jail einen Namen und stellt die IP unter der später euer Webserver erreichbar sein soll. In meinem Fall nenne ich das Kind beim Namen: "Webserver" und dieser soll unter 192.168.1.200 erreichbar sein. So sieht es dann bei mir aus:
mit einem Klick auf "OK" wird dann die Jail erstellt. Dieser Vorgang dauerte bei mir etwa 10 Minuten und ist wohl stark von der Internetverbindung abhängig. Unten wird euch aber ein Prozessbalken angezeigt.
Im Anschluss kann man über den Punkt "Jails" --> "View Jails" --> Seine Jail auswählen und dann unten auf die Jail-Eigene Shell klicken.
Zugriff per SSH vorbereiten
Ich möchte später mit SSH auf diese Jail zugreifen und darin dann auch SuperUser-Rechte haben. Zunächst muss dafür ein neuer User erstellt werden. Warum auch immer ist ein SSH-Zugriff mit root nicht zulässig.
User erstellen:
adduser
Nach der Eingabe eines Benutzernamens und den vollen Namen, muss dieser User noch der Gruppe "Wheel" zugeordnet werden. Dies ermöglich dem User später sich zum SuperUser zu "transformieren": Alle weiteren Angaben können auf den Defaultwerten (steht in eckigen Klammern) bleiben. Es reicht also ansonsten immer nur mit Enter zu bestätigen. Bei der Eingabe des Passwortes wird dieses Linux-typisch nicht angezeigt (auch nicht mit *sternchen*). Ganz zum Schluss bekommt man das ganze nochmal als Kontroll-Übersicht (wo das Passwort dann als Sternchen dargestellt ist) welches mal mit "Y" bestätigen muss.
Code:
Username: HansWurst Full name: Hans Wurst Uid (Leave empty for default): Login group [HansWurst]: wheel Login group is wheel. Invite HansWurst into other groups? []: Login class [default]: Shell (sh csh tcsh git-shell nologin) [sh]: Home directory [/home/HansWurst]: Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : HansWurst Password : ***** Full Name : Hans Wurst Uid : 1002 Class : Groups : wheel Home : /home/HansWurst Home Mode : Shell : /bin/sh Locked : no OK? (yes/no):
Passwort für root festlegen
Als nächstes ist es erforderlich, dem User "root" ein Passwort zu geben.
passwd root
SSH Starten und benutzen
Um den SSH-Dienst zu starten gebt ihr nun ein:
service sshd start
Ab jetzt sollte (hoffentlich) ein SSH-Zugriff möglich sein. Da nicht alle Befehle innerhalb des Shell-Fensters klappen (Strg-Kombinationen), nutze ich ab jetzt den Zugang über SSH. In meinem Fall ist das Betriebssystem ohnehin Linux und daher öffne ich das Terminal [Super+T]. Bei Windows-Rechnern kann man ab jetzt mit Putty weiter machen.
Für den Zugriff mit dem Terminal logge ich mich jetzt mit dem eben erstellten User ein:
ssh HansWurst@192.168.1.200
Anschließened noch das Passwort und ihr werdet freundlich begrüßt:
Welcome to FreeBSD!
Um jetzt root-Privilegien zu haben gebt ihr den Befehl
su
ein [ACHTUNG: Dieser ist NICHT zu verwechseln mit sudo
]. Der Befehl su
ist nur einmal alleine erforderlich. Nach der Passworteingabe ist man dann SuperUser bis zum logout mit exit
. Ob die Eingabe von su
erfolgreich war, wird sofort ersichtlich durch die Darstellung von root@webserver:~#
Nano als Texteditor installieren
um es bei der Konfioguration von Dateien etwas leichter zu haben, installiere ich mir das Programm "nano"
pkg install nano
Nach der Eingabe nochmal mit "Y" bestätigen.
Der Download von nano erfolgt automatisch
SSH automatisch starten
Damit bei reboot der SSH-Dienst von selber startet, muss noch ein Eintrag in der rc.conf geändert werden. Zum bearbeiten der Datei öffne ich diese mit nano
nano /etc/rc.conf
Darin enthalten findet Ihr den Eintrag
Code:
sshd_enable="NO"
der dann geändert wird auf
Code:
sshd_enable="YES"
Die Datei wird gespeichert mit
Strg-o
(Buchstabe "o" nicht Ziffer "0")Den Dateinamen dann mit Enter bestätigen.
Anschließend kann man nano mit
Strg-x
wieder verlassen.Installation vom Webserver nginx und PHP
Mit dem folgendem Befehl wird der Webserver und php installiert. Dabei werden zwei Mal Eingaben von "Y" erforderlich sein:
pkg install nginx php56
Der Download von Nginx und php erfolgt auch hier automatisch
Sobald die Installation abgeschlossen ist, ist der folgende Befehl nötig:
rehash
Damit auch diese Dienste automatisch starten, ist wieder ein Eintrag in der rc.conf notwenig. Also öffne ich wieder die Datei mit Nano:
nano /etc/rc.conf
Ich erweitere die Datei am Ende um die beiden folgenden Zeilen:
Code:
nginx_enable="YES" php_fpm_enable="YES"
PHP konfigurieren:
Nun muss die Datei php-fpm.conf bearbeitet werden. Auch hier arbeite ich natürlich wieder mit nano:
nano /usr/local/etc/php-fpm.conf
Darin geht ihr zur Position...
Code:
listen = 127.0.0.1:9000
...und ersetzt diese durch:
Code:
listen = /var/run/php-fpm.sock
Dann sucht ihr nach der Position:
Code:
;listen.owner = www ;listen.group = www ;listen.mode = 0660
und entfernt die Semikolons davor (Semikolon davor = Kommentar/unwirksam). Es sieht dann so aus:
Code:
listen.owner = www listen.group = www listen.mode = 0660
Die Datei php-fpm.conf dann wieder mit
Strg-o
speichern und nano mit Strg-x
schließenNun brauchen wir noch eine php.ini. Diese kann zunächst aus der Vorlage kopiert werden:
Wechselt das Verzeichnis mit
cd /usr/local/etc
und kopiert aus der Vorlage mit:
cp php.ini-production php.ini
Die php.ini muss nun wieder mit nano bearbeitet werden.
nano php.ini
Darin sucht ihr den Eintrag...
Code:
cgi.fix_pathinfo=1
...entfernt auch hier das Semikolon davor und stellt den Eintrag auf "0"
wieder mit
Strg-o
speichern und nano mit Strg-x
schließenPHP starten
Die Konfiguration von PHP ist damit abgeschlossen und php kann gestartet werden mit:
service php-fpm start
Konfiguration vom Webserver "Nginx"
Damit dieser konfiguriert werden kann, muss er erst gestartet werden. Das geht mit dem Befehl:
service nginx start
Anschließend wechselt das Verzeichnis...
cd /usr/local/etc/nginx
Öffnet die Datei nginx.conf mit nano:
nano nginx.conf
Den Inhalt könnt ihr nun komplett ersetzten zu:
Code:
load_module /usr/local/libexec/nginx/ngx_mail_module.so; load_module /usr/local/libexec/nginx/ngx_stream_module.so; user www; worker_processes 2; error_log /var/log/nginx/error.log info; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 65; server { listen 80; server_name 192.168.1.200; root /usr/local/www/nginx; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } } }
Bei "server_name" müsst ihr natürlich die IP bzw. den Namen euren Servers angeben.
wieder mit
Strg-o
speichern und nano mit Strg-x
schließenVerzeichnis für die Log-Daten erstellen:
mkdir -p /var/log/nginx
Leer Logdateien erstellen:
sudo touch /var/log/nginx/access.log
sudo touch /var/log/nginx/error.log
Da es sich bei dem Documentroot um eine symbolische Verlinkung handelt, löschen wird das Verzeichnis und erstellen es anschließend neu:
sudo rm /usr/local/www/nginx
sudo mkdir /usr/local/www/nginx
Die neue Konfiguration kann jetzt mit der Eingabe von...
nginx -t
...auf Syntaxfehler geprüft werden. Die Ausgabe sollte wie folgt sein:
Code:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Anschließend nginx neu starten mit:
service nginx restart
Zur Prüfung ob alles klappt, erstellt ihr eine index.php im Dokumentroot mit nano
nano /usr/local/www/nginx/index.php
und gebt dieser den Inhalt:
Code:
<?php phpinfo(); ?>
wieder mit
Strg-o
speichern und nano mit Strg-x
schließenWenn alles geklappt hat, kann man nun mit einem Browser auf den neuen Webserver zugreifen (also in meinem Fall 192.168.1.200) und seht die Ausgabe von phpinfo().
Einfacher Zugriff auf Documentroot
SSH vom FreeNAS muss dafür eingeschaltet und konfiguriert sein!
Ich starte eine sftp-Verbindung mit FileZilla und gebe bei der IP die IP vom FreeNAS ein (NICHT vom Webserver!). Beim Port gebe ich 22 an und die root-Zugangsdaten vom FreeNAS. Im Anschluss finde ich das Documentroot hier:
/mnt/[Name vom FreeNAS-Pool]/jails/[Name des Jails (also Webserver)]/usr/local/www/nginx
Dort ist dann auch die eben erstellte Datei index.php zu finden. Aus Sicherheitsgründen sollte diese nach erfolgreichem Test wieder entfernt werden!
Beste Grüße
Heliophob
Last edited: