GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie Suphp mit Apache unter Ubuntu / Linux

Suphp

Der Suphp-php-Handler ist ein Apache-Modul (mod_suphp), das PHP-Skripte im Besitz und mit der Erlaubnis eines bestimmten Benutzers ausführt.

Dies wird als Sicherheitsverbesserung angesehen, da das System nachverfolgen kann, welches PHP-Skript des Benutzers ausgeführt wird (und ggf. Probleme verursacht).

In Shared-Hosting-Umgebungen ist suphp sehr beliebt, da es sehr einfach zu installieren und zu konfigurieren ist.

Suphp führt PHP als CGI aus. Daher muss das php5-cgi-Paket installiert werden. Aus diesem Grund ist suphp viel langsamer als mod_php.

Aber Suphp fügt die Sicherheit hinzu, den Benutzer zu identifizieren, der das Skript ausgeführt hat. Wenn Sie also PHP als CGI ausführen müssen, ist suphp der bevorzugte Weg. Es gibt jedoch viel bessere und schnellere Alternativen wie fastcgi, fpm usw., die im Vergleich zu cgi eine höhere Leistung haben.

Suphp besteht aus zwei Komponenten:

1. mod_suphp - ein Apache-Modul, das mod_php ersetzt
2. suphp - eine setuid-Binärdatei, die Apaches suexec ersetzt, sie führt php mit den spezifischen Benutzerrechten aus.

1. Installieren Sie suphp auf Ubuntu

1. Installieren Sie zuerst das Apache-Modul für suphp, Paket libapache2-mod-suphp

$ sudo apt-get install libapache2-mod-suphp

2. Deaktivieren Sie als Nächstes mod php, das der standardmäßige PHP-Handler auf Ubuntu ist

$ sudo a2dismod php5
Module php5 disabled.
Run '/etc/init.d/apache2 restart' to activate new configuration!

3. Starten Sie nun Apache neu

$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2                                                                                         apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                  [ OK ]

Dies sollte suphp installieren und aktivieren. Die Konfigurationsdatei für mod php befindet sich hier

$ cat /etc/apache2/mods-enabled/suphp.load
LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so

Die suphp-Konfiguration für Apache ist hier

$ cat /etc/apache2/mods-enabled/suphp.conf
<IfModule mod_suphp.c>
        AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
        suPHP_AddHandler application/x-httpd-suphp
    <Directory />
        suPHP_Engine on
    </Directory>
    # By default, disable suPHP for debian packaged web applications as files
    # are owned by root and cannot be executed by suPHP because of min_uid.
    <Directory /usr/share>
        suPHP_Engine off
    </Directory>
# # Use a specific php config file (a dir which contains a php.ini file)
#       suPHP_ConfigPath /etc/php4/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type <mime-type>.
#       suPHP_RemoveHandler <mime-type>
</IfModule>

Die obige Konfiguration macht suphp zum Handler für PHP-Dateien.

2. Legen Sie die Benutzer- und Gruppen-ID für jeden virtuellen Host fest

Damit suphp die PHP-Skripte mit einer bestimmten Benutzer-ID/Gruppen-ID ausführt, müssen wir die Konfiguration für jeden virtuellen Host in der Apache-Konfigurationsdatei einrichten.

Die Apache-Konfigurationsdatei auf Ubuntu befindet sich unter

/etc/apache2/sites-available/default

Bearbeiten Sie den relevanten virtuellen Host und fügen Sie die suphp-Benutzergruppeneinstellungen wie unten gezeigt hinzu. Die Direktive suPHP_UserGroup weist Apache an, die Benutzer-ID/Gruppen-ID für den spezifischen virtuellen Host zu verwenden.

<VirtualHost 64.131.72.23:80>
    ServerName some-site.com
    ServerAlias www.some-site.com
    DocumentRoot /home/mike/public_html
    <IfModule mod_suphp.c>
        suPHP_UserGroup mike mike
    </IfModule>
</VirtualHost>

Wenn Sie die Apache-Hauptkonfigurationsdatei nicht bearbeiten möchten, erstellen Sie eine neue Datei im selben Verzeichnis

/etc/apache2/sites-available/

Und fügen Sie den virtualhost-Block in dieser Datei hinzu. Wenden Sie dann die Einstellungen mit dem Befehl a2ensite an.

$ sudo a2ensite file_name

3. Berechtigungen konfigurieren

Suphp gibt auch "500 Internal Server Error" aus, wenn eine PHP-Datei von Gruppen beschreibbar ist. Das Fehlerprotokoll enthält einen Eintrag wie diesen

SoftException in Application.cpp:564: Directory "/var/www" is writeable by group, referer: http://localhost/index.php

Um dies zu beheben, überprüfen Sie die Berechtigungen und stellen Sie sicher, dass die Gruppe oder andere Personen keine Berechtigung zum Lesen einer PHP-Datei haben.


Ubuntu
  1. So installieren Sie PHP unter Ubuntu Linux

  2. So installieren Sie PHP unter Ubuntu 18.04

  3. So installieren Sie WordPress mit Apache unter Ubuntu 18.04

  4. So installieren Sie PHP 8.0 unter Ubuntu 20.04 / Ubuntu 18.04

  5. So installieren Sie PHP-FPM mit Apache unter Ubuntu 20.04

So installieren Sie phpBB mit Apache unter Ubuntu 20.04

So installieren Sie den Stack Linux, Apache, MySQL, PHP (LAMP) unter Ubuntu 16.04 / Ubuntu 14.04

So installieren Sie Linux, Apache, MariaDB, PHP (LAMP Stack) unter Ubuntu 18.04

So installieren Sie mehrere PHP-Versionen mit Apache unter Ubuntu 18.04 und 16.04

So installieren Sie Apache Nifi unter Ubuntu Linux

So installieren Sie Laravel PHP Framework mit Nginx unter Ubuntu Linux