https://wiki.hostsharing.net/api.php?action=feedcontributions&user=Dge00&feedformat=atomHostsharing Wiki - Benutzerbeiträge [de]2024-03-28T14:59:50ZBenutzerbeiträgeMediaWiki 1.35.14https://wiki.hostsharing.net/index.php?title=PHP&diff=6329PHP2024-01-07T18:57:17Z<p>Dge00: Vollendet.</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0, 8.1 und 8.2 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.2 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.2 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php82 .php<br />
Action application/x-httpd-php82 /fastcgi-bin/phpstub82<br />
</pre><br />
<br />
===PHP 8.2 für ssh-Zugang per Shell aktivieren===<br />
<br />
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei "~/.profile" ergänzt werden mit der Zeile: <br />
<pre>alias php='/usr/bin/php8.2'</pre><br />
<br />
Nach Aktualisierung der Datei "~/.profile" noch eingeben <br />
<pre>$ source ~/.profile</pre><br />
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. <br />
<br />
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.<br />
==== Alternative: PATH Variable setzen ====<br />
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades<br />
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus /usr/bin/env nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.<br />
Dieser Aufruf umgeht jeglichen Alias in ~/.profile oder ~/.bash_profile<br />
Welche verlinkung in /usr/bin/env gesetzt ist lässt sich überprüfen durch den Befehl:<br />
<pre>$ which php</pre><br />
sollte ergeben:<br />
<pre>/usr/bin/php</pre> (und dies ist verlinkt mit irgendeiner System PHP Version zum Beispiel php7.4<br />
<br />
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:<br />
<pre>$ mkdir /home/doms/example.com/app/php8.2</pre><br />
<pre>$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/<strong>php</strong></pre> (wichtig, es muss hier als "php" benannt werden"<br />
Nun wird der Pfad um diesen Punkt erweitert:<br />
in ~/.profile oder ~/.bash_profile<br />
<pre>PATH="/home/doms/example.com/app/php8.2:$PATH"</pre><br />
Nun liegt der Pfad noch vor dem Systempfad, was sich durch den Befehl<br />
<pre>$ echo $PATH</pre> überprüfen lässt:<br />
hier steht jetzt so etwas wie:<br />
<pre><strong>/home/doms/example.com/app/php8.2</strong>:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games</pre><br />
das heißt, bevor der Aufruf des Befehls php in /usr/bin/ danach sucht, hat er das Script "php" schon in dem neu erstellten Ordner gefunden und ruft diesen auf.<br />
Diese PATH Variable funktioniert nun natürlich genauso für alle Bash / cli Eingaben und ersetzt die Vergabe von Alias.<br />
<pre>$ which php</pre> ergibt nun:<br />
<pre>/home/doms/example.com/app/php8.2/php</pre><br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=PHP&diff=6328PHP2024-01-07T18:41:29Z<p>Dge00: Andere Möglichkeit PFAD</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0, 8.1 und 8.2 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.2 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.2 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php82 .php<br />
Action application/x-httpd-php82 /fastcgi-bin/phpstub82<br />
</pre><br />
<br />
===PHP 8.2 für ssh-Zugang per Shell aktivieren===<br />
<br />
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei "~/.profile" ergänzt werden mit der Zeile: <br />
<pre>alias php='/usr/bin/php8.2'</pre><br />
<br />
Nach Aktualisierung der Datei "~/.profile" noch eingeben <br />
<pre>$ source ~/.profile</pre><br />
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. <br />
<br />
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.<br />
==== Alternative: PATH Variable setzen ====<br />
Eine Alternative ist die Nutzung einer alternativen Verlinkung und das setzen eines eigenen Pfades<br />
Composer, oder andere php Scripte können auch als Programme php aufrufen, wenn sie dazu die Version aus /usr/bin/env nutzen, bekommen Sie die Standard PHP version geliefert, beispielsweise php7.4.<br />
Dieser Aufruf umgeht jeglichen Alias in ~/.profile oder ~/.bash_profile<br />
Welche verlinkung in /usr/bin/env gesetzt ist lässt sich überprüfen durch den Befehl:<br />
<pre>$ which php</pre><br />
Anstelle der Nutzung also eines Alias wird nun einfach ein symbolischer Link an eine gewünschte Position gesetzt, zum Beispiel mit:<br />
<pre>$ mkdir /home/doms/example.com/app/php8.2</pre><br />
<pre>$ ln -s /usr/bin/php8.2 /home/doms/example.com/app/php8.2/php</pre><br />
Nun wird der Pfad um diesen Punkt erweitert:<br />
in ~/.profile oder ~/.bash_profile<br />
<br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=PHP&diff=6327PHP2024-01-07T14:53:46Z<p>Dge00: /* Vorinstallierte PHP Version wechseln */ auf 8.2 aktualisiert</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0, 8.1 und 8.2 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.2 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub82 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.2 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php82 .php<br />
Action application/x-httpd-php82 /fastcgi-bin/phpstub82<br />
</pre><br />
<br />
===PHP 8.2 für ssh-Zugang per Shell aktivieren===<br />
<br />
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei "~/.profile" ergänzt werden mit der Zeile: <br />
<pre>alias php='/usr/bin/php8.2'</pre><br />
<br />
Nach Aktualisierung der Datei "~/.profile" noch eingeben <br />
<pre>$ source ~/.profile</pre><br />
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. <br />
<br />
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.<br />
<br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=PHP&diff=6326PHP2024-01-07T14:52:40Z<p>Dge00: /* PHP 8.1 für ssh-Zugang per Shell aktivieren */ aktualisiert auf 8.2</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0, 8.1 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.1 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.1 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php81 .php<br />
Action application/x-httpd-php81 /fastcgi-bin/phpstub81<br />
</pre><br />
<br />
===PHP 8.2 für ssh-Zugang per Shell aktivieren===<br />
<br />
Möchte man an der Shell immer /usr/bin/php8.2 statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei "~/.profile" ergänzt werden mit der Zeile: <br />
<pre>alias php='/usr/bin/php8.2'</pre><br />
<br />
Nach Aktualisierung der Datei "~/.profile" noch eingeben <br />
<pre>$ source ~/.profile</pre><br />
Dann sollte der Aufruf php -v die version php 8.2 zurückgeben. <br />
<br />
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.<br />
<br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=PHP&diff=6320PHP2023-12-31T11:33:03Z<p>Dge00: Grtammatil</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0, 8.1 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.1 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.1 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php81 .php<br />
Action application/x-httpd-php81 /fastcgi-bin/phpstub81<br />
</pre><br />
<br />
===PHP 8.1 für ssh-Zugang per Shell aktivieren===<br />
<br />
Möchte man an der Shell immer /usr/bin/php8.1:w statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei "~/.profile" ergänzt werden mit der Zeile: <br />
<pre>alias php='/usr/bin/php8.1'</pre><br />
<br />
Nach Aktualisierung der Datei "~/.profile" noch eingeben <br />
<pre>$ source ~/.profile</pre><br />
Dann sollte der Aufruf php -v die version php 8.1 zurückgeben. <br />
<br />
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.<br />
<br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine Kurzanleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=6281Drupal installieren2023-11-12T15:05:09Z<p>Dge00: /* Mit Ansible bei HS installieren */</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
drupal 10 braucht mindestens php 8.1 dies wird installiert nach Anleitung: [[PHP|Aktuelle PHP Version nutzen]]<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
=== Mit Composer ===<br />
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ <br />
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction<br />
<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
rmdir htdocs-ssl<br />
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
= Mit Ansible bei HS installieren =<br />
Dieser Abschnitt ist nicht mehr aktuell, Drupal 10 ist die aktuelle Version (Stand November 2023)<br />
<br />
== Technische Details ==<br />
<br />
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.<br />
<br />
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/<br />
<br />
Es wird die aktuelle Version 9 von Drupal installiert.<br />
<br />
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.<br />
<br />
== Installation ==<br />
<br />
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:<br />
<br />
Klonen des Repositories:<br />
<br />
$ git clone https://codeberg.org/tpokorra/hs.ansible.git<br />
<br />
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:<br />
<br />
$ cd hs.ansible<br />
$ cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml<br />
$ vi inventories/my.drupal.yml<br />
<br />
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.<br />
<br />
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...<br />
<br />
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.<br />
<br />
Dann kann die Installation vom lokalen Rechner aus gestartet werden:<br />
<br />
$ ansible-playbook -i inventories/my.drupal.yml init.yml<br />
$ ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml<br />
<br />
== Einrichtung ==<br />
<br />
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org<br />
<br />
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.<br />
<br />
== Links ==<br />
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]<br />
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]<br />
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Ansible Playbook]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=6280Drupal installieren2023-11-12T14:43:19Z<p>Dge00: /* Vorbereitungen */ composer aktuell nutzen</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
drupal 10 braucht mindestens php 8.1 dies wird installiert nach Anleitung: [[PHP|Aktuelle PHP Version nutzen]]<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
=== Mit Composer ===<br />
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ <br />
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction<br />
<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
rmdir htdocs-ssl<br />
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
= Mit Ansible bei HS installieren =<br />
<br />
== Technische Details ==<br />
<br />
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.<br />
<br />
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/<br />
<br />
Es wird die aktuelle Version 9 von Drupal installiert.<br />
<br />
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.<br />
<br />
== Installation ==<br />
<br />
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:<br />
<br />
Klonen des Repositories:<br />
<br />
$ git clone https://codeberg.org/tpokorra/hs.ansible.git<br />
<br />
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:<br />
<br />
$ cd hs.ansible<br />
$ cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml<br />
$ vi inventories/my.drupal.yml<br />
<br />
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.<br />
<br />
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...<br />
<br />
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.<br />
<br />
Dann kann die Installation vom lokalen Rechner aus gestartet werden:<br />
<br />
$ ansible-playbook -i inventories/my.drupal.yml init.yml<br />
$ ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml<br />
<br />
== Einrichtung ==<br />
<br />
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org<br />
<br />
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.<br />
<br />
== Links ==<br />
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]<br />
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]<br />
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Ansible Playbook]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00https://wiki.hostsharing.net/index.php?title=PHP&diff=6279PHP2023-11-12T14:25:41Z<p>Dge00: Aktualisiert auf PHP 8.1</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0, 8.1 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.1 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub81 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.1 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php81 .php<br />
Action application/x-httpd-php81 /fastcgi-bin/phpstub81<br />
</pre><br />
<br />
===PHP 8.1 für ssh-Zugang per Shell aktivieren===<br />
<br />
Möchte man an der Shell immer /usr/bin/php8.1:w statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei "~/.profile" ergänzt werden mit der Zeile: <br />
<pre>alias php='/usr/bin/php8.1'</pre><br />
<br />
Nach Aktualisierung der Datei "~/.profile" noch eingeben <br />
<pre>$ source ~/.profile</pre><br />
Dann sollte der Aufruf php -v die version php 8.1 zurückgeben. <br />
<br />
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.<br />
<br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine kurz Anleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=PHP&diff=6278PHP2023-11-12T14:24:00Z<p>Dge00: /* PHP 8.1 für ssh-Zugang per Shell aktivieren */</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0, 8.1 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.0 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.0 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php80 .php<br />
Action application/x-httpd-php80 /fastcgi-bin/phpstub80<br />
</pre><br />
<br />
===PHP 8.1 für ssh-Zugang per Shell aktivieren===<br />
<br />
Möchte man an der Shell immer /usr/bin/php8.1:w statt /usr/bin/php aufrufen, dann kann der Befehl auch in die Datei "~/.profile" ergänzt werden mit der Zeile: <br />
<pre>alias php='/usr/bin/php8.1'</pre><br />
<br />
Nach Aktualisierung der Datei "~/.profile" noch eingeben <br />
<pre>$ source ~/.profile</pre><br />
Dann sollte der Aufruf php -v die version php 8.1 zurückgeben. <br />
<br />
Gleiches gilt natürlich auch andere bei HS verfügbare PHP Versionen.<br />
<br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine kurz Anleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=6277Drupal installieren2023-11-12T14:06:01Z<p>Dge00: /* Mit Composer */ Link zu Composer</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
=== Mit Composer ===<br />
Die auf den Hives vorhandene Version von Composer kann veraltet sein, daher ist es sinnvoll eine eigene Version zu installieren von: https://getcomposer.org/download/ <br />
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction<br />
<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
rmdir htdocs-ssl<br />
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
= Mit Ansible bei HS installieren =<br />
<br />
== Technische Details ==<br />
<br />
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.<br />
<br />
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/<br />
<br />
Es wird die aktuelle Version 9 von Drupal installiert.<br />
<br />
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.<br />
<br />
== Installation ==<br />
<br />
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:<br />
<br />
Klonen des Repositories:<br />
<br />
$ git clone https://codeberg.org/tpokorra/hs.ansible.git<br />
<br />
Dann muss die Datei inventory-sample.yml kopiert werden, und entsprechend angepasst werden:<br />
<br />
$ cd hs.ansible<br />
$ cp playbooks/drupal/inventory-sample.yml inventories/my.drupal.yml<br />
$ vi inventories/my.drupal.yml<br />
<br />
In der my.drupal.yml müssen die entsprechenden Werte eingerichtet werden.<br />
<br />
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...<br />
<br />
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.<br />
<br />
Dann kann die Installation vom lokalen Rechner aus gestartet werden:<br />
<br />
$ ansible-playbook -i inventories/my.drupal.yml init.yml<br />
$ ansible-playbook -i inventories/my.drupal.yml playbooks/drupal/install.yml<br />
<br />
== Einrichtung ==<br />
<br />
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org<br />
<br />
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.<br />
<br />
== Links ==<br />
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]<br />
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]<br />
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Ansible Playbook]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Goaccess&diff=5994Goaccess2023-02-15T21:16:05Z<p>Dge00: /* Auswertung mit goaccess */ Warnung als Überschrift plus kleinere Korrekturen</p>
<hr />
<div>Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)<br />
<br />
==Installation==<br />
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:<br />
eingeloggt als Paketadmin z.B. per ssh xyz00<br />
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:<br />
z.B. /home/pacs/xyz00/usr <br />
~$mkdir usr<br />
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)<br />
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.<br />
~$ echo 'export PATH="$HOME/usr/bin:$PATH"' >>.bashrc<br />
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:<br />
~$ echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' >> ~/.bash_profile<br />
nun sind wir bereit für die Installation:<br />
~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz<br />
~$ tar -xzvf goaccess-1.7.tar.gz<br />
~$ cd goaccess-1.7/<br />
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix<br />
~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr<br />
~/goaccess-1.7$ make<br />
~/goaccess-1.7# make install<br />
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle<br />
ein Aufruf von<br />
~$ goaccess --version<br />
sollte das zeigen<br />
~$ goaccess --v<br />
GoAccess - 1.7.<br />
For more details visit: https://goaccess.io/<br />
Copyright (C) 2009-2022 by Gerardo Orellana<br />
<br />
Build configure arguments:<br />
--enable-utf8<br />
--enable-geoip=mmdb<br />
<br />
==Anwendung==<br />
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.<br />
=== Pipe mit zcat ===<br />
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:<br />
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.<br />
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor<br />
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat<br />
~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz <br />
=== Wildcards ===<br />
zcat kann sehr gut mit Wildcards umgehen, der Aufruf <br />
~$ '''zcat var/web*.log.gz''' | goaccess -o webstat.html --log-format=COMBINED -<br />
zum Beispiel fasst alle logfiles aller Domains und aller Tage zusammen.<br />
Es geht auch nur eine Domain: '''''"var/web-example.com*.log.gz"''''' oder nur den Januar 2023: '''''"var/web*202301*log.gz"''''' (es sollte beachtet werden, dass natürlich immer die Datei, die dann am Tag früh morgens (bei mir ist das zwischen 01:38h und 01:40h) erstellt wird natürlich für den vorherigen Tag ist. Das heißt in der 20230101 ist vor allem der 31.12. geloggt<br />
<br />
=== Auswertung mit goaccess ===<br />
~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -<br />
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden. '''Empfehlung:''' Datei per scp heruntergeladen, auf dem eigenen, geschützten Rechner angeschaut, und schnell vernichtet.<br />
<br />
== Warnung: Datenschutz ==<br />
Man beachte, dass die Auswertungen Datenschutzrelevante Inhalte wie die IP Adresse und die aufgerufenen Pfade enthalten, bei Nextcloud beinhalten diese häufig auch den Username und somit ggf. den Klarnamen. Entsprechend sollte diese Auswertung nicht öffentlich (ohne Passwortschutz) zugänglich gemacht werden. Siehe dazu [[.htaccess#Passwortschutz_f.C3.BCr_Dateien|Passwortschutz mit htaccess]].<br />
<br />
[[Kategorie:Traffic]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Goaccess&diff=5993Goaccess2023-02-15T21:09:24Z<p>Dge00: /* Wildcards */</p>
<hr />
<div>Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)<br />
<br />
==Installation==<br />
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:<br />
eingeloggt als Paketadmin z.B. per ssh xyz00<br />
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:<br />
z.B. /home/pacs/xyz00/usr <br />
~$mkdir usr<br />
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)<br />
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.<br />
~$ echo 'export PATH="$HOME/usr/bin:$PATH"' >>.bashrc<br />
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:<br />
~$ echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' >> ~/.bash_profile<br />
nun sind wir bereit für die Installation:<br />
~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz<br />
~$ tar -xzvf goaccess-1.7.tar.gz<br />
~$ cd goaccess-1.7/<br />
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix<br />
~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr<br />
~/goaccess-1.7$ make<br />
~/goaccess-1.7# make install<br />
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle<br />
ein Aufruf von<br />
~$ goaccess --version<br />
sollte das zeigen<br />
~$ goaccess --v<br />
GoAccess - 1.7.<br />
For more details visit: https://goaccess.io/<br />
Copyright (C) 2009-2022 by Gerardo Orellana<br />
<br />
Build configure arguments:<br />
--enable-utf8<br />
--enable-geoip=mmdb<br />
<br />
==Anwendung==<br />
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.<br />
=== Pipe mit zcat ===<br />
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:<br />
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.<br />
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor<br />
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat<br />
~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz <br />
=== Wildcards ===<br />
zcat kann sehr gut mit Wildcards umgehen, der Aufruf <br />
~$ '''zcat var/web*.log.gz''' | goaccess -o webstat.html --log-format=COMBINED -<br />
zum Beispiel fasst alle logfiles aller Domains und aller Tage zusammen.<br />
Es geht auch nur eine Domain: '''''"var/web-example.com*.log.gz"''''' oder nur den Januar 2023: '''''"var/web*202301*log.gz"''''' (es sollte beachtet werden, dass natürlich immer die Datei, die dann am Tag früh morgens (bei mir ist das zwischen 01:38h und 01:40h) erstellt wird natürlich für den vorherigen Tag ist. Das heißt in der 20230101 ist vor allem der 31.12. geloggt<br />
<br />
=== Auswertung mit goaccess ===<br />
~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -<br />
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden. Man beachte das die Auswertungen Datenschutzrelevante Inhalte wie die IP Adresse und die aufgerufenen Pfade enthalten, bei Nextcloud beinhalten diese häufig auch den Username und somit ggf. den Klarnamen. Entsprechend sollte diese Auswertung nicht öffentlich (ohne Passwortschutz) zugänglich gemacht werden. Siehe dazu [[.htaccess#Passwortschutz_f.C3.BCr_Dateien|Passwortschutz mit htaccess]].<br />
<br />
<br />
<br />
[[Kategorie:Traffic]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Goaccess&diff=5991Goaccess2023-02-15T17:24:41Z<p>Dge00: </p>
<hr />
<div>Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)<br />
<br />
==Installation==<br />
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:<br />
eingeloggt als Paketadmin z.B. per ssh xyz00<br />
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:<br />
z.B. /home/pacs/xyz00/usr <br />
~$mkdir usr<br />
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)<br />
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.<br />
~$ echo 'export PATH="$HOME/usr/bin:$PATH"' >>.bashrc<br />
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:<br />
~$ echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' >> ~/.bash_profile<br />
nun sind wir bereit für die Installation:<br />
~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz<br />
~$ tar -xzvf goaccess-1.7.tar.gz<br />
~$ cd goaccess-1.7/<br />
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix<br />
~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr<br />
~/goaccess-1.7$ make<br />
~/goaccess-1.7# make install<br />
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle<br />
ein Aufruf von<br />
~$ goaccess --version<br />
sollte das zeigen<br />
~$ goaccess --v<br />
GoAccess - 1.7.<br />
For more details visit: https://goaccess.io/<br />
Copyright (C) 2009-2022 by Gerardo Orellana<br />
<br />
Build configure arguments:<br />
--enable-utf8<br />
--enable-geoip=mmdb<br />
<br />
==Anwendung==<br />
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.<br />
=== Pipe mit zcat ===<br />
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:<br />
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.<br />
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor<br />
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat<br />
~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz <br />
=== Wildcards ===<br />
zcat kann sehr gut mit Wildcards umgehen, der Aufruf <br />
~$ zcat var/web*.log.gz | goaccess -o webstat.html --log-format=COMBINED -<br />
zum Beispiel fasst alle logfiles aller Domains und aller Tage zusammen.<br />
oder nur per Domain: "var/web-example.com*.log.gz" oder nur den Januar 2023: "var/web*202301*log.gz"<br />
<br />
=== Auswertung mit goaccess ===<br />
~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -<br />
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden.<br />
<br />
<br />
<br />
[[Kategorie:Traffic]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Goaccess&diff=5990Goaccess2023-02-15T17:24:01Z<p>Dge00: Endgültige Version - änderte File decompression etc zu zcat und pipe</p>
<hr />
<div>Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)<br />
<br />
==Installation==<br />
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:<br />
eingeloggt als Paketadmin z.B. per ssh xyz00<br />
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:<br />
z.B. /home/pacs/xyz00/usr <br />
~$mkdir usr<br />
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)<br />
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.<br />
~$ echo 'export PATH="$HOME/usr/bin:$PATH"' >>.bashrc<br />
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:<br />
~$ echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' >> ~/.bash_profile<br />
nun sind wir bereit für die Installation:<br />
~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz<br />
~$ tar -xzvf goaccess-1.7.tar.gz<br />
~$ cd goaccess-1.7/<br />
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix<br />
~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr<br />
~/goaccess-1.7$ make<br />
~/goaccess-1.7# make install<br />
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle<br />
ein Aufruf von<br />
~$ goaccess --version<br />
sollte das zeigen<br />
~$ goaccess --v<br />
GoAccess - 1.7.<br />
For more details visit: https://goaccess.io/<br />
Copyright (C) 2009-2022 by Gerardo Orellana<br />
<br />
Build configure arguments:<br />
--enable-utf8<br />
--enable-geoip=mmdb<br />
<br />
===Anwendung===<br />
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn das file web.log, welches alle aktuellen logs der letzten zwei Tage beinhaltet beginnt nicht mit Datum und Uhrzeit, sondern mit den Domainnamen, was für goaccess zu Verwirrung führt.<br />
==== Pipe mit zcat ====<br />
Am leichtesten ist die Nutzung einer Pipe für die Prozessierung der gzip2 gezippten logfiles die alle nach dem Schema:<br />
web-subdomain.example.com-YYYYMMDD-hhmm.log.gz im Ordner $HOME/var liegen.<br />
Eine Auswertung des Weblogs von example.com z.B. vom 14.02.2023 liegt unter /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz vor<br />
Die Auswertung muss also entzippt werden, das geht on-the-fly mit zcat<br />
~$ zcat /home/pacs/xyz00/var/web-example.com-20230215-0139.log.gz <br />
==== Wildcards ====<br />
zcat kann sehr gut mit Wildcards umgehen, der Aufruf <br />
~$ zcat var/web*.log.gz | goaccess -o webstat.html --log-format=COMBINED -<br />
zum Beispiel fasst alle logfiles aller Domains und aller Tage zusammen.<br />
oder nur per Domain: "var/web-example.com*.log.gz" oder nur den Januar 2023: "var/web*202301*log.gz"<br />
<br />
==== Auswertung mit goaccess ====<br />
~$ zcat ... | goaccess -o webstat.html --log-format=COMBINED -<br />
legt eine Datei webstat.html im aktuellen Ordner ab, diese kann dann zum Beispiel heruntergeladen werden, oder in einer Domain erreichbar gemacht werden.<br />
<br />
<br />
<br />
[[Kategorie:Traffic]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Goaccess&diff=5989Goaccess2023-02-15T16:02:42Z<p>Dge00: /* Installation */ lokale Installation</p>
<hr />
<div>Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)<br />
<br />
==Installation==<br />
Die Installation ist erst einmal sehr einfach, daher kann es fast so installiert werden wie auf goaccess.io/download beschrieben:<br />
eingeloggt als Paketadmin z.B. per ssh xyz00<br />
Da wir als Paketadmin keine Programme für alle installieren kann ein lokales Directory für die Installation des Programms (und ähnlicher angelegt werden:<br />
z.B. /home/pacs/xyz00/usr <br />
~$mkdir usr<br />
um dann automatisch dorthin auch ein /bin Ordner anzulegen (wird durch configure danach gemacht)<br />
und auch den PATH anpassen, damit Programme hier in bin direkt ausgeführt werden.<br />
~$ echo 'export PATH="$HOME/usr/bin:$PATH"' >>.bashrc<br />
leider wird .bashrc nicht immer gelesen wenn wir mit ssh einloggen, wir müssen es in .bash_profile festlegen:<br />
~$ echo '[[ -f ~/.bashrc ]] && . ~/.bashrc' >> ~/.bash_profile<br />
nun sind wir bereit für die Installation:<br />
~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz<br />
~$ tar -xzvf goaccess-1.7.tar.gz<br />
~$ cd goaccess-1.7/<br />
Eine Systemweite Installation wird mangels Berechtigung nicht funktionieren. Damit configure direkt unseren Pfad anlegt, befehlen wir das Installationsdirectory $HOME als prefix<br />
~/goaccess-1.7$ ./configure --enable-utf8 --enable-geoip=mmdb --prefix=$HOME/usr<br />
~/goaccess-1.7$ make<br />
~/goaccess-1.7# make install<br />
Nun liegt $HOME//usr/bin/goaccess in unserem PATH an erster Stelle<br />
ein Aufruf von<br />
~$ goaccess --version<br />
sollte das zeigen<br />
~$ goaccess --v<br />
GoAccess - 1.7.<br />
For more details visit: https://goaccess.io/<br />
Copyright (C) 2009-2022 by Gerardo Orellana<br />
<br />
Build configure arguments:<br />
--enable-utf8<br />
--enable-geoip=mmdb<br />
<br />
===Post installation===<br />
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn alle Konfigurationen die mit dem Aufruf:<br />
<br />
angeboten werden haben das falsche Zeitformat für hostsharing, es muss folgendermaßen angepasst werden:<br />
... to be continued...<br />
<br />
=== Einzelnes Log File einer Domain und eines Tages auswerden === <br />
Um ein Log File eines Tages und einer Domain anzusehen benötigt man erstmal das richtige logfile. Wie in der Kerndoku beschrieben findet man das im Paketadmin xyz00 unter ~/var/web-example.com-YYYYMMDD-????.log.gz<br />
<br />
Um daraus einen Report zu generieren muss das log erstmal entpackt werden. <br />
<br />
~/$ mkdir tmp<br />
~/$ cd tmp<br />
~/tmp$ gzip -d ~/var/web-example.com-YYYYMMDD-????.log.gz<br />
~/tmp$ mv ~/var/web-example.com-YYYYMMDD-????.log ./<br />
~/tmp$ ~/goaccess-1.7/goaccess web-example.com-YYYYMMDD-????.log -o ~/tmp/report.html --log-format=COMBINED<br />
<br />
Das entpackte Logfile muss nicht zwangsläufig verschoben werden, eher zur Übersichtlichkeit.<br />
<br />
Der Report befindet sich dann in ~/tmp/log und kann dann in ein entsprechendes htdocs(-ssl) Verzeichnis verschoben werden. <br />
<br />
<br />
<br />
[[Kategorie:Traffic]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Goaccess&diff=5985Goaccess2023-02-13T15:35:23Z<p>Dge00: Verlinkt zu Logging</p>
<hr />
<div>Um den [[Traffic]] des Pakets beziehungweise die Einträge der [[Logging|Logdateien]] im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)<br />
<br />
==Installation==<br />
Die Installation ist erst einmal sehr einfach, allerdings kommt beim aktivieren der geoip eine Fehlermeldung, daher kann es mit leichten Modifikationen so installiert werden wie auf goaccess.io/download beschrieben:<br />
eingeloggt als Paketadmin z.B. per ssh xyz00<br />
~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz<br />
~$ tar -xzvf goaccess-1.7.tar.gz<br />
~$ cd goaccess-1.7/<br />
~/goaccess-1.7$ ./configure --enable-utf8 <s>--enable-geoip=mmdb</s><br />
~/goaccess-1.7$ make<br />
~/goaccess-1.7# make install<br />
===Post installation===<br />
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn alle Konfigurationen die mit dem Aufruf:<br />
~/goaccess-1.7$ ./goaccess ./config.guess<br />
angeboten werden haben das falsche Zeitformat für hostsharing, es muss folgendermaßen angepasst werden:<br />
... to be continued...<br />
<br />
<br />
[[Kategorie:Traffic]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Goaccess&diff=5984Goaccess2023-02-13T15:29:46Z<p>Dge00: Erstellung goaccess</p>
<hr />
<div>Um den [[Traffic]] des Pakets im grafischen Blick zu halten, falls das Vorgehen im gerade wenn unerwartet eine Mail mit erhöhtem Datenvolumen kommt (im terminal oder als webpage) bietet sich das tool goaccess an (https://goaccess.io/download). Es ist ein sehr schlankes tool was gerade mal 690kB im Download des tar.gz wiegt (Version 1.7)<br />
<br />
==Installation==<br />
Die Installation ist erst einmal sehr einfach, allerdings kommt beim aktivieren der geoip eine Fehlermeldung, daher kann es mit leichten Modifikationen so installiert werden wie auf goaccess.io/download beschrieben:<br />
eingeloggt als Paketadmin z.B. per ssh xyz00<br />
~$ wget https://tar.goaccess.io/goaccess-1.7.tar.gz<br />
~$ tar -xzvf goaccess-1.7.tar.gz<br />
~$ cd goaccess-1.7/<br />
~/goaccess-1.7$ ./configure --enable-utf8 <s>--enable-geoip=mmdb</s><br />
~/goaccess-1.7$ make<br />
~/goaccess-1.7# make install<br />
===Post installation===<br />
Dann, nach der Installation beginnt der hostsharingspezifische Teil, denn alle Konfigurationen die mit dem Aufruf:<br />
~/goaccess-1.7$ ./goaccess ./config.guess<br />
angeboten werden haben das falsche Zeitformat für hostsharing, es muss folgendermaßen angepasst werden:<br />
... to be continued...<br />
<br />
<br />
[[Kategorie:Traffic]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Benutzer:Dge00&diff=5983Benutzer:Dge002023-02-13T14:55:52Z<p>Dge00: </p>
<hr />
<div>Hallo ich bin Daniel Germer, bin in Südhessen ansässig und betreibe seit 2017 meine Seiten bei hostsharing.<br />
Nach verschiedenen Anbietern gefällt es mir hier am besten, vor allem ist hostsharing mit der Struktur einer Genossenschaft und hohen ethischen Standards perfekt.<br />
Meine Seiten betreibe ich mit [[Drupal installieren|drupal]], eine [[nextcloud]] habe ich auch hier installiert.<br />
Zum trafficlogging versuche ich mit [[goaccess]] einen Überblick zu behalten.</div>Dge00https://wiki.hostsharing.net/index.php?title=Aktuelles_PHP_mit_phpenv&diff=5954Aktuelles PHP mit phpenv2022-11-19T09:43:35Z<p>Dge00: </p>
<hr />
<div>Aktuelle PHP Versionen (8.x , wobei "x" z.B. Stand November 2022 entweder 0.25 oder 1.12 sein könnten) lassen sich in einem ''phpenv'' installieren.<br />
<br />
== phpenv ==<br />
<br />
Dazu geht man wie folgt vor:<br />
<br />
$ cd $HOME<br />
$ git clone git://github.com/phpenv/phpenv.git ~/.phpenv<br />
$ export PATH=$PATH:~/.phpenv/bin<br />
$ eval "$(phpenv init -)"<br />
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build<br />
<br />
Welche PHP-Versionen verfügbar sind, findet man '''nach''' der Ausführung des oben beschriebenen ''git clone'' mit:<br />
<br />
$ phpenv install -l<br />
<br />
Die voreingestellten Optionen für das Kompilieren von PHP mit php-build holt das Skript aus der Datei<br />
<br />
~/.phpenv/plugins/php-build/share/php-build/default_configure_options<br />
<br />
...man sollte sie sich also zuvor anschauen.<br />
<br />
Die PHP-Version ''8.xsnapshot'' aus der Liste der verfügbaren PHP-Versionen installiert man anschließend zum Beispiel per:<br />
<br />
$ phpenv install 8.xsnapshot<br />
<br />
<br />
<br />
== phpstub für FastCGI ==<br />
<br />
Um diese PHP-Version (hier: 8.x-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen<br />
benötigt man noch einen eingenen PHP-Stub. Dazu kopiert man sich das zentral abgelegte originale phpstub-Verzeichnis in das eigene HOME-Verzeichnis, löscht daraus die phpstub-Datei (phpstub) und editiert die C-Quelldatei des phpstub (phpstub.c):<br />
<br />
$ cd $HOME<br />
$ cp -a /usr/local/src/phpstub/ .<br />
$ cd $HOME/phpstub<br />
$ rm phpstub<br />
$ editor phpstub.c<br />
<br />
Das kleine C-Programm des phpstub (phpstub.c) ändert man im soeben geöffneten editor wie folgt ab:<br />
<br />
#include <stdlib.h><br />
#include <unistd.h><br />
#include <libgen.h><br />
int main(int argc, char* argv[]) {<br />
setenv("PHPRC", dirname(argv[0]), 1);<br />
const char* phpbin = getenv("HTTP_PHP_BIN");<br />
if(phpbin) {<br />
execl(phpbin, "php", NULL);<br />
} else {<br />
execl("/home/pacs/xyz00/users/testuser/.phpenv/versions/8.xsnapshot/bin/php-cgi", "php", NULL);<br />
}<br />
return(EXIT_FAILURE);<br />
}<br />
<br />
Dabei sind die Pfadbestandteile "xyz00" und "testuser" durch den Namen des eigenen Paketes und den<br />
hinteren Bestandteil des aktuellen Usernamens zu ersetzen. Ebenso sollte "8.xsnapshot" durch die selbst gewählte PHP-Versionsbezeichnung ersetzt werden.<br />
<br />
Nach Verlassen des Editors muss der PHP-Stub zunächst kompiliert werden. Anschließend muss man ihn an den richtigen Ort im Domainverzeichnis kopieren. Wie dies umgesetzt wird, zeigt diese Befehlsfolge:<br />
<br />
$ cd $HOME/phpstub<br />
$ make <br />
$ cp phpstub $HOME/doms/example.com/fastcgi/<br />
$ cp phpstub $HOME/doms/example.com/fastcgi-ssl/<br />
<br />
In der .htaccess-Datei im DocumentRoot der Sub-Domain <SUBDOMAIN> kann man dann die PHP-Dateien auf einen beliebigen phpstub - wie z.B. den eben erzeugten eigenen phpstub - mappen.<br />
Dazu müssen die folgenden beiden Zeilen zu Beginn in die oben erwähnte .htaccess-Datei eingefügt werden ("phpstub" ersetzen durch den selbstvergebenen Dateinamen des eigenen stubs, <SUBDOMAIN> an die eigene subdomain passen - der Platzhalter <SUBDOMAIN>/ kann ggfs. auch ganz entfernt werden):<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/<SUBDOMAIN>/phpstub<br />
<br />
(siehe dazu auch: https://wiki.hostsharing.net/index.php?title=PHP#eigene_PHP_Konfigurationen_und_verschiedene_nebeneinander_verwenden<br />
und<br />
https://wiki.hostsharing.net/index.php?title=WWW#Einstellungen_zum_HTTP_Zugriff)<br />
<br />
<br />
Mit einem kleinen PHP-Skript lässt sich schnell prüfen, ob alles geklappt hat: Man kann eine Datei ''info.php'' mit dem folgenden Inhalt im Verzeichnis ''$HOME/doms/example.com/subs/www/'' bzw. ''$HOME/doms/example.com/subs-ssl/www/'' ablegen.<br />
<br />
<?php<br />
phpinfo();<br />
?><br />
<br />
Im Browser sollte dann durch Aufruf des URL http://www.example.com/info.php bzw. https://www.example.com/info.php die PHP-Version mit allen Informationen<br />
über das selbstgebaute PHP angezeigt werden.<br />
<br />
Achtung: ''example.com'' ist überall durch eine eigene gültige und beim User aufgeschaltete (Sub-)Domain<br />
zu ersetzen.</div>Dge00https://wiki.hostsharing.net/index.php?title=Aktuelles_PHP_mit_phpenv&diff=5953Aktuelles PHP mit phpenv2022-11-19T09:38:43Z<p>Dge00: "aktuelle Versionen" 7.1.. durch aktuelle Versionen 8.x ersetzt 7.1 ist lange nicht mehr aktuell, 8. wird noch einige Zeit aktuell sein.</p>
<hr />
<div>Aktuelle PHP Versionen lassen sich in einem ''phpenv'' installieren.<br />
<br />
== phpenv ==<br />
<br />
Dazu geht man wie folgt vor:<br />
<br />
$ cd $HOME<br />
$ git clone git://github.com/phpenv/phpenv.git ~/.phpenv<br />
$ export PATH=$PATH:~/.phpenv/bin<br />
$ eval "$(phpenv init -)"<br />
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build<br />
<br />
Welche PHP-Versionen verfügbar sind, findet man '''nach''' der Ausführung des oben beschriebenen ''git clone'' mit:<br />
<br />
$ phpenv install -l<br />
<br />
Die voreingestellten Optionen für das Kompilieren von PHP mit php-build holt das Skript aus der Datei<br />
<br />
~/.phpenv/plugins/php-build/share/php-build/default_configure_options<br />
<br />
...man sollte sie sich also zuvor anschauen.<br />
<br />
Die PHP-Version ''8.xsnapshot'' aus der Liste der verfügbaren PHP-Versionen installiert man anschließend zum Beispiel per:<br />
<br />
$ phpenv install 8.xsnapshot<br />
<br />
<br />
<br />
== phpstub für FastCGI ==<br />
<br />
Um diese PHP-Version (hier: 8.x-Snapshot) mit FastCGI (wie bei Hostsharing üblich) zu nutzen<br />
benötigt man noch einen eingenen PHP-Stub. Dazu kopiert man sich das zentral abgelegte originale phpstub-Verzeichnis in das eigene HOME-Verzeichnis, löscht daraus die phpstub-Datei (phpstub) und editiert die C-Quelldatei des phpstub (phpstub.c):<br />
<br />
$ cd $HOME<br />
$ cp -a /usr/local/src/phpstub/ .<br />
$ cd $HOME/phpstub<br />
$ rm phpstub<br />
$ editor phpstub.c<br />
<br />
Das kleine C-Programm des phpstub (phpstub.c) ändert man im soeben geöffneten editor wie folgt ab:<br />
<br />
#include <stdlib.h><br />
#include <unistd.h><br />
#include <libgen.h><br />
int main(int argc, char* argv[]) {<br />
setenv("PHPRC", dirname(argv[0]), 1);<br />
const char* phpbin = getenv("HTTP_PHP_BIN");<br />
if(phpbin) {<br />
execl(phpbin, "php", NULL);<br />
} else {<br />
execl("/home/pacs/xyz00/users/testuser/.phpenv/versions/8.xsnapshot/bin/php-cgi", "php", NULL);<br />
}<br />
return(EXIT_FAILURE);<br />
}<br />
<br />
Dabei sind die Pfadbestandteile "xyz00" und "testuser" durch den Namen des eigenen Paketes und den<br />
hinteren Bestandteil des aktuellen Usernamens zu ersetzen. Ebenso sollte "8.xsnapshot" durch die selbst gewählte PHP-Versionsbezeichnung ersetzt werden.<br />
<br />
Nach Verlassen des Editors muss der PHP-Stub zunächst kompiliert werden. Anschließend muss man ihn an den richtigen Ort im Domainverzeichnis kopieren. Wie dies umgesetzt wird, zeigt diese Befehlsfolge:<br />
<br />
$ cd $HOME/phpstub<br />
$ make <br />
$ cp phpstub $HOME/doms/example.com/fastcgi/<br />
$ cp phpstub $HOME/doms/example.com/fastcgi-ssl/<br />
<br />
In der .htaccess-Datei im DocumentRoot der Sub-Domain <SUBDOMAIN> kann man dann die PHP-Dateien auf einen beliebigen phpstub - wie z.B. den eben erzeugten eigenen phpstub - mappen.<br />
Dazu müssen die folgenden beiden Zeilen zu Beginn in die oben erwähnte .htaccess-Datei eingefügt werden ("phpstub" ersetzen durch den selbstvergebenen Dateinamen des eigenen stubs, <SUBDOMAIN> an die eigene subdomain passen - der Platzhalter <SUBDOMAIN>/ kann ggfs. auch ganz entfernt werden):<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/<SUBDOMAIN>/phpstub<br />
<br />
(siehe dazu auch: https://wiki.hostsharing.net/index.php?title=PHP#eigene_PHP_Konfigurationen_und_verschiedene_nebeneinander_verwenden<br />
und<br />
https://wiki.hostsharing.net/index.php?title=WWW#Einstellungen_zum_HTTP_Zugriff)<br />
<br />
<br />
Mit einem kleinen PHP-Skript lässt sich schnell prüfen, ob alles geklappt hat: Man kann eine Datei ''info.php'' mit dem folgenden Inhalt im Verzeichnis ''$HOME/doms/example.com/subs/www/'' bzw. ''$HOME/doms/example.com/subs-ssl/www/'' ablegen.<br />
<br />
<?php<br />
phpinfo();<br />
?><br />
<br />
Im Browser sollte dann durch Aufruf des URL http://www.example.com/info.php bzw. https://www.example.com/info.php die PHP-Version mit allen Informationen<br />
über das selbstgebaute PHP angezeigt werden.<br />
<br />
Achtung: ''example.com'' ist überall durch eine eigene gültige und beim User aufgeschaltete (Sub-)Domain<br />
zu ersetzen.</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=5952Drupal installieren2022-11-19T08:05:54Z<p>Dge00: /* Mit Composer */ var/drupal-8-composer-installationsverzeichnis zu var/drupal-installationsverzeichnis</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
=== Mit Composer ===<br />
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-installationsverzeichnis --no-interaction<br />
<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
rmdir htdocs-ssl<br />
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
= Mit Ansible bei HS installieren =<br />
<br />
== Technische Details ==<br />
<br />
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.<br />
<br />
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/<br />
<br />
Es wird die aktuelle Version 9 von Drupal installiert.<br />
<br />
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.<br />
<br />
== Installation ==<br />
<br />
Folgende Schritte sind im Benutzer xyz00 auszuführen:<br />
<br />
$ touch .hsadmin.properties<br />
$ chmod 600 .hsadmin.properties<br />
$ vi .hsadmin.properties<br />
<br />
Es muss in diese Datei das Passwort des Paketadministrators, also von xyz00, eingetragen werden. Das ist das gleiche Passwort, das auf https://admin.hostsharing.net funktioniert.<br />
<br />
xyz00.passWord=insertpkgadminpasswordhere<br />
<br />
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:<br />
<br />
Klonen des Repositories:<br />
<br />
$ git clone https://github.com/tpokorra/Hostsharing-Ansible-Drupal.git<br />
<br />
Dann muss die Datei inventory kopiert werden, und entsprechend angepasst werden:<br />
<br />
$ cd Hostsharing-Ansible-Drupal<br />
$ cp inventory my.inventory<br />
$ vi my.inventory<br />
<br />
In der my.inventory müssen die entsprechenden Werte eingerichtet werden.<br />
<br />
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...<br />
<br />
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.<br />
<br />
Dann kann die Installation vom lokalen Rechner aus gestartet werden:<br />
<br />
$ ansible-playbook -i my.inventory playbook-drupal.yml -k -K<br />
<br />
Es kann auch die Option -k weggelassen werden, wenn man sich über einen SSH Key mit xyz00@xyz00.hostsharing.net verbindet.<br />
<br />
== Einrichtung ==<br />
<br />
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org<br />
<br />
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.<br />
<br />
== Links ==<br />
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]<br />
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]<br />
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Ansible Playbook]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=5951Drupal installieren2022-11-19T08:05:04Z<p>Dge00: /* Drupal installieren */ manuelle Installation entfernt, nicht mehr empfohlen, alles geht mit composer, generalisiert (nicht mehr drupal-8 sondern drupal-recommended)</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
=== Mit Composer ===<br />
Siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-8-composer-installationsverzeichnis --no-interaction<br />
<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar composer create-project drupal/recommended-project var/drupal-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
rmdir htdocs-ssl<br />
ln -s var/drupal-installationsverzeichnis/web htdocs-ssl<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
= Mit Ansible bei HS installieren =<br />
<br />
== Technische Details ==<br />
<br />
Es gibt ein Ansible Skript, das die Installationsschritte für Drupal automatisiert durchführt.<br />
<br />
Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Drupal/<br />
<br />
Es wird die aktuelle Version 9 von Drupal installiert.<br />
<br />
Es wird die Installationsvariante mit Composer gewählt, weil sich damit Updates am leichtesten durchführen lassen.<br />
<br />
== Installation ==<br />
<br />
Folgende Schritte sind im Benutzer xyz00 auszuführen:<br />
<br />
$ touch .hsadmin.properties<br />
$ chmod 600 .hsadmin.properties<br />
$ vi .hsadmin.properties<br />
<br />
Es muss in diese Datei das Passwort des Paketadministrators, also von xyz00, eingetragen werden. Das ist das gleiche Passwort, das auf https://admin.hostsharing.net funktioniert.<br />
<br />
xyz00.passWord=insertpkgadminpasswordhere<br />
<br />
Folgende Schritte sind auf dem lokalen Rechner auszuführen, um Drupal mit Hilfe des Ansible Skripts in den eigenen Hostsharing Benutzer zu installieren:<br />
<br />
Klonen des Repositories:<br />
<br />
$ git clone https://github.com/tpokorra/Hostsharing-Ansible-Drupal.git<br />
<br />
Dann muss die Datei inventory kopiert werden, und entsprechend angepasst werden:<br />
<br />
$ cd Hostsharing-Ansible-Drupal<br />
$ cp inventory my.inventory<br />
$ vi my.inventory<br />
<br />
In der my.inventory müssen die entsprechenden Werte eingerichtet werden.<br />
<br />
Eine Fehlerquelle sind zu lange Namen für user, denn dann kommt die Datenbankverwaltung von hsadmin aus dem Tritt. Bei einem Namen mit 13 Zeichen treten zumindest Fehler auf...<br />
<br />
Es wird vorausgesetzt, dass auf dem lokalen Rechner Ansible installiert ist.<br />
<br />
Dann kann die Installation vom lokalen Rechner aus gestartet werden:<br />
<br />
$ ansible-playbook -i my.inventory playbook-drupal.yml -k -K<br />
<br />
Es kann auch die Option -k weggelassen werden, wenn man sich über einen SSH Key mit xyz00@xyz00.hostsharing.net verbindet.<br />
<br />
== Einrichtung ==<br />
<br />
Nach der Installation kann die Seite hier erreicht werden: https://drupal.example.org<br />
<br />
Bitte mit dem Benutzer und dem Passwort anmelden, die in der Datei my.inventory angegeben wurden.<br />
<br />
== Links ==<br />
* [https://www.drupal.org/ Englische Webseite vom Drupal Projekt]<br />
* [https://www.drupal.de/ Deutsche Webseite, bereitgestellt vom Drupal e.V.]<br />
* [https://github.com/tpokorra/Hostsharing-Ansible-Drupal Ansible Playbook für Hostsharing]<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Ansible Playbook]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00https://wiki.hostsharing.net/index.php?title=PHP&diff=5893PHP2022-10-11T07:26:09Z<p>Dge00: /* Anpassung der PHP Grundkonfiguration */ Erweitert mit Beispielpfad für php.ini (für dummies wie mich)</p>
<hr />
<div>PHP wird heute bei HS standardmäßig per FastCGI vorkonfiguriert. Dafür wird in jedem Domainverzeichnis unter fastcgi/ eine phpstub Datei angelegt und der Apache Webserver ist konfiguriert .php Dateien über diesen "Stub" mit den Rechten des Users auszuführen.<br />
<br />
Zur Wiederherstellung des originalen phpstub ist dieser zentral abgelegt als<br />
<br />
/usr/local/src/phpstub<br />
<br />
Anwender, die lediglich PHP-Dateien hochgeladen haben, brauchen ausdrücklich keine eigene php.ini.<br />
<br />
<br />
=== Anpassung der PHP Grundkonfiguration === <br />
<br />
Um die PHP Konfiguration an eigene Bedürfnisse anzupassen, legt man eine Konfigurationsdatei namens php.ini im fastcgi Verzeichnis der Domain an (für https:// entsprechend im -ssl Verzeichnis) z.B.: /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php.ini. In dieser Datei müssen nicht alle Konfigurationsoptionen von PHP definiert sein, sondern nur die, die sich gegenüber der Standard php.ini ändern sollen. Diese liegt in /etc/php/VERSION/cgi und kann dort eingesehen werden.<br />
<br />
'''Achtung:''' Kommentare nicht mit # einleiten (kann zu unerwarteten Fehlkonfigurationen führen), Kommentarzeichen ist das Semikolon ";".<br />
<br />
Häufig anzupassen sind z.B.:<br />
<br />
* die Content-Type charset= Vorgabe für den HTTP Header.<br />
<br />
* der maximal verwendbare Hauptspeicher (memory_limit).<br />
<br />
* die maximale Größe hochgeladener Dateien (post_max_size).<br />
<br />
* die aktiven Extensions.<br />
<br />
<br />
Beispiel einer php.ini: <br />
<br />
<pre><br />
------8< SCHNIPP >8------<br />
[..]<br />
memory_limit = 128M (default)<br />
post_max_size = 8M (default)<br />
upload_max_filesize = 2M (default)<br />
display_errors = Off (default)<br />
log_errors = Off (default)<br />
error_log = /home/pacs/xyz00/users/meinbenutzer/doms/meinedomain.de/fastcgi-ssl/php_errors.log<br />
<br />
[..]<br />
default_charset = "UTF-8"<br />
; (ist sonst iso-8859-1)<br />
; Der charset kann aber wiederum durch einen Funktionsaufruf<br />
; header("Content-Type: text/html; charset=iso-8859-1")<br />
; im PHP-Skript überschrieben werden (sofern output_buffering = On).<br />
------8< SCHNIPP >8------<br />
</pre><br />
<br />
'''Beachte:''' Eine geänderte php.ini Konfiguration wird mit FastCGI erst übernommen, wenn die PHP Prozesse des Users (die über längere Zeit laufen bleiben) neu gestartet werden.<br />
<br />
Die Brechstange, mit der das Neustarten der PHP Prozesse erzwungen werden kann, ist diese zu killen:<br />
<pre><br />
killall -u $USER -r php<br />
</pre><br />
$USER = ist der aktuell angemeldeten Benutzer und muss nicht durch den Benutzernamen (xyz00 oder xyz00-user) ersetzt werden. Nur die Prozesse des angemeldeten Users $USER werden gelöscht. "-r" bewirkt, dass der Ausdruck "php" als regulärer Ausdruck interpretiert wird. Intern heißen die sichtbaren Prozesse nicht "php" sondern beispielsweise "php7.2"<br />
<br />
=== PHP Sicherheit ===<br />
<br />
==== open_basedir ====<br />
<br />
Sofern der PHP Parameter open_basdir nicht gesetzt ist (Vorgabe) können (kompromittierte) php Skripte an alle Dateien des Users kommen, ohne einen extra Shellzugang installieren zu müssen und dadurch entdeckt zu werden.<br />
<br />
Die Passwortabfrage von Hsadmin bringt eine Abhilfe für die zentralen Dienste. (Sofern Du dein Passwort nicht in eine Datei schreibst und die Abfrage so wieder ausschaltest, wovon besser abzusehen ist.) Doch alle Daten auf die Du als Benutzer zugreifen kannst sind prinzipiell den PHP-Skripten ausgeliefert.<br />
<br />
Mit open_basedir wird festgelegt in welchen Verzeichnissen PHP Skripte lesen und schreiben dürfen. Geprüft wird dabei ob der zu öffnende Pfad mit dem angegebene Pfad beginnt. Es ist daher wichtig ob sich am Ende ein "/" befindet oder nicht. Ein open_basedir von /home/doms/example.org/subs/www (ohne /) erlaubt somit z.B. auch Zugriffe auf die Subdomain www2 etc.<br />
<br />
Beispielzeile für die php.ini:<br />
open_basedir = /home/doms/example.org/subs/<br />
<br />
Wenn man mehrere Subdomains hat und diese isolieren möchte, ist dies durch Aufschaltung von lokalen Subdomains auf verschiedene User möglich. (Siehe https://doc.hostsharing.net/users/administration/domain/index.html )<br />
<br />
==== Sicherheitskritische Funktionen ====<br />
<br />
Weitere Dinge die deaktiviert werden sollten, wenn sie nicht benötigt werden, was im allgemeinen der Fall ist, sind: Das öffnen von URLs als Dateien,<br />
<br />
allow_url_fopen = Off<br />
<br />
und die Ausführung von Systembefehlen.<br />
<br />
disable_functions = show_source, system, passthru, shell_exec, exec, phpinfo, popen, proc_open<br />
<br />
<br />
<br />
<br />
=== eigene PHP Konfigurationen und verschiedene nebeneinander verwenden ===<br />
<br />
Um verschiedene PHP Konfigurationen nebeneinander zu verwenden, kopierst Du den phpstub in ein Unterzeichnis von (fast)cgi(-ssl) und mappst (Einträge in der .htaccess) nach Belieben deine PHP Dateien darauf. <br />
So können beliebig viele Konfigurationen bei einer Domain nebeneinander genutzt werden.<br />
<br />
==== Beispiel muster.example.com ==== <br />
<pre><br />
mkdir ~/doms/example.com/fastcgi/muster<br />
cp ~/doms/example.com/fastcgi/phpstub ~/doms/example.com/fastcgi/muster/phpstub<br />
<br />
und wenn benötigt:<br />
vi ~/doms/example.com/fastcgi/muster/php.ini<br />
</pre><br />
<br />
Anschließend muss der Apache Webserver noch angewiesen werden auch diese bestimmte Konfiguration von PHP zu verwenden. Dazu werden der [[.htaccess]] Datei im DocumentRoot der Sub-Domain zwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilen angelegt. <br />
Im Beispiel handelt es sich um die Domain muster.example.com, also:<br />
<br />
<pre><br />
cd ~/doms/example.com/subs/muster<br />
vi .htaccess<br />
<br />
AddType application/x-httpd-phpfastcgi .php<br />
Action application/x-httpd-phpfastcgi /fastcgi-bin/muster/phpstub<br />
</pre><br />
<br />
== Vorinstallierte PHP Version wechseln ==<br />
Hostsharing bietet neben der aktuellen Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, 7.3 und 8.0 an.<br />
<br />
Um die Version zu wechseln, genügt es, den jeweiligen phpstub auszutauschen. Version 7.3 liegt unter <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.<br />
<br />
<br />
===phpstub für PHP 8.0 kopieren===<br />
<br />
<pre><br />
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi/<br />
$ cp /usr/local/src/phpstub/phpstub80 ~/doms/example.com/fastcgi-ssl/<br />
</pre><br />
<br />
===phpstub für PHP 8.0 aktivieren===<br />
<br />
Die .htaccess sollte möglichst zentral im Verzeichnisbaum abgelegt werden:<br />
~/doms/example.com/.htaccess<br />
Damit durch Anwendungs eigene .htaccess Dateien (Wordpress, Nextcloud etc.) nicht unbeabsichtigt die php Einstellungen verloren gehen.<br />
In der zentralen <code>.htaccess</code> eines Ordners genügt es, die PHP Dateizuordnung zu überschreiben:<br />
<br />
<pre><br />
AddType application/x-httpd-php80 .php<br />
Action application/x-httpd-php80 /fastcgi-bin/phpstub80<br />
</pre><br />
<br />
Damit wird für den aktuellen Ordner und alle Unterordner PHP 8.0 verwendet.<br />
<br />
Auf die gleiche Weise können auch PHP 7.1, PHP 7.2 oder PHP 7.3 aktiviert werden.<br />
<br />
== Eigene PHP Version ==<br />
Es kann auch eine eigene PHP Version im Paket installiert werden.<br />
Eine kurz Anleitung ist unter [[Eigene_PHP_Version]] beschrieben.<br />
<br />
== Eigener PHP FPM Prozess ==<br />
<br />
auf einem Managed Server kann jeder Nutzer nach belieben auch php-fpm als eigenen Prozess starten.<br />
Ein paar Notizen dazu finden sich auf der Seite [[PHP_FPM]].<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Glossar]]<br />
[[Kategorie:WWW]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Benutzer:Dge00&diff=5746Benutzer:Dge002021-12-18T09:05:56Z<p>Dge00: Die Seite wurde neu angelegt: „Hallo ich bin Daniel Germer, bin in Südhessen ansässig und betreibe seit 2017 meine Seiten bei hostsharing. Nach verschiedenen Anbietern gefällt es mir hier…“</p>
<hr />
<div>Hallo ich bin Daniel Germer, bin in Südhessen ansässig und betreibe seit 2017 meine Seiten bei hostsharing.<br />
Nach verschiedenen Anbietern gefällt es mir hier am besten, vor allem ist hostsharing mit der Struktur einer Genossenschaft und hohen ethischen Standards perfekt.<br />
Meine Seiten betreibe ich mit drupal, eine nextcloud habe ich auch hier installiert</div>Dge00https://wiki.hostsharing.net/index.php?title=Bugtracker&diff=5124Bugtracker2020-04-19T09:29:04Z<p>Dge00: /* Software zur Nutzung */</p>
<hr />
<div><br />
Ein Bugtracker für hostsharing Infrastuktur<br />
Um für die Anfragen und Veränderungen oder Probleme mit der Infrastruktur eine Ort zu bieten soll ein Bugtracker etabliert werden.<br />
<br />
Dieser benötigt folgende Funktionen:<br />
Fehlermeldungen und Funktionsanfragen<br />
== Fehlermeldungen ==<br />
* HSAdmin<br />
* Webmail<br />
* Domainverwaltung<br />
* SSL / TLS<br />
* Spam Abwehr<br />
== Feature-requests - Funktionsanfragen ==<br />
Es sollte sich möglicherweise auch aufgliedern in die verschiedenen Funktionsbereiche der Infrastruktur.<br />
<br />
== Software zur Nutzung ==<br />
Hierzu kann wohl [[Roundup]] genutzt werden, wofür bereits eine Installationsanleitung hier im Wiki vorliegt, andere Möglichkeiten wären:<br />
* BugNet http://bugnet.codeplex.com/<br />
* bugzilla https://www.bugzilla.org/download/<br />
* fossil http://fossil-scm.org/index.html/doc/trunk/www/index.wiki<br />
* mantis BT http://www.mantisbt.org/index.php<br />
* phproject http://www.phproject.org/<br />
* Redmine http://www.redmine.org/ <br />
* Request Tracker https://bestpractical.com/request-tracker<br />
* Roundup http://roundup-tracker.org/<br />
* trac https://trac.edgewall.org/ <br />
* WebIssues http://webissues.mimec.org/<br />
<br />
== siehe auch == <br />
* https://usersnap.com/de/blog/open-source-bug-tracker/ <br />
* https://blog.capterra.com/top-free-bug-tracking-software/<br />
* https://opensource.com/business/16/2/top-issue-support-and-bug-tracking-tools<br />
* https://stackify.com/top-bug-tracking-tools/<br />
* https://www.guru99.com/top-20-bug-tracking-tools.html</div>Dge00https://wiki.hostsharing.net/index.php?title=Bugtracker&diff=5123Bugtracker2020-04-19T09:20:12Z<p>Dge00: Quellen und open Source Tools</p>
<hr />
<div><br />
Ein Bugtracker für hostsharing Infrastuktur<br />
Um für die Anfragen und Veränderungen oder Probleme mit der Infrastruktur eine Ort zu bieten soll ein Bugtracker etabliert werden.<br />
<br />
Dieser benötigt folgende Funktionen:<br />
Fehlermeldungen und Funktionsanfragen<br />
== Fehlermeldungen ==<br />
* HSAdmin<br />
* Webmail<br />
* Domainverwaltung<br />
* SSL / TLS<br />
* Spam Abwehr<br />
== Feature-requests - Funktionsanfragen ==<br />
Es sollte sich möglicherweise auch aufgliedern in die verschiedenen Funktionsbereiche der Infrastruktur.<br />
<br />
== Software zur Nutzung ==<br />
Hierzu kann wohl [[Roundup]] genutzt werden, wofür bereits eine Installationsanleitung hier im Wiki vorliegt, andere Möglichkeiten wären:<br />
* BugNet http://bugnet.codeplex.com/<br />
* bugzilla https://www.bugzilla.org/download/<br />
* fossil http://fossil-scm.org/index.html/doc/trunk/www/index.wiki<br />
* mantis BT http://www.mantisbt.org/index.php<br />
* phproject http://www.phproject.org/<br />
* Redmine http://www.redmine.org/ <br />
* Request Tracker https://bestpractical.com/request-tracker<br />
* Roundup http://roundup-tracker.org/<br />
* trac https://trac.edgewall.org/ <br />
* WebIssues http://webissues.mimec.org/<br />
<br />
== siehe auch == <br />
* https://usersnap.com/de/blog/open-source-bug-tracker/ <br />
* https://blog.capterra.com/top-free-bug-tracking-software/<br />
* https://opensource.com/business/16/2/top-issue-support-and-bug-tracking-tools<br />
* https://stackify.com/top-bug-tracking-tools/<br />
* https://www.guru99.com/top-20-bug-tracking-tools.html</div>Dge00https://wiki.hostsharing.net/index.php?title=Bugtracker&diff=5122Bugtracker2020-04-19T08:30:43Z<p>Dge00: leicht</p>
<hr />
<div><br />
Ein Bugtracker für hostsharing Infrastuktur<br />
Um für die Anfragen und Veränderungen oder Probleme mit der Infrastruktur eine Ort zu bieten soll ein Bugtracker etabliert werden.<br />
Dieser benötigt folgende Funktionen:<br />
Fehlermeldungen und Funktionsanfragen<br />
== Fehlermeldungen ==<br />
* HSAdmin<br />
* Webmail<br />
* Domainverwaltung<br />
* SSL / TLS<br />
* Spam Abwehr<br />
== Feature-requests - Funktionsanfragen ==<br />
Es sollte sich möglicherweise auch aufgliedern in die verschiedenen Funktionsbereiche der Infrastruktur.</div>Dge00https://wiki.hostsharing.net/index.php?title=Bugtracker&diff=5121Bugtracker2020-04-19T08:29:33Z<p>Dge00: Korrektur Überschrift</p>
<hr />
<div>Bugtracker für hostsharing Infrastuktur<br />
Um für die Anfragen und Veränderungen oder Probleme mit der Infrastruktur eine Ort zu bieten soll ein Bugtracker etabliert werden.<br />
Dieser benötigt folgende Funktionen:<br />
== Fehlermeldungen ==<br />
* HSAdmin<br />
* Webmail<br />
* Domainverwaltung<br />
* SSL / TLS<br />
* Spam Abwehr<br />
== Feature-requests - Funktionsanfragen ==<br />
Es sollte sich möglicherweise auch aufgliedern in die verschiedenen Funktionsbereiche der Infrastruktur.</div>Dge00https://wiki.hostsharing.net/index.php?title=Bugtracker&diff=5120Bugtracker2020-04-19T08:29:05Z<p>Dge00: Erster Draft</p>
<hr />
<div>Bugtracker für hostsharing Infrastuktur<br />
Um für die Anfragen und Veränderungen oder Probleme mit der Infrastruktur eine Ort zu bieten soll ein Bugtracker etabliert werden.<br />
Dieser benötigt folgende Funktionen:<br />
== Fehlermeldungen <br />
* HSAdmin<br />
* Webmail<br />
* Domainverwaltung<br />
* SSL / TLS<br />
* Spam Abwehr<br />
== Feature-requests - Funktionsanfragen ==<br />
Es sollte sich möglicherweise auch aufgliedern in die verschiedenen Funktionsbereiche der Infrastruktur.</div>Dge00https://wiki.hostsharing.net/index.php?title=Diskussion:Nextcloud&diff=5106Diskussion:Nextcloud2020-03-19T05:04:09Z<p>Dge00: Die Seite wurde neu angelegt: „ == Umstellung auf bigint == Unter https://docs.nextcloud.com/server/17/admin_manual/configuration_database/bigint_identifiers.html steht etwas was wohl sudo b…“</p>
<hr />
<div><br />
== Umstellung auf bigint ==<br />
Unter https://docs.nextcloud.com/server/17/admin_manual/configuration_database/bigint_identifiers.html steht etwas was wohl sudo benötigt.<br />
Wie kann das eingerichtet werden?</div>Dge00https://wiki.hostsharing.net/index.php?title=Collabora_Online&diff=5069Collabora Online2019-12-13T20:18:52Z<p>Dge00: /* Vorbereitungen */ Grammatik</p>
<hr />
<div>= Collabora installieren =<br />
<br />
== Vorbereitungen ==<br />
<br />
Voraussetzungen sind folgende Punkte:<br />
<br />
1. Per Mail an service@hostsharing.net die Aktivierung der Paket Option Collabora Online beauftragen mit der Angabe des Paketkürzel xyz00 und des Benutzers xyz00-cloud unter der die Installation läuft.<br />
<br />
2. Grundlage bei Hostsharing ist die Installation der Nextcloud laut Wiki Anleitung [[Nextcloud]].<br />
<br />
3. Die APP ''Collabora Online'' erst installieren wenn der Service die Bestätigung gesendet hat, dass die Aktivierung erfolgt ist.<br />
<br />
== Collabora installieren ==<br />
<br />
Collabora ist auf allen 64 Bit hive installiert. Es muss hier nun noch die APP Collabora Online in der Nextcloud installiert werden.<br />
<br />
'''WICHTIG:''' Die Freigabe vom Service muss erst per Mail vorliegen!!<br />
<br />
1. Anmeldung als '''Admin''' in der Nextcloud Installation<br />
<br />
2. Rechts oben auf '''Profilmenü''' den Eintrag '''+APP''' auswählen<br />
[[Datei:Hs-collabora-app-install.jpg]]<br />
<br />
3. Im '''Suchfeld''' oben "collabora" eingeben<br />
[[Datei:Hs-collabora-suche.jpg]]<br />
<br />
<br />
4. Auf den Button ''Herunterladen und aktiveren'' klicken<br />
<br />
Damit ist die APP Collabora Online installiert und muss nun noch konfiguriert werden.<br />
<br />
== Collabora konfigurieren ==<br />
<br />
Rechts oben unter '''Profilmenü''' den Eintrag '''Einstellungen''' auswählen.<br />
<br />
Anschließend im linken Fensterbereich unter dem Menüpunkt '''Verwaltung'''<br />
den Eintrag '''Collabora Online''' auswählen.<br />
<br />
[[Bild:Hs-collabora-config.jpg]]<br />
<br />
Hier muss nun die PaketDomain entsprechend Eingetragen werden.<br />
Wobei '''xyz00'''.hostsharing.net durch Ihr Paket Kürzel zu ersetzten ist. <br />
Es wird kein Port eingetragen!<br />
Anschließend einmal auf den Button ''Anwenden'' klicken.<br />
[[Bild:Hs-collabora-pacdomain.jpg]]<br />
<br />
Weitere Einstellungen können individuell noch vorgenommen werden.<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=4953Drupal installieren2019-08-03T14:14:57Z<p>Dge00: /* Mit Composer */ Größe des Downloads</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
Und dann Drupal herunterladen und in den Webspace entpacken:<br />
<br />
cd doms/drupal.hs-example.de/htdocs<br />
wget -O - http://ftp.drupal.org/files/projects/drupal-8.6.7.tar.gz |tar -xz --strip 1<br />
<br />
=== Mit Composer ===<br />
Drupal mit Composer ist deutlich größer in der Installation durch Composer (148Mb vs 83Mb als Download von [https://www.drupal.org/download-latest/tar.gz] in version 8.7.5)<br />
(ggf mit aktuellem lokalen Composer, siehe https://getcomposer.org/download/ )<br />
siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-8-composer-installationsverzeichnis --no-interaction<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar create-project drupal-composer/drupal-project:8.x-dev var/drupal-8-composer-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-8-composer-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
rmdir htdocs-ssl<br />
ln -s var/drupal-8-composer-installationsverzeichnis/web htdocs-ssl<br />
<br />
Nun geht es genau wie mit der manuellen Installation weiter.<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=4944Drupal installieren2019-07-16T12:55:50Z<p>Dge00: /* Mit Composer */</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
Und dann Drupal herunterladen und in den Webspace entpacken:<br />
<br />
cd doms/drupal.hs-example.de/htdocs<br />
wget -O - http://ftp.drupal.org/files/projects/drupal-8.6.7.tar.gz |tar -xz --strip 1<br />
<br />
=== Mit Composer ===<br />
(ggf mit aktuellem lokalen Composer, siehe https://getcomposer.org/download/ )<br />
siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-8-composer-installationsverzeichnis --no-interaction<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar create-project drupal-composer/drupal-project:8.x-dev var/drupal-8-composer-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-8-composer-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
rmdir htdocs-ssl<br />
ln -s var/drupal-8-composer-installationsverzeichnis/web htdocs-ssl<br />
<br />
Nun geht es genau wie mit der manuellen Installation weiter.<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00https://wiki.hostsharing.net/index.php?title=Drupal_installieren&diff=4943Drupal installieren2019-07-16T12:54:33Z<p>Dge00: Drupal mit Composer installieren</p>
<hr />
<div>= Drupal bei HS =<br />
Überprüft auf Installation der V 8.6.7.<br />
<br />
== Vorbereitungen ==<br />
<br />
In ''hsadmin'', zum Beispiel mit ''hsscript'':<br />
<br />
''hsadmin''-Shell starten mit:<br />
<br />
hsscript -u xyz00 -i<br />
Password: ********<br />
<br />
Dann nacheinander anlegen:<br />
<br />
* Linux User als Domain-Administrator<br />
* Subdomain ''drupal.hs-example.de''<br />
* MySQL-User <br />
* MySQL Datenbank<br />
<br />
xyz00@hsadmin> user.add({set:{name:'xyz00-drupal',password:'geheim',shell:'/bin/bash',comment:'Drupal CMS'}})<br />
xyz00@hsadmin> domain.add({set:{name:'drupal.hs-example.de',user:'xyz00-drupal'}})<br />
xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_drupaluser',password:'geheim'}})<br />
xyz00@hsadmin> mysqldb.add({set:{name:'xyz00_drupaldb',owner:'xyz00_drupaluser'}})<br />
<br />
== Drupal installieren ==<br />
<br />
Anmelden als Linux-User ''xyz00-drupal'':<br />
<br />
ssh -l xyz00-drupal xyz00.hostsharing.net<br />
<br />
Und dann Drupal herunterladen und in den Webspace entpacken:<br />
<br />
cd doms/drupal.hs-example.de/htdocs<br />
wget -O - http://ftp.drupal.org/files/projects/drupal-8.6.7.tar.gz |tar -xz --strip 1<br />
<br />
=== Mit Composer ===<br />
(ggf mit aktuellem lokalen Composer, siehe https://getcomposer.org/download/ )<br />
siehe auch https://www.drupal.org/docs/develop/using-composer und insbesondere https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies<br />
cd doms/drupal.hs-example.de<br />
composer create-project drupal-composer/drupal-project:8.x-dev var/drupal-8-composer-installationsverzeichnis --no-interaction<br />
alternativ geht auch mit einer lokalen (und aktuellen Version von Composer)<br />
../lokales-Composer-Verzeichnis/composer.phar create-project drupal-composer/drupal-project:8.x-dev var/drupal-8-composer-installationsverzeichnis --no-interaction<br />
<br />
Nun entsteht in dem Ordner var/drupal-8-composer-installationsverzeichnis/web die neue Drupal Site, die dann noch in das entsprechende Verzeichnis (ich nutze nur noch htdocs-ssl) verlinken:<br />
ln -s var/drupal-8-composer-installationsverzeichnis/web/* htdocs-ssl/<br />
ln -s var/drupal-8-composer-installationsverzeichnis/web/.* htdocs-ssl/<br />
<br />
Nun geht es genau wie mit der manuellen Installation weiter.<br />
<br />
== Drupal für HS anpassen ==<br />
<br />
doms/drupal.hs-example.de/htdocs<br />
<br />
vi .htaccess<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
# RewriteBase /<br />
<br />
wird zu<br />
<br />
# If your site is running in a VirtualDocumentRoot at http://example.com/,<br />
# uncomment the following line:<br />
RewriteBase /<br />
<br />
== Drupal konfigurieren ==<br />
<br />
Im Browser auf die Seite <br />
http://drupal.hs-example.de gehen und den Anweisungen folgen.<br />
<br />
[[Datei:Drupal1.jpg]]<br />
<br />
[[Datei:Drupal2.jpg]]<br />
<br />
[[Datei:Drupal3.jpg]]<br />
<br />
[[Datei:Drupal4.jpg]]<br />
<br />
[[Datei:Drupal5.jpg]]<br />
<br />
[[Datei:Drupal6.jpg]]<br />
<br />
[[Datei:Drupal7.jpg]]<br />
<br />
== Drupal template default für HS konfigurieren ==<br />
<br />
cd sites/default/files/php/twig<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 11 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
und dann noch eine .htaccess <br />
<br />
cd ../..<br />
<br />
chmod 644 .htaccess<br />
edit .htaccess<br />
<br />
In der Zeile 2 den Eintrag "-ExecCGI" und "-Includes" löschen, mit diesem Ergebnis:<br />
<br />
Options -Indexes -MultiViews<br />
<br />
<br />
Danach die Seite im Browser neu laden.<br />
<br />
----<br />
[[Kategorie:HSDoku]]<br />
[[Kategorie:Installationsanleitungen]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Blog]]<br />
[[Kategorie:CMS]]</div>Dge00