GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare SuPHP su CentOS 7.2

SuPHP è un modulo apache che consente a PHP di accedere a un utente Linux diverso dall'utente apache. Ciò migliora la sicurezza dei siti Web ospitati poiché è possibile eseguire gli script PHP di ciascun sito Web con un utente diverso. Questo tutorial descrive l'installazione di SuPHP su centOS 7.2 dal sorgente poiché non sono disponibili pacchetti SuPHP per CentOS 7.2.

Prerequisiti

Avrai un server su cui è installato CentOS 7.2 o versioni successive, userò questo tutorial come base per la mia configurazione. Nel primo capitolo installerò il web server Apache. Se hai già installato Apache, inizia subito con il capitolo 2.

Il mio server utilizzerà il nome host server1.example.com e l'indirizzo IP 192.168.1.100. Sostituisci questi valori con il nome host e l'IP del tuo server ovunque si verifichino nel seguente tutorial.

Consiglio di avere un firewall installato per motivi di sicurezza, se non avete ancora firewalld installato potete installarlo con questi comandi:

yum -y install firewalld

avvia il firewall e abilita l'avvio all'avvio.

systemctl start firewalld.service
systemctl enable firewalld.service

Quindi, apri la tua porta SSH per assicurarti di poterti connettere al server tramite SSH.

firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --reload

1 Installazione di Apache 2.4 e PHP 5

Apache e PHP sono disponibili nel repository di base di CentOS, quindi possiamo installare entrambi i pacchetti software con yum.

Installa Apache e il pacchetto di sviluppo Aapache che contiene i file necessari per la compilazione SuPHP in un secondo momento.

yum -y install httpd httpd-devel

Installazione PHP (ho aggiunto alcuni moduli PHP usati di frequente):

yum -y install php php-mysql php-gd php-pear php-xml php-xmlrpc php-mbstring curl

Dobbiamo consentire ad Apache di avviarsi all'avvio e avviare il servizio.

systemctl start httpd.service
systemctl enable httpd.service

Dobbiamo aprire le porte HTTP (80) e HTTPS (443) per rendere il server web accessibile da altri computer. Esegui i seguenti comandi per configurare il firewall.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

2 Installazione di SuPHP

In questo passaggio compileremo SuPHP dal sorgente. Installa gli strumenti di sviluppo per configurare la catena di build richiesta.

yum -y groupinstall 'Development Tools'

E scarica i file sorgente e il nano editor.

yum -y install wget nano

Scarica l'archivio tar.gz dei sorgenti SuPHP e decomprimilo.

cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz

CentOS 7 usa Apache 2.4, quindi dobbiamo patchare suphp prima di poterlo compilare contro Apache. La patch viene applicata in questo modo:

wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
[[email protected] suphp-0.7.2]# autoreconf -if
libtoolize:mettere i file ausiliari in AC_CONFIG_AUX_DIR, `config'.
libtoolize:copiare il file `config/ltmain.sh'
libtoolize:considera l'aggiunta di `AC_CONFIG_MACRO_DIR([m4])' a configure.ac e
libtoolize:riesegui libtoolize, per mantenere le macro libtool corrette nell'albero.
libtoolize:considera l'aggiunta di `-I m4' a ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:9:avviso:AM_INIT_AUTOMAKE:i moduli a due e tre argomenti sono obsoleti. Per ulteriori informazioni, vedere:
configure.ac:9:http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24 :installazione di 'config/config.guess'
configure.ac:24:installazione di 'config/config.sub'
configure.ac:9:installazione di 'config/install-sh'
configure .ac:9:installazione di 'config/missing'
src/Makefile.am:installazione di 'config/depcomp'
[[email protected] suphp-0.7.2]#

Il comando autoreconf applica la patch, ora possiamo configurare il nuovo sorgente come segue. NOTA: Il comando di configurazione è una riga!

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner --with-logfile=/var/log/httpd/suphp_log

Quindi compila e installa SuPHP.

make
make install

Quindi aggiungi il modulo suPHP alla configurazione di Apache aggiungendo un nuovo file suphp.conf.

nano /etc/httpd/conf.d/suphp.conf

Con il seguente contenuto.

LoadModule suphp_module modules/mod_suphp.so

... e crea il file /etc/suphp.conf come segue:

