GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Suphp con Apache su Ubuntu/Linux

Suphp

Il gestore php di Suphp è un modulo apache (mod_suphp) che esegue script php con la proprietà e il permesso di un utente specifico.

Questo è visto come un miglioramento della sicurezza poiché il sistema può tenere traccia di quale script php dell'utente è in esecuzione (e causando eventuali problemi).

Negli ambienti di hosting condiviso suphp è molto popolare poiché è molto facile da installare e configurare.

Suphp esegue php come cgi. Quindi ha bisogno del pacchetto php5-cgi per essere installato. Per questo motivo suphp è molto più lento di mod_php.

Ma Suphp aggiunge la sicurezza di identificare l'utente che ha eseguito lo script. Quindi, se devi eseguire php come cgi, allora suphp è il modo preferito. Tuttavia ci sono alternative molto migliori e più veloci come fastcgi, fpm ecc. che hanno prestazioni più elevate rispetto a cgi.

Suphp è costituito da due componenti:

1. mod_suphp - un modulo Apache che sostituisce mod_php
2. suphp - un binario setuid che sostituisce suexec di Apache, esegue php con i privilegi utente specifici.

1. Installa suphp su Ubuntu

1. Prima installa il modulo apache per suphp, pacchetto libapache2-mod-suphp

$ sudo apt-get install libapache2-mod-suphp

2. Quindi disabilita mod php, che è il gestore php predefinito su Ubuntu

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

3. Ora riavvia Apache

$ 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 ]

Questo dovrebbe installare e abilitare suphp. Il file di configurazione per mod php si trova qui

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

La configurazione di suphp per apache è qui

$ 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>

La configurazione di cui sopra rende suphp il gestore per i file php.

2. Imposta userid e groupid per ogni virtualhost

Per fare in modo che suphp esegua gli script php con uno specifico userid/groupid abbiamo bisogno di impostare la configurazione per ogni virtualhost nel file di configurazione di apache.

Il file di configurazione di apache su ubuntu si trova in

/etc/apache2/sites-available/default

Modifica l'host virtuale pertinente e aggiungi le impostazioni del gruppo utente suphp come mostrato di seguito. La direttiva suPHP_UserGroup dice ad Apache di usare l'id utente/groupid per l'host virtuale specifico.

<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>

Se non vuoi modificare il file di configurazione principale di Apache, crea un nuovo file nella stessa directory

/etc/apache2/sites-available/

E aggiungi il blocco virtualhost in quel file. Quindi applica le impostazioni usando il comando a2ensite.

$ sudo a2ensite file_name

3. Configura le autorizzazioni

Suphp fornisce anche "500 Internal Server Error" se un file php è scrivibile per gruppo. Il registro degli errori conterrà una voce come questa

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

Per risolvere questo problema, controlla i permessi e assicurati che il gruppo o altri non abbiano alcun permesso su un file php in attesa di lettura.


Ubuntu
  1. Come installare PHP su Ubuntu Linux

  2. Come installare PHP su Ubuntu 18.04

  3. Come installare WordPress con Apache su Ubuntu 18.04

  4. Come installare PHP 8.0 su Ubuntu 20.04 / Ubuntu 18.04

  5. Come installare PHP-FPM con Apache su Ubuntu 20.04

Come installare phpBB con Apache su Ubuntu 20.04

Come installare lo stack Linux, Apache, MySQL, PHP (LAMP) su Ubuntu 16.04 / Ubuntu 14.04

Come installare Linux, Apache, MariaDB, PHP (stack LAMP) su Ubuntu 18.04

Come installare più versioni PHP con Apache su Ubuntu 18.04 e 16.04

Come installare Apache Nifi in Ubuntu Linux

Come installare Laravel PHP Framework con Nginx su Ubuntu Linux