GL 006 – Server per il WEB

Le seguenti indicazioni sono visualizzabili su questo sito per esclusivo uso personale. Il sottoscritto non si ritiene responsabile di problemi derivanti dall'utilizzo di tali indicazioni.


Torna all’elenco GNU/Linux

Questa immagine ha l'attributo alt vuoto; il nome del file è TT_GnuLinux.jpg

LAMP – Aggiornamento 2020

ATTENZIONE
Le configurazioni sono pensate per un utilizzo come sistema di sviluppo!
NON sono quindi adatte per un server da utilizzare effettivamente per fornire servizi web!

Apache

Ok l’installazione di APACHE con la modifica della Document root (Spostata su altro disco). In questo modo tutti i file PHP non si troveranno in /var/www (o /var/www/html), ma in altra locazione; in caso di reinstallazione del Sistema Operativo, si può stare tranquilli.

Mysql

OK l’installazione di MYSQL, ma non modifico più la Database root. Per il ripristino dei DB, in caso di guai, si può procedere in due modi diversi. (Si suppone che il nome del DB da ricreare sia NOMEDATABASE)

A) Copiare “brutalmente” da database di backup

B) Importazione database (Phpmyadmin)

Passaggio PHP da 5.6 a 7+

Per adesso il mio host supporta la 5.6. Molti dei mie lavori utilizzano mysql_connect() supportata solo da questa versione. In futuro, se l’host deciderà di non supportare più la 5.6, gli script php presenteranno degli errori e dovrei sistemare la cosa.

1) Riscrittura delle pagine del sito

Non ce n’è bisogno. Ho trovato una libreria di funzioni mysql-fix che permette di risolvere il problema. Basta caricare il file php sul server e inserire il seguente codice nella prima riga degli script che producono l’errore: include_once(’PATH/mysql-fix.php’);

2) Pannello di controllo personalizzato (Admin_RELAX)

Admin_RELAX, oltre ad usare mysql_connect(), utilizza delle chiamate all’information_schema che non sono sovrascritte da php-mysql-fix, pertanto non funziona utilizzando tale libreria. Potrei usare Admin_RELAX in locale (con PHP 5.6) ed accedere ai database in remoto oppure utilizzare un sostituto che ho trovato in rete. Non ha tutte le funzioni che avevo scritte AD-HOC, ma sembra andare bene: Adminer

Apache

ATTENZIONE
Le configurazioni sono pensate per un utilizzo come sistema di sviluppo!
NON sono quindi adatte per un server da utilizzare effettivamente per fornire servizi web!

Installazione

sudo apt-get install apache2

Se dopo l’installazione tutto è andato a buon fine, aprendo un browser e digitando nella barra degli indirizzi http://localhost/, dovrebbe comparire una pagina con il messaggio It works!.

La document root di default è /var/www (Nell’ultima installazione /var/www/html … mah)

Modifica della “document root”

  • Aprire il file /etc/apache2/sites-enabled/000-default
  • Sostituire DocumentRoot /var/www con DocumentRoot /NEWPATH
  • Aprire il file /etc/apache2/apache2.conf
  • Sostituire Directory /var/www con Directory /NEWPATH (Io l’ho spostata su un altro disco: attenzione ai permessi. Eventualmente rinominare la vecchia DIR in /var/www_OLD invece di eliminarla)
  • Riavviare Apache per rendere effettive le modifiche effettuate: sudo /etc/init.d/apache2 restart

Disabilitare l’avvio automatico di Apache

sudo update-rc.d apache2 disable 5 4 3 2

Comandi base

sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart

MySql

ATTENZIONE
Le configurazioni sono pensate per un utilizzo come sistema di sviluppo!
NON sono quindi adatte per un server da utilizzare effettivamente per fornire servizi web!

Installazione

sudo apt-get install mysql-server
Verrà richiesta password per l’utente root di mysql

Modifica della “Database Root”

Procedura eseguita per spostare dir di default su altro DiSCO (meglio se extN, ntfs deve essere montato con particolari impostazioni). Attenzione ai permessi, a partire dalla cartella /media fino alla nuova cartella.

Default >>> /var/lib/mysql/

  • Fermare il servizio mysql: sudo /etc/init.d/mysql stop
  • Copiare i file nella nuova dir: sudo mv /var/lib/mysql /NUOVA_DIRECTORY
  • Dare i permessi alla nuova dir: sudo chown -R mysql:mysql /NUOVA_DIRECTORY
  • Aprire il file (APPARMOR): sudo gedit /etc/appamor.d/usr.sbin.mysqld e modificare le seguenti righe:
  • Riavviare il servizio apparmor: sudo /etc/init.d/apparmor restart
  • Modificare il file (MY.CNF): sudo gedit /etc/mysql/my.cnf (NOTA: in Mint 19 il file da modificare è /etc/mysql/mysql.conf.d/mysqld.cnf)
  • Riavviare il servizio mysql: sudo /etc/init.d/mysql start
  • Come ultimo step, assegnare i diritti di “ALL PRIVILEGES” ai database per lo user root. (NON NECESSARIO)