nano /etc/suphp.conf
[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=apache
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100

[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi="execute:!self"

Infine, riavviamo Apache:

systemctl restart httpd.service

3 Configura un Vhost Apache con SuPHP

In questo capitolo mostrerò come aggiungere un host virtuale in apache che esegue PHP con un utente separato. Userò il nome di dominio www.example.com per il sito Web e PHP verrà eseguito come utente e gruppo "web1 ", la radice del documento per il sito Web è /var/www/example.com

Innanzitutto, aggiungi un nuovo utente e raggruppa "web1".

useradd web1

Aggiungi la directory principale del sito web.

mkdir /var/www/example.com
chown web1:web1 /var/www/example.com

Ora aggiungi il file di configurazione dell'host virtuale nella directory apache conf.d.

nano /etc/httpd/conf.d/example.com.conf

con questo contenuto:

<VirtualHost *>
DocumentRoot /var/www/example.com
ServerName example.com
ServerAdmin [email protected]

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler None
</FilesMatch>

<IfModule mod_suphp.c>
suPHP_Engine on
<FilesMatch "\.php[345]?$">
SetHandler x-httpd-suphp
</FilesMatch>
suPHP_AddHandler x-httpd-suphp
</IfModule>
</VirtualHost>

Sostituisci il nome di dominio con il tuo dominio nelle righe ServerName e ServerAdmin.

Quindi riavvia Apache per applicare le modifiche alla configurazione.

systemctl restart httpd.service

4 Testare la configurazione SuPHP

In questo capitolo ti mostrerò diversi metodi per testare PHP in questo sito web. Per prima cosa, creerò un file che utilizza la funzione phpinfo() per mostrare se PHP funziona e se ora funziona in modalità CGI.

Crea un file info.php con nano:

nano /var/www/example.com/info.php

e aggiungi le seguenti righe al nuovo file:

<?php
phpinfo();

Quindi cambia il proprietario del file nell'utente e nel gruppo web1.

chown web1:web1 /var/www/example.com/info.php

Apri l'URL del file http://example.com/info.php in un browser web, mostrerà la seguente pagina.

Importante è la ServerAPI riga che mostra CGI/FastCGI . che mostra che PHP viene eseguito tramite SuPHP e non mod_php.

Ora proverò se PHP viene eseguito con l'utente corretto (web1). Come fa SuPHP a sapere quale utente deve utilizzare? SuPHP passa PHP all'utente che possiede lo script PHP, quindi è importante che tutti i file PHP nella nostra cartella principale web /var/www/example.com siano di proprietà dell'utente e del gruppo web1.

Quindi, come verificare se PHP utilizza l'utente giusto? Un modo è eseguire il comando "whoami" che restituisce il nome utente.

Creerò un nuovo script testuser.php nella radice del sito web:

nano /var/www/example.com/testuser.php

con questo contenuto:

<?php
system('whoami');

Quindi cambia il proprietario del file nell'utente e nel gruppo web1.

chown web1:web1 /var/www/example.com/testuser.php

Apri http://example.com/testuser.php in un browser web, il risultato sarà il: web1

SuPHP è configurato ed esegue i file PHP come utente di questo sito web. Rimuovi i file di prova dalla directory del sito Web e inizia ad aggiungere gli script del tuo sito Web.

5 Scarica questo server CentOS 7.2 come macchina virtuale

Questa configurazione è disponibile come download della macchina virtuale in formato ova/ovf (compatibile con VMWare e Virtualbox) per gli abbonati howtoforge.

Dettagli di accesso per la VM

  • La password di root è:howtoforge
  • La password dell'utente "amministratore" è:howtoforge

Modifica entrambe le password al primo accesso.

  • L'indirizzo IP della VM è 192.168.1.100

  • CentOS
  • Server Web Apache
  • SuPHP

Cent OS
  1. Come installare Apache Cassandra su CentOS 8

  2. Come installare Apache su CentOS 7

  3. Come installare Apache Kafka su CentOS 8

  4. Come installare Apache Tomcat 8 su CentOS

  5. Come installare phpMyBackupPro su CentOS 6

Come installare Apache Cassandra in CentOS

Come installare elgg su CentOS 8

Come installare Apache ServiceMix su CentOS 8

Come installare Apache SVN su CentOS 7

Come installare Mod_Security Apache su CentOS 6

Come installare Apache su CentOS 6