====== Installation auf einem Webserver ======

Dieses Kapitel beschreibt die Installation von SoSci Survey auf einem eigenen Webserver.

Falls Sie eine bestehende Installation von SoSci Survey aktualisieren möchten, lesen Sie bitte [[update|Update der Installation]].

**Hinweis:** Dieses Kapitel ist __nicht__ relevant, wenn Sie SoSci Survey auf einem bestehenden Befragungsserver nutzen möchten (z.B. [[https://www.soscisurvey.de| www.soscisurvey.de]]). Dort können Sie ohne Installation direkt ein Benutzerkonto und Befragungsprojekt registrieren ([[:de:start|Übersicht]]).

**Hinweis:** SoSci Survey steht __nicht__ öffentlich zum Download bereit. Unternehmen können Serverlizenzen für den Betrieb eines eigenen Befragungsservers erwerben ([[https://www.soscisurvey.de/index.php?page=pricing|Preise und Gebühren]]). Wissenschaftliche Institutionen erhalten auf Anfrage eine kostenlose [[https://www.soscisurvey.de/index.php?page=edu-licence|Hochschullizenz]].

===== Systemanforderungen =====

Für die Installation von SoSci Survey benötigen Sie einen funktionierenden Webserver mit PHP- und Datenbank-Unterstützung. Die Installation von SoSci Survey setzt folgende Software voraus:

  * Webserver (i.d.R. Apache oder IIS) oder Webspace (s. unten)
  * PHP ab Version 5.5.0
  * MySQL-Datenbank ab Version 5.5.3

Für den optimalen Betrieb empfohlen:

  * Möglichkeit zur zeitgesteuerten Ausführung von Skripten (Cron-Jobs)
  * Betrieb von PHP ohne Einschränkungen (nicht im Safe-Mode)

Die Aufgabe des Webservers ist es, Inhalte vom Server im Internet/Intranet bereitzustellen. Damit dies funktioniert, müssen Webserver und ggf. Firewall korrekt konfiguriert sein. Bitte stellen Sie sicher, dass der Webserver via HTTP-/HTTPS-Protokoll erreichbar ist.

**Tipp:** Sofern Sie noch keinen Webserver haben und einen lokalen Server unter Windows einrichten möchten, spart das Installationspaket [[http://www.apachefriends.org/de/xampp.html| xampp]] der Apache Friends viel Arbeit. Es beinhaltet u.a. einen fertig konfigurierten Apache Webserver und MySQL.

**Notiz:** Die meisten günstigen Webspace-Angebote der Hoster sind sog. Shared Hosting. Dabei laufen auf einem Webserver hunderte oder tausende Internetangebote. Dieser Webspace wird schon zu Preisen von unter 2 EUR pro Monat angeboten. Damit sich die Angebote auf so einem Server nicht in die Quere kommen, werden die Funktionen aber oftmals ein wenig eingeschränkte (z.B. läuft PHP im sog. Safe Mode). Im Gegenzug muss man sich um die Installation und Einrichtung des Webservers beim Shared Hosting nicht weiter kümmern.

===== Vorbereitung =====

Folgende Software ist für die Installation hilfreich bzw. erforderlich:

  * Falls der Server nicht auf dem lokalen Computer läuft, benötigen Sie ein FTP-Programm zum Übertragen von Dateien auf den Server, z.B. [[http://filezilla-project.org/|FileZilla]].
  * Für die Wartung der Datenbank ist ein Frontend hilfreich, z.B. [[http://www.heidisql.com/|HeidiSQL]].
  * Sofern noch nicht geschehen, laden Sie sich das aktuelle Installationspaket für SoSci Survey im [[https://www.soscisurvey.de/download/|Download-Portal]] herunter. Für den Download benötigen Sie Ihre Lizenzdaten (Kennwort).

Falls Sie nicht eingehend mit der Rechteverwaltung auf Webservern vertraut sind, lesen Sie bitte [[users|Prozesse und Benutzer auf einem Webserver]].

===== Server vorbereiten =====

Damit der Server korrekt mit SoSci Survey arbeitet, müssen Sie ein Verzeichnis für SoSci Survey anlegen und u.U. weitere Anpassungen vornehmen.

  * [[prepare1|Vorbereitung des Servers I]]
  * [[prepare2apache|Vorbereitung des Servers II (Apache)]]
  * [[prepare2iis|Vorbereitung des Servers II (Microsoft IIS)]]

===== Datenbank konfigurieren =====

Damit SoSci Survey auf die Datenbank zugreifen kann, benötigen Sie Benutzername und Kennwort für die Datenbank.

**Wichtig:** Ein Datenbank-Nutzer speziell für SoSci Survey erhöht die Sicherheit des Servers gegen Angriffe. Daher wird dringend empfohlen, eine eigene Datenbank und einen eigenen Benutzer für SoSci Survey einzurichten.

Falls Sie für den Zugriff auf die Datenbank entgegen der Empfehlung das Benutzerkonto des Datenbank-Administrators verwenden (z.B. "root"), kann SoSci Survey selbstständig eine Datenbank anlegen -- Sie können diesen Abschnitt dann überspringen.

  * Legen Sie auf dem Datenbankserver eine Datenbank für SoSci Survey an. SoSci Survey kann alternativ auch in einer bestehenden Datenbank installiert werden (falls z.B. nur eine Datenbank zur Verfügung steht). **Wichtig:** Der Name der Datenbank darf nur Kleinbuchstaben (und in MySQL erlaubte Zeichen) enthalten!
  * Legen Sie auf dem Datenbankserver ggf. einen neuen Nutzer für SoSci Survey an, der alle Rechte für die SoSci Survey-Datenbank besitzt (Tabellen anlegen, löschen, ändern, etc.), aber keine Rechte für andere Datenbanken. Dieser Nutzer sollte sich __nur__ vom Webserver aus (normalerweise ist das "localhost") in der Datenbank einloggen dürfen.

===== SoSci Survey auf den Webserver kopieren =====

Entpacken Sie das SoSci Survey Installationspaket und kopieren Sie die Dateien in das Verzeichnis, das Sie auf dem Server dafür vorgesehen haben.

Die folgenden Beispiele gehen davon aus, dass Sie SoSci Survey auf dem Server //%%www.domain.tld%%// im Unterverzeichnis bzw. Alias ///sosci//  installieren. Die URL des Servers lautete entsprechend //%%http://www.domain.tld/sosci/%%//. Bitte ersetzen Sie die Domain jeweils durch die korrekte Domain und das Verzeichnis durch Ihr Installationsverzeichnis. Wenn Sie z.B. auf den lokalen Computer zugreifen lautet die korrekte URL etwa //%%http://127.0.0.1/sosci/%%// (auf dem lokalen Computer wird i.d.R. eine IP-Adresse anstatt des Domain-Namens verwendet).

Testen Sie zunächst, ob Sie SoSci Survey über das Intranet bzw. Internet erreichen. Rufen Sie dafür die URL //%%http://www.domain.tld/sosci/admin/-reach.php%%// in Ihrem Internetbrowser auf. Der Bindestrich (-) ist wichtig. Wenn der Webserver korrekt erreichbar ist, steht im Browserfenster nun "reach".

Nachfolgend sind einige häufige Probleme geschildert. Bitte lesen Sie ggf. auch nochmal die Anleitung [[prepare2apache|Vorbereitung des Servers II (Apache)]] bzw. [[prepare2iis|Vorbereitung des Servers II (Microsoft IIS)]].

  * Falls der Browser lange lädt und anschließend eine leere Seite oder einen Timeout anzeigt, wurde der Webserver entweder noch nicht gestartet, der Domainname stimmt nicht (beachten Sie, dass neue Domains erst nach einigen Stunden erreichbar sind) oder der Server ist nicht erreichbar (z.B. weil die Firewall die Verbindung blockiert).
  * Falls Sie eine Fehlermeldung "404 not found" (oder ähnlich) erhalten, stimmt das angegebene Verzeichnis nicht oder das Installationsverzeichnis ist nicht im Pfad für Webdokumente bzw. es wurde kein Alias definiert. Überprüfen Sie zur Sicherheit auch noch einmal, ob die Domain/IP-Adresse korrekt geschrieben wurde.
  * Falls Sie eine Fehlermeldung "permission denied" (oder ähnlich) erhalten, ist das Verzeichnis nicht für den Zugriff aus dem Internet freigegeben. Hier hilft die Dokumentation des Webservers weiter.
  * Falls Sie HTML-Code sehen, liefert Ihr Webserver die Datei als Textdatei und nicht als HTML aus. In diesem Fall müssen die MIME-Einstellungen des Webservers für PHP-Dateien korrigiert werden.

Testen Sie nun, ob PHP-Skripte korrekt verarbeitet werden. Rufen Sie dazu in ihrem Internetbrowser die URL //%%http://www.domain.tld/sosci/admin/-php.php%%// auf. Nun sollte in Ihrem Browser "php" erscheinen.

  * Falls "failed" oder weiterer Code erscheint, werden PHP-Dateien noch nicht an den PHP-Interpreter weitergereicht, sondern vom Webserver direkt ausgeliefert. In diesem Fall muss der Webserver korrekt konfiguriert werden.

===== Zugriffsrechte =====

Meist darf der Webserver Dateien auf der Festplatte nur lesen. Daher müssen Sie für einige Verzeichnisse manuell Schreibrechte vergeben. Die Einrichtung der Schreibrechte variiert je nach Server:

  * Wenn Sie via FTP auf den Server zugreifen: [[permissions_ftp|Schreibrechte (FTP)]]
  * Wenn Sie einen Linux-Server verwenden: [[permissions_linux|Schreibrechte (Linux)]]
  * Wenn Sie einen Windows-Server verwenden: [[permissions_win|Schreibrechte (Windows)]]

Bitte erteilen Sie dem Webserver (also dem Betriebssystem-Benutzer, mit dessen Rechten der Webserver agiert) Schreibrechte für folgende Verzeichnisse:

  * Das Installationsverzeichnis, in welches sie SoSci Survey kopiert haben. Dies ist notwendig, weil für jedes neue Befragungsprojekt ein eigenes Unterverzeichnisse angelegt wird. Setzen Sie die Schreibrechte ausschließlich für das Installationsverzeichnis und __nicht__ für die enthaltenen Dateien und Verzeichnisse.
  * Alle Dateien und Verzeichnisse im Unterverzeichnis //system//, falls dieses bereits vorhanden ist. Hier wird die Konfiguration gespeichert und Logfiles sowie temporäre Dateien abgelegt. **Hinweis:** Das Verzeichnis //system// wird erst durch die Installationsroutine erstellt -- wenn der Webserver korrekte Schreibrechte für das übergeordnete Verzeichnis hat, werden die Berechtigungen dabei automatisch gesetzt.

Auf einige Verzeichnisse muss der Webserver zugreifen, aber Webserver-Benutzer (Internet-Surfer) dürfen keinen Zugriff erhalten. Dies muss durch eine entsprechende Konfiguration des Webservers sichergestellt werden.

Das Installationspaket enthält einige Dateien mit dem Namen .htaccess -- diese Dateien regeln u.a. die Zugriffsrechte auf einem standardmäßig konfigurierten Apache-Webserver die Zugriffsrechte. Testen Sie die korrekte Funktion, indem Sie die URLs //%%http://www.domain.tld/sosci/inc/-reach.php%%// und //%%http://www.domain.tld/sosci/system/-reach.php%%// aufrufen.

  * Wenn Sie ein "permission denied" (oder ähnlich) erhalten, ist alles korrekt konfiguriert.
  * Wenn Sie auf die Dateien zugreifen können und einen Apache-Server verwenden, wurde die Konfiguration via .htaccess vermutlich deaktiviert. In diesem Fall müssen Sie den Zugriff in der Apache-Konfiguration (z.B. ///etc/apache2/httpd.conf// oder //apache/conf/httpd.conf//) mit einer Directory-Direktive unterbinden. Dabei müssen Sie das Installationsverzeichnis plus ///inc// bzw. ///system// angeben, z.B.

<code>
<Directory /var/www/sosci/inc/>
  Order allow,deny
  deny from all
</Directory>
<Directory /var/www/sosci/system/>
  Order allow,deny
  deny from all
</Directory>
</code>

  * Wenn Sie den IIS 7 einsetzen:\\ (Das genauer Vorgehen Schritt für Schritt wird auf [[http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering|IIS: Request Filtering]] beschrieben)
    * Wählen Sie //IIS Request Filtering//
    * Wählen Sie den Karteireiter //URL//
    * Klicken Sie auf //Deny Sequence//
    * Geben Sie im PopUp "/inc" ein und wiederholen Sie das Procedere für "/system"
  * Wenn Sie einen älteren IIS verwenden:
    * Öffnen Sie das Konfigurationstool (//configuration tool//) via Start -> Settings -> Control Panel -> Administrative Tools -> Internet Information Services
    * Navigieren Sie zum Installationsverzeichnis und dort zu ///inc//: Local Computer -> Web Sites -> Default Web Site -> Installationsverzeichnis -> inc
    * Lassen Sie sich mit einem Rechtsklick die Einstellungen für das Verzeichnis anzeigen: Properties -> Directory Security -> IP address and domain name restrictions -> Edit
    * Wählen Sie "By default, all computers will be: Denied access"
    * Wiederholen Sie die letzten beiden Schritte für ///system//

===== PHP-Einstellungen =====

Die Installations-Routine (s. unten) überprüft die PHP-Einstellungen und warnt bei möglichen Problemem. Eine Einstellung, die meist geändert werden muss, betrifft die Dateigrößen:

  * Standardmäßig akzeptiert PHP beim Hochladen von Dateien in einem Formular nur Dateien bis 2 MB. Soll SoSci Survey auch das Hochladen von Mediendateien unterstützen, ist das zu wenig.
    * Stellen Sie daher für den Wert ''upload_max_filesize'' in der Datei //php.ini// den Wert ''32M'' ein.
    * Falls die Variable ''post_max_size'' einen kleineren Wert hat, tragen Sie auch hier ''32M'' ein. Letzteres vermeidet zudem Probleme mit sehr umfangreichen Fragebögen (z.B. viel HTML- oder PHP-Code).
    * Sollte für die Einstellung ''memory_limit'' ein Wert unter ''32M'' eingestellt sein, muss auch dieser angehoben werden, damit das Hochladen von großen Dateien korrekt funktioniert. Um beim Upload wirklich genau an die obere Grenze von 32 MB zu kommen, muss dieser Wert sogar noch geringfügig höher liegen (z.B. 33M), weil oFb selbst auch etwas Speicher benötigt.
  * Wenn in einer Befragung viele Dateien (z.B. Bilder) hochgeladen werden sollen, ist die Übertragung aller Bilder in einem Arbeitsschritt sinnvoll. Wie viele Dateien zugleich übertragen werden, regel die Einstellung ''max_file_uploads''. Die Standardkonfiguration mit 20 Bildern ist u.U. etwas knapp bemessen und kann z.B. auf 50 oder 100 erhöht werden.

Die anderen PHP-Einstellungen sind bei einer Standard-Installation bereits für SoSci Survey geeignet. Nachfolgend sind die nötigen Änderungen beschrieben, falls die Installationsroutine Alarm schlägt.

  * Der Safe Mode von PHP sollte deaktiviert sein, damit Skripte nicht nach 30 Sekunden abgebrochen werden.
    * Die maximale Laufzeit für PHP-Script wird durch die PHP-Einstellung "max_execution_time" eingeschränkt. Allerdings ist es beim Herunterladen großer Datensätze oder bei der Durchführung der Server-Wartung notwendig, dass das Script diese Beschränkung aufheben kann. Dies ist dem Skript nur möglich, wenn PHP nicht im "Safe Mode" läuft.
    * Zur Deaktivierung des Safe Mode suchen Sie in der PHP.INI den Eintrag **safe_mode** und tragen den Wert **off** ein.
    * Es ist __nicht__ sinnvoll, die Einstellung für **max_execution_time** in der PHP.INI zu ändern. Der Standardwert von 30 Sekunden sorgt dafür, dass fehlerhaft programmierte Fragebögen (z.B. mit einer Endlosschleife) abgebrochen werden.
  * SoSci Survey erfordert für den korrekten Betrieb eine Reihe von PHP-Modulen.
    * Benötigt werden: `mysql`, `mbstring`, `zip`, `gd`, `curl` und unter PHP 5 evtl. `pcre` und `zlib`
    * Unter Linux werden diese Bibliotheken über entsprechende Pakete installiert, z.B. mittels `sudo apt-get install php-mysql php-mbstring php-zip php-gd php-curl`.
    * Unter Windows (z.B. XAMPP) lässt sich eine Bibliothek einfach aktivieren, indem in der //PHP.INI// das Semikolon vor der entsprechenden ''extension''-Zeile entfernt wird. Anschließend muss der Webserver neu gestartet werden.
    * Nach der Aktivierung/Ergänzung von Modulen ist u.U. ein Neustart des Webservers notwendig, unter Debian-Linux etwa mittels ''/etc/init.d/apache2 restart''.

===== MySQL-Einstellungen =====

Eine MySQL Standard-Installation ist für den Betrieb von SoSci Survey normalerweise gut geeignet. Werfen Sie dennoch einen Blick auf folgende Einstellungen. Eine Einstellung können Sie mit dem SQL-Befehl ''%%SHOW VARIABLES LIKE "max_user_connections"%%'' abfragen, wobei der letzte Teil natürlich durch die relevante Variable ersetzt wird.

  * MySQL sollte ausreichend Verbindungen zur Datenbank erlauben. Ist die maximale Anzahl erlaubter Verbindungen pro Nutzer ''max_user_connections'' zu gering (z.B. 16 oder weniger), wird dadurch u.U. die Anzahl der gleichzeitigen Befragungsteilnehmer eingeschränkt.
  * Bei Shared Hosting Angeboten sollte man das Verhältnis der Einstellungen für ''max_user_connections'' und ''max_connections'' kontrollieren: Falls es der Hoster besonders gut meint und beide Werte auf denselben hohen Wert (z.B. 512) einstellt, so kann dadurch das Problem einer Datenbank-Überlastung auftreten -- und zwar durch einen anderen Nutzer auf dem Server, der alle Verbindungen belegt (z.B. durch ein fehlerhaftes Script).

===== Initialisierung =====

  * Rufen Sie das SoSci Survey Verzeichnis im Browser auf -- und zwar via HTTP bzw. HTTPS: (//%%http://www.domain.tld/sosci/%%//). Die URL setzt sich aus Domain und Verzeichnis zusammen.
  * Sie sollten nun einen Hinweis sehen, dass eine Installation erforderlich ist -- folgen Sie dem Link.
    * **Hinweis:** Die Installation (//admin/install.php//) können Sie alternativ direkt aufrufen (//%%http://www.domain.tld/sosci/admin/install.php%%//).
    * **Hinweis:** Beim Aufruf oder im Verlauf der Installation kann es zu längeren Wartezeiten kommen (bis ca. 2 Minuten). Die Installation testet dann die Datenbank- und Server-Konfiguration.
  * Die Installationsroutine möchte von Ihnen nun die Zugangsdaten für den Datenbankserver (Datenbank-Benutzer) sowie einige weitere Angaben wissen. Bitte nehmen Sie auch die Hinweise der Installationsroutine auf mögliche Probleme ernst.
    * **Hinweis:** Sie können alle Einstellungen später ändern bzw. anpassen.
    * **Hinweis:** Falls Sie nicht möchten, dass Unbekannte ein Befragungsprojekt auf Ihrem Server einrichten, sollten Sie in den Einstellungen ein //Anmeldepasswort// eingeben.
    * **Hinweis:** Sollte nach der Angabe des Datenbank-Server lange nichts passieren und/oder eine leere Seite erscheinen, stimmt vermutlich die Adresse des Datenbankservers nicht. Windows Server akzeptiert manchmal den Eintrag "localhost" __nicht__ und erwartet stattdessen die IP-Adresse //127.0.0.1//. Testen Sie die Zugangsdaten ggf. mit einen Tool wie [[http://www.heidisql.com|HeidiSQL]].

===== Abschluss der Installation =====

Nach erfolgreicher Installation können Sie sich als Administrator anmelden. Sie sollten umgehend ein Passwort festlegen:

  * Melden Sie sich im Administrator-Login "admin" an
  * Nach dem Login geben Sie bitte zunächst eine E-Mail-Adresse für das Administratorkonto an, unter **Benutzerkonto** -> **Benutzerdaten**.
  * Unter **Server-Verwaltung** -> "Server-Einstellungen" können Sie nun weitere Einstellungen für den Server vornehmen.

Nun ist die Installation abgeschlossen. Ab sofort können weitere Benutzerkonten registriert und Befragungsprojekte eingerichtet werden ([[de:create:register|Benutzerkonto und Befragungen einrichten]]).

===== Automatisierung regelmäßiger Aufgaben =====

Für die optimale Ausführung von SoSci Survey sollten zwei PHP-Skripte regelmäßig aufgerufen werden: Die [[maintenance|regelmäßige Wartung des Servers]] (einmal täglich) und die [[:de:server:crontask|Ausführung zeitgesteuerter Aufgaben]].



===== Weitere Schritte =====

  * Sie sollten auf dem Server ein paar Einstellungen vornehmen, um die [[security]] zu gewährleisten.
  * SoSci Survey kennt eine Reihe von Erweiterungen, die Sie nun installieren können: [[plugins|Erweiterungen]].
  * Das Kapitel [[data|Daten in SoSci Survey]] gibt Ihnen einen Überblick, wo SoSci Survey welche Daten speichert.
  * Es gibt eine Reihe von Möglichkeiten zur [[performance|Optimierung der Server-Leistung]].
  * Zur Anpassung nicht-änderbarer Einstellungen kann die [[config|Konfiguration manuell geändert]] werden.
  * Das Vorgehen zum Update einer bestehenden Installation beschreibt das Kapitel [[update|Update der Installation]].