Disabilitare avvio automatico di MySQL

Aprire il file /etc/init/mysql.conf ed inserire il carattere # (commento) all’inizio delle righe:

Stranezza (da capire)

Dopo aver modificato la document_root dopo una nuova installazione. I “vecchi database che si trovavano nella document_root” e “mysql da riga di comando” sono accessibili mediante la vecchia password di root e non con la nuova.

Collegamenti

Comandi utili

Cambiare la password di root in MySQL

Come reinstallare il server MySql da zero

Php 5.6/7.0

ATTENZIONE
Le configurazioni sono pensate per un utilizzo come sistema di sviluppo!
NON sono quindi adatte per un server da utilizzare effettivamente per fornire servizi web!

Installazione

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0

Cambio versione 5.6 > 7.0: sudo a2dismod php5.6; sudo a2enmod php7.0; sudo service apache2 restart

Cambio versione 7.0 > 5.6: sudo a2dismod php7.0; sudo a2enmod php5.6; sudo service apache2 restart

File di configurazione: /etc/php/phpX.X/apache2/php.ini

Aumentare dimensione file in upload

All’interno del file di configurazione php.ini, modificare le due voci:

upload_max_filesize
post_max_size

Al termine dell’operazione riavviare Apache

Phpmyadmin (relativa ad una installazione obsoleta)

Se phpmyadmin non è già nella document root di apache, si può installare da terminale o tramite SYNAPTIC.
La directory è /usr/share/phpmyadmin spostata brutalmente (e rinominata) nella Document root di APACHE.

Problema con la password: Configurare phpmyadmin su linux mint 19

Soluzione errore “Impossibile caricare l’estensione mysqli”:

sudo apt-get install php5-mysql
/etc/init.d/apache2 restart


Soluzione errore “mcrypt”:

sudo apt-get install php5-mcrypt


NOTA: Negli ultimi due casi conviene prima purgare le due installazioni

Abilitare visualizzazione degli errori

Nel caso le pagine non venissero visualizzate e viene restituito il codice di errore HTTP 500 e’ possibile che all’interno della pagina vi siano errori, ma sul server non e’ attivata la loro visualizzazione.

E’ giusto che sia cosi’, ma per un server di sviluppo e’ necessario modificare tale impostazione modificando alcune voci del file /etc/php/XX.XX/apache2/php.ini nel modo seguente:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL | E_STRICT

oppure
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT


Al termine della modifica riavviare Apache.


Se non si vuole modificare il file di configurazione, è possibile ottenere lo stesso risultato inserendo le seguenti righe all’inizio del file PHP:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

Installazione SQLite (PDO)

sudo apt-get install php7.0-sqlite


Al termine riavviare Apache.

Sendmail

Modifica di /etc/php5/apache2/php.ini

In genere la voce sendmail_path è disabilitata; sostitutirla con sendmail_path = /usr/sbin/sendmail -t -i e riavviare apache: /etc/init.d/apache2 restart

Comandi demone SENDMAIL

/etc/init.d/sendmail start
/etc/init.d/sendmail stop
/etc/init.d/sendmail restart

SSH

Lato server

Installazione: sudo apt-get install openssh-server
Avvio/Riavvio: sudo /etc/inid.d/ssh restart
Non c’è stato bisogno di alcuna configurazione particolare. Per visualizzare gli IP di rete: ifconfig

Su qualche Raspberry il server non sembra essere funzionante all’avvio del sistema. Ho modificato il file /etc/rc.local nel seguente modo:


sudo /etc/init.d/ssh restart
exit 0


Lato client

Installazione: sudo apt-get install openssh-client
Accesso: sudo ssh NomeUtente@IndirizzoIP
Esempio: sudo ssh harlock@192.168.1.2
Accesso grafico: sudo ssh -X harlock@192.168.1.2 (NOTA: non funziona. Soluzione: VNC Viewer)


Montare partizione remota

Installare ssh file system: sudo apt-get install sshfs (eventualmente anche sul server)
Creare una directory come punto di mount: mkdir /media/MYDIR

Montare la partizione:

sudo sshfs UTE_REM@IND_REM:/DIRREM /media/MYDIRLOC -o allow_other
Esempio: sudo sshfs harlock@192.168.1.2:/ /media/sshHarlock -o allow_other

Smontare la partizione:

sudo fusermount -u /media/MYDIR
Esempio: sudo fusermount -u /media/sshHarlock