Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
public:webhosting:container_administration [2016/08/19 11:39] – [Container basiertes Webhosting - unser Container-Hafen] jankow@datenkollektiv.netpublic:webhosting:container_administration [2019/11/28 17:25] (aktuell) – [Zugangsdaten] rasch
Zeile 1: Zeile 1:
 ====== Container basiertes Webhosting - unser Container-Hafen ====== ====== Container basiertes Webhosting - unser Container-Hafen ======
 +
 +  * [[container_admin_alt|Ältere Dokumentation auf altem Server mit Webdav-Zugang]]
  
 Mit dem "Container-Haven" bietet das Datenkollektiv ein Container-basiertes Webhosting an. Container sind eine Art der Virutalisierung, die sich gegenüber einer kompletten Virtualisierung durch deutlich bessere Performance auszeichnet und sehr wenig Ressourcen benötigt. Dies ermöglicht, eine Vielzahl von Containern parallel auf einem Server zu betreiben. Die einzelnen Container verhalten sich dabei wie eigenständige Server.  Mit dem "Container-Haven" bietet das Datenkollektiv ein Container-basiertes Webhosting an. Container sind eine Art der Virutalisierung, die sich gegenüber einer kompletten Virtualisierung durch deutlich bessere Performance auszeichnet und sehr wenig Ressourcen benötigt. Dies ermöglicht, eine Vielzahl von Containern parallel auf einem Server zu betreiben. Die einzelnen Container verhalten sich dabei wie eigenständige Server. 
Zeile 15: Zeile 17:
  
 Als Zugangsdaten sind notwendig: Als Zugangsdaten sind notwendig:
