Passa ai contenuti principali

Server Aruba Cloud - CentOS 7 - Installare un Web Server LAMP multi PHP (PHP 5.6 e PHP 7.3)

L'argomento di questo post è un bel po' complesso, poiché è una evoluzione forte di quello che abbiamo fin qui affrontato col THE MATRIX MACHINE Project - Linux.

Se fino ad ora avevamo come interesse quello di creare un Web Server che ci consentisse di avere in ufficio, in casa un server web per le nostre invenzioni, dove potevamo ospitare più domini con i VirtualHost, ma tutto sommato la base di  linguaggio PHP rimaneva immutato per tutte i domini sulla stessa macchina, ora "giochiamo" su piani paralleli, dove ogni dominio (o sottodominio) si sviluppa in modo differente, usando risorse differenti.


Ovviamente risorse di linguaggio PHP differenti, ma base di dati unica sotto, in quanto il database (se inteso come ospitato in locale, localhost) è sempre lo stesso.

Ovviamente nulla ci vieta di usare database differenti su macchine differenti (ad esempio il MySQL Server di Aruba fornito col pacchetto hosting), ma è un dettaglio che affronteremo in seguito.


La base - Un Server CentOS Cloud Aruba.it

Se è pur vero che andiamo a costruire un Server LAMP (Linux, Apache, MySQL/MariaDB, PHP), usiamo una versione base Linux pronta e con  IP pubblico statico, visto che riprogettare tutta la struttura su un server in locale è più complesso (ma non è detto che affronteremo il problema in un altro post).

Ovviamente è anche un discorso di costo, visto che un Server Smart Cloud di Aruba.it costa, iva inclusa, 3,50€/mese, due Cornetti ed un Caffè, per giocare.

Il Server che andremo  ad usare è il basilare CentOS 7 64 Bit



Una volta che è stata installata la macchina, ed abbiamo quindi l'utente root in connessione con SSH (ad esempio usando il programma Putty su Windows), possiamo passare all'installazione dei pacchetti.


I tool base per Linux

Innanzitutto installiamo i tool base (già affrontati in altri post)

yum -y install nano

L'editor di testo più semplice ed avanzato del vi di base che consente un minimale Copia/Incolla da PC

yum -y install unzip

Il programma di decompressione file zip standard

yum -y install vsftpd

Il programma di FTP Server che useremo per uploadare file (clicca qui per il post)

yum -y install mc

Il programma di gestione file simile al Norton Commander di felice memoria (clicca qui per il post dedicato)

Si potrebbe installare anche il Maria DB Server, il clone di MySQL, ma si rimanda direttamente al post dedicato.

Il DataBase lo si può installare anche a conclusione della procedura del sistema.


Installare Apache2

Il primo pezzo del puzzle, a parte quelli elencati in precedenza, è Apache2, che è il programma standard per la pubblicazione di pagine web e del quale già abbiamo discusso in altri post per la creazione di Virtual Host e SSL su dominio:


yum -y install httpd

così installa direttamente l'ultima versione nel repository

I due articoli precedenti, dovranno essere adattati alla nuova struttura.


Installare le due versioni di PHP 5.6 e 7.3

La versione di PHP che andremo ad usare è PHP-FPM (FastCGI Process Manager) ed è un'implementazione PHP FastCGI alternativa con alcune funzionalità aggiuntive (principalmente) utili per siti con carichi pesanti.

Quindi andremo ad installare questi oggetti:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

(andiamo a configurare il Repository Remi)

yum -y install php56

yum -y install php73

yum -y install php56-php-fpm

yum -y install php73-php-fpm

Una volta installate, le andiamo a bloccare


systemctl stop php56-php-fpm

systemctl stop php73-php-fpm


per consentire a SELinux (1) di eseguire lo script php-fpms, eseguire questi comandi:


semanage port -a -t http_port_t -p tcp 9072

semanage port -a -t http_port_t -p tcp 9056


