<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.unix.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Nginx 1.4.x auf Unix-Systemen',
    2 => 'Nginx 1.4.x auf Unix-Systemen',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Installation auf Unix-Systemen',
  ),
  'prev' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.x auf Unixsystemen',
  ),
  'next' => 
  array (
    0 => 'install.unix.lighttpd-14.php',
    1 => 'Lighttpd 1.4 auf Unix-Systemen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'install/unix/nginx.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.unix.nginx" class="sect1">
 <h2 class="title">Nginx 1.4.x auf Unix-Systemen</h2>

 <p class="para">
  Diese Dokumentation deckt die Installation und Konfiguration von PHP mit
  PHP-FPM für ein Nginx 1.4.x HTTP Server ab.
 </p>

 <p class="para">
  Diese Anleitung setzt voraus, dass Sie Nginx aus dem Quelltext erstellt
  haben und dadurch alle Binaries und Konfigurationsdateien in
  <code class="literal">/usr/local/nginx</code> abgelegt sind. Wenn dies nicht der Fall
  ist und Sie Nginx über eine andere Quelle bezogen haben, dann lesen Sie
  bitte im <a href="https://www.nginx.com/resources/wiki/" class="link external">&raquo;&nbsp;Nginx-Wiki</a> nach, um dieses
  Handbuch für Ihre Installation anzupassen.
 </p>

 <p class="para">
  Diese Anleitung wird die Grundlagen der Konfiguration eines Nginx-Servers
  abdecken, um PHP-Applikationen auszuführen und unter Port 80
  bereitzustellen. Wenn Sie Ihre Installation über den Rahmen dieser
  Dokumentation hinaus optimieren möchten, sollten Sie die Nginx- und
  PHP-FPM-Dokumentation lesen.
 </p>

 <p class="para">
  Hinweis: In dieser Dokumentation wurden Versionsnummern durchgehend mit
  einem &#039;x&#039; ersetzt. Dies stellt sicher, dass die Dokumentation auch für
  künftige  Versionen richtig bleibt. Bitte ersetzen Sie diese soweit
  notwendig mit Ihrer  entstprechenden Version.
 </p>

 <ol type="1">
  <li class="listitem">
   <p class="para">
    Es wird empfohlen, dass Sie die
    <a href="https://www.nginx.com/resources/wiki/start/topics/tutorials/install/" class="link external">&raquo;&nbsp;Installation</a>sseite im
    Nginx-Wiki besuchen, um Nginx für Ihr System zu erhalten und zu
    installieren.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Den PHP-Quellcode herunterladen und entpacken:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar zxf php-x.x.x
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Konfigurieren und Erstellen von PHP. Dies ist die Stelle, an der Sie Ihre
    PHP-Installation individuell mit verschiedenen Optionen anpassen. Sowas
    wie: welche Erweiterung (extension) aktiviert (enabled) wird. Führen Sie
    ./configure --help für eine Liste der verfügbaren Optionen aus. In unserem
    Beispiel werden wir eine einfache Konfiguration mit PHP-FPM- und
    MySQLi-Unterstützung durchführen.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd ../php-x.x.x
./configure --enable-fpm --with-mysqli
make
sudo make install
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Erhalten und verschieben von Konfigurationsdateien an die richtige Stelle
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cp php.ini-development /usr/local/php/php.ini
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Es ist wichtig, dass wir Nginx daran hindern Anfragen an das PHP-FPM Backend
    zu leiten, wenn die Datei nicht existiert. Dies erlaubt uns willkürliche Skript
    Eingaben (script injection) zu verhindern.
   </p>
   <p class="para">
    Wir können dies durch eine Einstellung beheben, indem wir innerhalb unserer php.ini Datei
    die <a href="ini.core.php#ini.cgi.fix-pathinfo" class="link">cgi.fix_pathinfo</a>
    Direktive auf <code class="literal">0</code> setzen.
   </p>
   <p class="para">
    Einlesen der php.ini:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
vim /usr/local/php/php.ini
</pre></div>
    </div>
   </div>

   <p class="para">
    Positionieren auf <code class="literal">cgi.fix_pathinfo=</code> und wie folgt modifizieren:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cgi.fix_pathinfo=0
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    php-fpm.conf muss angepasst werden, damit php-fpm als User www-data
    und Gruppe www-data ausgeführt wird, bevor wir es Service starten können:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
vim /usr/local/etc/php-fpm.d/www.conf
</pre></div>
    </div>
   </div>

   <p class="para">
    Finden und modifizieren Sie folgendes:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user&#039;s group
;       will be used.
user = www-data
group = www-data
</pre></div>
    </div>
   </div>

   <p class="para">
    Der php-fpm Service kann wie folgt gestartet werden:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/bin/php-fpm
</pre></div>
    </div>
   </div>

   <p class="para">
    Diese Anleitung wird nicht weiter auf die php-fpm Konfiguration eingehen. Wenn Sie
    weiteres Interesse an der php-fpm Konfiguration haben, dann ziehen Sie bitte die
    entsprechende Dokumentation heran.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Nginx muss jetzt konfiguriert werden, um PHP Applikationen ablaufen zu lassen:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="cdata"><pre>
vim /usr/local/nginx/conf/nginx.conf
</pre></div>
    </div>

   </div>

   <p class="para">
    Modifizieren Sie den Bereich voreingestellte Positionen, um zu gewährleisten,
    dass .php Dateien verarbeitet werden:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="nginx-confcode"><pre class="nginx-confcode">location / {
    root   html;
    index  index.php index.html index.htm;
}</pre>
</div>
    </div>

   </div>

   <p class="para">
    Der nächste Schritt soll sicherstellen, dass .php Dateien an
    des PHP-FPM Backend geleitet werden. Geben Sie unter dem auskommentierten
    standard PHP location Block folgendes ein:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="nginx-confcode"><pre class="nginx-confcode">location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}</pre>
</div>
    </div>

   </div>

   <p class="para">
    Neustart von Nginx.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Erstellen einer Test Datei
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
rm /usr/local/nginx/html/index.html
echo &quot;&lt;?php phpinfo(); ?&gt;&quot; &gt;&gt; /usr/local/nginx/html/index.php
</pre></div>
    </div>
   </div>

   <p class="para">
    Nun navigieren Sie zu http://localhost. Die Funktion phpinfo() sollte nun angezeigt werden.
   </p>
  </li>
 </ol>

 <p class="para">
  Folgen Sie den obigen Schritten und Sie werden ein laufenden Nginx Web-Server
  mit Unterstützung für PHP als ein <code class="literal">FPM</code> <code class="literal">SAPI</code> Modul erhalten.
  Natürlich sind noch viel mehr Konfigurations-Einstellungen für Nginx und PHP verfügbar.
  Für weitere Informationen geben Sie <strong class="command">./configure --help</strong> im entsprechenden
  Quellpfad ein.
 </p>

</div><?php manual_footer($setup); ?>