-  * URL, unter der der Container verwaltet wird - üblicherweise der Domain-Name wie z.B. example.org +  * ein Username für den Container (in der Regel "webcXXX") 
-  * ein Username für den Container (in der Regel "user") +  * ein Passwort, das bei der Einrichtung übermittelt wird. (Passwort-Änderung unter: https://ldap.dknuser.de/
-  * ein Username für den "Container-Hafen" (für das direkte ssh-Login, in der Regel der Domain-Name, in dem "." durch "_" ersetzt ist, also z.Bexample_org+  * URL, unter der der Container verwaltet wird üblicherweise der Domain-Name wie z.B. USERNAME@webc???.hosting.dknuser.de 
-  * ein Username für die Mysql-Datenbanken (in der Regel der Domain-Name, in dem "." durch "_" ersetzt ist, also z.B. example_org) +  * der Username und ein Passwort für die Mysql-Datenbanken ist identisch mit dem Usernamen des ContainersDas Passwort wird bei der Einrichtung übermittelt.
-  * ein Passwort (anfangs identisch gesetzt: User-Passwort uDatenbank-Passwort +
- +
-Für einige Zwecke (sFTP, direkter SSH-Zugriff ist ein privater Schlüssel notwendig. Der zugehörige öffentliche Schlüssel muss auf den Servern entsprechend konfiguriert werden. Zum Einrichten bitte an den [[support@datenkollektiv.net|Support]] wenden.+
  
 ===== Zugang zum Container ===== ===== Zugang zum Container =====
  
-Es gibt mehrere Möglichkeiten des Zugangs zum Container. Datei-Up- und Download lässt sich am einfachsten über Webdav vornehmen. Vollen Zugang zum Container kann über "ssh" erfolgen. Dateiupload über sFTP ist möglich - allerdings nur in Verbindung mit einem ssh-Tunnel.+Es gibt mehrere Möglichkeiten des Zugangs zum Container. Datei-Up- und Download lässt sich am einfachsten über sftp vornehmen.
  
-==== ssh Secure-Shell ====+Alle wichtigen Informationen dazu gibt es in der initialen E-Mail nach der Erstellung eines neuen Containers.
  
-Der Container selbst ist nicht direkt von außen zu erreichen, sondern nur über einen weiteren Server - unseren Containerhafen. Damit das klappt, benötigen wir einen "öffentlichen SSH-Schlüssel" von Ihnen.+===== sftp =====
  
-<WRAP center round important 60%> +Der SFTP-Zugang ist:
-Damit das Login klappt, muss "ssh Agent Forwarding" aktiviert sein. Entweder als Option auf der Kommandozeile mit ''-A'' bei OpenSSH oder als Konfigurationsparameter in der ssh_config. Das kann z.B. bei OpenSSh erreicht werden, in dem entweder in die globale ''/etc/ssh_config'' oder die private ''~/.ssh/config'' Konfiguration folgendes eingefügt wird: +
-<code> +
-host * +
-    ForwardAgent yes +
-</code> +
-</WRAP>+
  
 +  USERNAME@USERNAME.hosting.dknuser.de
  
-**Direkter Zugriff auf den Container**+==== Dateirechte ====
  
-Falls entsprechend konfiguriertkann der Container direkt mit +Standardmäßig haben alle Dateiendie per sftp hochgeladen werden folgende Rechte: 
 +  * Benutzer: der Benutzer, der die Dateien hochlädt 
 +  * Gruppe: www-data 
 +Wenn der Webserver selbst auch in die Verzeichnisse schreiben können soll oder Dateien ändern soll (z.B. nötig, wenn ein CMS wie wordpress Dateien von einem Upload speichern soll, Plugins installieren können soll oder ein Update aus der Weboberfläche heraus passieren soll, müssen die Verzeichnisse und Dateien auch für die Gruppe ''www-data'' schreibbar sein.
  
-  ssh -A username@container.datenkollektiv.net+Das lässt sich mit einem  
 +  chmod 664 (für Dateien) 
 +  chmod 775 (für Verzeichnisse) 
 +mit einem sftp-client erledigen.
  
-erreicht werden.+Wenn es damit Schwierigkeiten gibt, bitte an den Support wenden.
  
-<WRAP center round important 60%> +===== Datenbanken konfigurieren =====
-Bitte beachten: Über diesen Weg ist nur ssh möglich. Kopieren ist weder über sFTP noch über scp oder sshfs möglich. Dies liegt an der Konfiguration auf unseren Servern, durch die der Zugang nur über einen "SSH-Proxy" möglich ist. +
-</WRAP>+
  
-**Zugriff über einen SSH-Tunnel**+Die Datenbanken sind unter folgender URL zu erreichen:
  
-Um auch scp oder sFTP zu ermöglichen, muss ein SSH-Tunnel gelegt werdenDies lässt sich auf Linux-Systemen einfach mit+  * https://sqladmin.dknuser.de/phpmyadmin/
  
-  ssh -L 2222:test-001:22 username@container.datenkollektiv.net+Das Login ist zweistufig. Aus Sicherheitsgründen ist ein ht-Passwort vorgeschaltet, Usernamen und Passwort sind identisch mit denen des Zugangs (sftp-User/Passwort)
  
-Der Server ist dann unter ''user@localhost'' auf Port 2222 zu erreichen. Also z.B.:+Login mit Datenbank-Username und Passwort. Dort können beliebige Datenbanken erstellt werden, deren Namen mit dem Usernamen gefolgt von einem "_" beginnen müssen. Also z.B. 
 +  USERNAME_wordpress
  
-  scp -P 2222 file user@localhost+Als Datenbank-Server muss in den eigenen Instanzen dann folgendes eingetragen werden:
  
-==== Webdav ====+  sql0.datenkollektiv.net
  
-Ausgewählte Verzeichnisse des Containers sind über Webdav zu erreichen. Die Webdav-Adresse lautet dabei in der Regel:+===== Wordpress =====
  
-  https://webdav.example.org/+In den Containern ist evtleine Wordpress-Instanz vorinstalliert. Diese Wordpress-Instanz kommt aus den Debian-Repositories. Es ist immer etwas älter als das aktuelle Release. Dafür ist es gut ins System integriert - und bekommt über Debian Sicherheitsupdates - allerdings nicht immer sofort.
  
-Die Zugangsdaten lauten: +Das Daten-Verzeichnis für diese Installation, auf das per sftp zugegriffen werden kann liegt direkt unter ''/wordpress/wp-content/''.
-  * Loginname ist immer: ''user'' +
-  * Passwort ist das nach dem Anlegen übermittelte+
  
-Der Zugriff erfolgt dabei auf das Verzeichnis ''/srv'' auf dem Container.+===== Eigenes Wordpress installieren =====
  
-<WRAP center round tip 60%> +Alternativ lässt sich aber auch leicht ein eigenes Worpress im Webroot installieren. Das SFTP-Verzeichnis ist dann ''/www/'' - dort kann dann z.Bein Verzeichnis ''wordpress'' angelegt werden.
-Achtung: Bei Webdav kann es Probleme mit Leerzeichen und Sonderzeichen in Dateinamen gebenDiese gilt es in jedem Fall zu vermeidenInsbesondere Dateien mit Leerzeichen können nicht angelegt werden. Leider ist das bei einigen Dateimanagern die Standard-Einstellung ("Neue Datei"). In diesem Fall hilft, eine Datei lokal anzulegen und zu kopieren. +
-</WRAP>+
  
 +Für diese Wordpress-Instanz ist dann entsprechend dieses Verzeichnis zuständig - und nicht das der systemweiten Installation (siehe oben), z.B.:
 +  /www/wordpress/wp-content
  
-Andere Verzeichnisse können über Symlinks erreicht werdenPer SSH-Zugriff können auf diese Weise beliebige Verzeichnisse per Webdav verfügbar gemacht werden. +Bei einer selbst installierten Wordpress-Instanz im Webroot muss ggfdie Webserver-Konfigurtion angepasst werden, die sich unter 
 +  /nginx/sites-user 
 +befindet.
  
-===== Dateien hochladen =====+Siehe auch unten: [[#Webserver konfigurieren]]
  
-Am einfachsten funktioniert das per WebdavFür alle Plattformen gibt es dazu Webdav-kompatible DateibrowserUnter Linux-Desktops funktionert das z.B. mit der Funktion "Mit Server verbinden".+Die Zeile  
 +  server_name webc08.hosting.dknuser.de; 
 +muss an den tatsächlichen Seitennamen angepasst werden, also z.B.
 +  server_name example.org;
  
-Auf diese Weise können Dateien kopiert oder bearbeitete werden als ob sie auf dem lokalen Rechner liegen würdenNeben der verbesserten Sicherheit gegenüber "ftp" ist dies auch intuitiver und einfacher.+Da der Webserver im Container hinter einem Webproxy liegt, muss ggfin der Wordpress-Config 
 +  wp-config.php
  
-===== Datenbanken konfigurieren =====+folgendes vor der Zeile 
 +  require_once(ABSPATH . 'wp-settings.php'); 
 +hinzugefügt werden:
  
-Die Datenbanken sind unter folgender URL zu erreichen:+<code>
  
-  https://mysql.datenkollektiv.net/dknmysqladmin/+/** 
 +  * Handle SSL reverse proxy 
 +**/ 
 +if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'
 +            $_SERVER['HTTPS']='on';
  
-Login mit Datenbank-Username und PasswortDort können beliebige Datenbanken erstellt werden, deren Namen mit dem Usernamen gefolgt von einem "_" beginnen müssenAlso z.B. +if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { 
-  example_org_wordpress+            $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST']; 
 +
 +</code> 
 +  * vglauch: https://www.variantweb.net/blog/wordpress-behind-an-nginx-ssl-reverse-proxy/
  
-===== Wordpress installieren =====+Sinnvoll ist es auch Wordpress so zu konfigurieren, dass die Instanz selbst Dateien hochladen kann - sonst klappt z.B. das automatische Installieren von Plugins nicht. Dazu bedarf es folgender Zeile in der wp-config.php (wiederum vor der letzten Zeile ''require_once(ABSPATH . 'wp-settings.php');'':
  
-In den Containern ist eine Wordpress-Instanz vorinstalliert. Sollte diese noch nicht initialisiert seinso kann das über einen SSH-Zugang erfolgen. Im Home-Verzeichnis findet sich eine README Datei, in denen die Befehle stehen, die ausgeführt werden müssen, um Datenbank und Wordpress Instanz zu konfigurieren.+  define('FS_METHOD','direct');
  
 ===== Eigene html-Seiten / Php-Skripte ===== ===== Eigene html-Seiten / Php-Skripte =====
  
-Der Webroot liegt unter ''/var/www/html/'' - und ist per webdav zugänglich. Alle Dateien und Skripte können dort hochgeladen werden.+Der Webroot liegt unter ''/www/html/'' - und ist per sftp zugänglich. Alle Dateien und Skripte können dort hochgeladen werden.
  
-===== E-Mail-versand ermöglichen =====+===== Webserver konfigurieren =====
  
-Wir erlauben per Default keinen unauthentifizierten E-Mail-Versand aus den Containern mit dem normalen Unix-Mail-KommandoErstens würde das bedeuten, dass falsch Konfigurierte Server schnell zu Spam-Schleudern würden und außerdem könnten damit E-Mails mit falschen Absendern etcverschickt werdenStattdessen kann ein E-Mail Account konfiguriert werden, über den alle E-Mails aus den Containern verschickt werden. Das ist auch die zuverlässigste Methode, bei der es seltener dazu kommt, dass andere Mailserver die Mails als Spam abweisen, weil der Hostname oder der E-Mail-Absender nicht bekannt ist.+Fortgeschrittene User_innen können auch die Webserver-Konfiguration selbst verändern. Dazu sind Kenntnisse in der Konfiguration des Nginx-Webservers nötigAußerdem muss beachtet werden, dass der Webserver hinter einem Webproxy liegt - und z.Bnicht auf alle Header-Variablen direkt zugegriffen werden kannAußerdem geschieht die Verbindung zum Webproxy grundsätzlich über Port 80 und http. Sämtliche Konfiguration von Zertifikaten geschieht auf dem Proxy-Server durch die Administratoren des datenkollektiv.
  
-Dafür ist innerhalb der Container das Programm ssmtp installiert. Dieses muss noch konfiguriert werden, das lässt sich ebenfalls über webdav vornehmen, die Konfigurationsdatei sind unter /etc/ssmtp/* verlinkt.+Der Basis-Webroot-Pfad für das Verzeichnis ''www'' ist:
  
-Zur Konfiguration von ssmtp siehe auch z.B.: https://wiki.archlinux.org/index.php/SSMTP+  /var/www/
  
-**Beispielkonfiguration:**+Um Änderungen am Webserver wirksam zu machen, muss dieser neu gestartet werden. Dazu bitte in der Datei 
 +  /www/nginx_reload.txt 
 +Die Werte entsprechend setzen: 
 +  reload=0 
 +  restart=1
  
-Account an den alle System E-Mails gehen sollen: your_receiving_account@notraces.net +Nach einer Minute wird der Webserver automatisch neu gestartet (die Werte in der ngnix_reload.txt sind dann wieder zurück auf ''0'' gesetzt).
-Account über den die E-Mails verschickt werden: youroutgoingaccount@notraces.net (username/password als AuthUser/AuthPass eintragen) +
-Mailserver, auf dem der Account existiert, über den die E-Mails verschickt werden mit Port: mail.datenkollektiv.net:587+
  
-Per Webdav die Datei ''/etc/ssmtp/ssmtp.conf'' öffnen und editieren:+Beispiele:
  
-<code+==== Eigene Wordpress-Installation ==== 
-# +<file text wordpress.conf
-Config file for sSMTP sendmail +## http://wiki.nginx.org/WordPress 
-# +server { 
-# The person who gets all mail for userids < 1000 +    listen  80; 
-# Make this empty to disable rewriting. +    listen [::]:80;
-root=your_receiving_account@notraces.net+
  
-# The place where the mail goesThe actual machine name is required no +    server_name example.org; 
-# MX records are consulted. Commonly mailhosts are named mail.domain.com +    root                         /var/www/wordpress; 
-mailhub=mail.datenkollektiv.net:587+    index                        index.php;
  
-# Where will the mail seem to come from? +    location /favicon.ico { 
-# rewriteDomain=example.org+        log_not_found            off; 
 +        access_log               off; 
 +    }
  
-# The full hostname (the container-default-hostname) +    location /robots.txt { 
-hostname=your.container.hostname+        allow                    all; 
 +        log_not_found            off; 
 +        access_log               off; 
 +    }
  
-# Use SSL/TLS before starting negotiation +    location { 
-UseTLS=Yes +        # This is cool because no php is touched for static content. 
-UseSTARTTLS=Yes+        # include the "?$args" part so non-default permalinks doesn't break when using query string 
 +        try_files                $uri $uri/ /index.php?$args; 
 +    }
  
-# Username/Password # das muss mit dem konfigurierten Account in revaliases korrespondieren+    location ~ \.php$ { 
-AuthUser=USERNAME +        include                  /etc/nginx/fastcgi_params; 
-AuthPass=VERY-SECRET_PASSWORD +        fastcgi_param            SCRIPT_FILENAME         $request_filename; 
- +        fastcgi_index            index.php; 
-# Are users allowed to set their own From: address? +        fastcgi_intercept_errors on; 
-# YES - Allow the user to specify their own Fromaddress +        fastcgi_pass             unix:/var/run/php7.0-fpm-www-data.sock;
-# NO - Use the system generated From: address +
-FromLineOverride=NO +
-</code> +
- +
-Jetzt muss noch die Datei ''/etc/ssmtp/revaliases'' konfiguriert werdenIn ihr wird jedem lokalen Nutzer ein Mailaccount zugeordnet. Wichtig ist dabei neben root auch der Nutzer www-data da über ihn normalerweise Mails vom Webserver verschickt werden. +
- +
-<code> +
-# sSMTP aliases +
-+
-# Format:       local_account:outgoing_address:mailhub +
-+
-# Example: root:your_login@your.domain:mailhub.your.domain[:port] +
-# where [:port] is an optional port number that defaults to 25. +
- +
-root:youroutgoingaccount@notraces.net +
-www-data:youroutgoingaccount@notraces.net +
-</code> +
- +
-===== Webserver konfigurieren =====+
  
-Fortgeschrittene User_innen können über einen SSH-Zugriff auch die Webserver-Konfiguration selbst verändern. Dazu sind Kenntnisse in der Konfiguration des Nginx-Webservers nötig. Außerdem muss beachtet werden, dass der Webserver hinter einem Webproxy liegt - und z.B. nicht auf alle Header-Variablen direkt zugegriffen werden kann. Außerdem geschieht die Verbindung zum Webproxy grundsätzlich über Port 80 und http. Sämtliche Konfiguration von Zertifikaten geschieht auf dem Proxy-Server durch die Administratoren des datenkollektiv.+    }
  
-Der Default-User hat die Rechte, die Dateien unter /etc/nginx/sites-available und /etc/nginx/sites-enabled/ zu bearbeiten und per+    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
 +        expires                  max; 
 +        log_not_found            off; 
 +    } 
 +
 +</file>
  
-  sudo service nginx restart +==== Statische Seite unter /www/html/ ====
-oder +
-  sudo service nginx reload+
  
-den Webserver neu zu starten.