(1) SELinux è un set di modifiche che possono essere applicate a sistemi operativi di tipo Unix come Linux e BSD. La sua architettura cerca di separare l'uso delle regole di sicurezza dalla definizione delle regole stesse, riducendo il numero di software incaricati a verificare che queste vengano rispettate. I concetti base di SELinux possono essere ricondotti ad alcuni progetti della National Security Agency (NSA) statunitense


La mossa precedente serve ad aprire due porte per indirizzare le richieste che arrivano sia per PHP 5.6 che per PHP 7.3 sulla stessa porta 9000.

Quindi andiamo a configurare i due file www.conf delle due versioni di PHP:

sed -i 's/:9000/:9056/' /etc/opt/remi/php56/php-fpm.d/www.conf

sed -i 's/:9000/:9072/' /etc/opt/remi/php73/php-fpm.d/www.conf


Le due installazioni di PHP sono monche degli add-on per accedere al DataBase ed altro, quindi installiamoli:

PHP 7.3

yum install php73-php-mysql php73-php-pecl-memcache php73-php-pecl-memcached php73-php-gd php73-php-mbstring php73-php-mcrypt php73-php-xml php73-php-pecl-apc php73-php-cli php73-php-pear php73-php-pdo


PHP 5.6

yum install php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo


Ora riavviamo sia PHP 5.6 che 7.3, in precedenza fermati 

systemctl start php73-php-fpm

systemctl start php56-php-fpm


A questo punto dobbiamo creare due script-wrapper per PHP 5.6 e 7.3


PHP 5.6

nano /var/www/cgi-bin/php56.fcgi


e dentro incolliamo

#!/bin/bash
exec /bin/php56-cgi


PHP 7.3

nano /var/www/cgi-bin/php73.fcgi


e dentro incolliamo

#!/bin/bash
exec /bin/php73-cgi


Fatto ciò diamo i permessi soliti (755) ai due file 

sudo chmod 755 /var/www/cgi-bin/php56.fcgi
sudo chmod 755 /var/www/cgi-bin/php73.fcgi


I due Virtual Host di Prova

A questo punto abbiamo bisogno di due Virtual Host per testare se tutto è andato a buon fine

Immaginiamo di usare un dominio e di creare due sottodomini.

Nel caso qui riportato usiamo:

tmm.2cg.it per PHP 5.6 

tmm2.2cg.it per PHP 7.3

Configuriamo il file del Virtual Host tmm.2cg.it

Creiamo il file di VirtualHost direttamente nella cartella con nano

nano /etc/httpd/conf.d/tmm.2cg.it.conf


########################

###### Porta 80 - Inizio

###

### - tmm.2cg.it

### - Con accesso con .htaccess

### - e con error.log

###### 

<VirtualHost tmm.2cg.it>

    DocumentRoot "/var/www/html/php56"

    #ServerName tmm.2cg.it


    # Parametri della struttura in php 5.6

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

    AddHandler php56-fcgi .php

    Action php56-fcgi /cgi-bin/php56.fcgi


    # Parametri della cartella in PHP 5.6

    <Directory /var/www/html/php56>

DirectoryIndex index.php

AllowOverride all

Require all granted

    </Directory>

</VirtualHost>


Configuriamo il file del Virtual Host tmm2.2cg.it

Creiamo il file di VirtualHost direttamente nella cartella con nano

nano /etc/httpd/conf.d/tmm2.2cg.it.conf

########################

###### Porta 80 - Inizio

###

### - tmm2.2cg.it

### - Con accesso con .htaccess di yourl

### - e con error.log

###### 

<VirtualHost tmm2.2cg.it>

    DocumentRoot "/var/www/html/php73"

    

    #ServerName tmm2.2cg.it

    # Parametri della struttura in php 7.3

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

    AddHandler php73-fcgi .php

    Action php73-fcgi /cgi-bin/php73.fcgi


    # Parametri della cartella in PHP 7.3

    <Directory /var/www/html/php73>

DirectoryIndex index.php

AllowOverride all

Require all granted

    </Directory>

</VirtualHost>


Ultimo passaggio è quello di creare un file php che ci consenta di vedere la versione e cosa abbiamo come add-on


mkdir -p /var/www/html/php56

mkdir -p /var/www/html/php73

echo "<?php phpinfo(); ?>" > /var/www/html/php56/index.php

echo "<?php phpinfo(); ?>" > /var/www/html/php73/index.php


Avviamo tutti i servizi

systemctl enable httpd
systemctl enable php56-php-fpm
systemctl enable php73-php-fpm
systemctl start httpd
systemctl start php56-php-fpm
systemctl start php73-php-fpm


Il test sul browser

Andiamo a vedere che cosa accade quando digitiamo nella barra degli indirizzi i due domini:

tmm.2cg.it



tmm2.2cg.it



Se non si è installato prima si può installare il DataBase Maria DB


Nota: In caso di riavvio del server, in questa configurazione i servizi partono in modo automatico.

L'unico problema può presentarsi nel caso si MariaDB, che va avviato manualmente, ma il gestore del PHP non da problemi, partono entrambi in modo automatico

Commenti

Post più popolari

Mac OS X - Installare ed usare una stampante sul Print Server GetNet 3 Port 2 USB e 1 LPT

Abbiamo visto come installare il Print Server GetNet 3 in 1 sui più diffusi sistemi operativi Windows (vedi articoli correlati in fondo al post). La "scatoletta" ha anche un protocollo di comunicazione Apple Talk, quindi può essere collegata (fare da tramite) anche a stampanti che abbiano la gestione post script integrata (quasi tutte le stampanti salvo quelle del gruppo Ricoh che hanno bisogno di un apposito moduol installato) sul Mac. Print Server GetNet 1 Parallela e 2 USB Il metodo di installazione è molto simile a quello visto su Windows, con la differenza sostanziale che non è necessario scegliere tra moltissimi modelli, ma si gestisce in modo più semplice. Purtroppo sul Mac non è possibile (allo stato attuale) collegare print server di tipo TP-Link, ovvero replicatori di porta USB su Lan, in quanto non esiste un driver adatto. Detto questo, consideriamo la stampante che vogliamo collegare al Mac. Il caso che abbiamo usato nei precedenti post,

BlackBerry - Importare i dati da altri cellulari

English translated post Un amico mi porta un BlackBerry Pearl 8110 e mi chiede di trasferire i dati dal suo cellulare Nokia a questo telefono. Premesso che personalmente non ho mai reputato il BlackBerry un telefono "semplice", l'operazione si è reputata piuttosto complessa. Scartata l'idea di mandare i vcard via bluetooth (come si fa con quasi tutti i Nokia e Samsung), l'unica alternativa è quella di appoggiarsi a Microsoft Outlook !!! Come fare? 1 - Installare il Microsoft Outlook (XP o 2003) nel proprio PC 2 - Installare (nel caso specifico del Nokia) il programma Nokia PC Suite 3 - Sincronizzare solo la Rubrica (ovviamente dipende sempre se il cellulare Nokia è il Vostro o di un Vostro amico) del Nokia con l'Outlook, così che tutti i dati presenti nella Rubrica siano copiati nella sezione Contatti dell'Outlook 4 - Scaricare l'ultima versione del BlackBerry Desktop Manager (se il pacchetto è quello Vodafone, la versione sul CD non è mo

Joomla! - Mettere la testata in Stampa

Come è noto Joomla! è uno dei più usati CMS (Content Managment System) che consente di avere un ambiente (environment) sul quale costruire e sviluppare siti e portali. Uno dei problemi più noti è quello di poter inserire la testata nel file da stampare. Ad esempio se il mio sito si chiama dicecca.net - Blog ed ha un logo particolare che voglio pubblicare come testata, nella conformazione classica, non posso farlo. Come risolvere? Premesso che tutto il sistema è scritto in linguaggio PHP, il file che viene chiamato in causa è component.php che si trova nella cartella /[sito (1)] /templates/system Il file ( che è possibile scaricare qui in formato testo ), alla riga 40 inizia il Body del testo. Alla riga 41 inizia l'inclusione del testo dell'articolo che si è deciso di stampare, che a sua volta viene aperto in una finestra popup. Dando un taso invio, dalla riga 41 è possibile inserire il riferimento ad una immagine e/o un formattato HTML della testata del nos