Operazioni preliminari e installazione del server Apache
Accedere al server con un account amministrativo e lanciare il comando per aggiornare il repository:
sudo apt-get update
Iniziare l’installazione con il primo componente, il server Apache
sudo apt install apache2
Il comando installerà il server Web chiedendo conferma per l’installazione
Configurazione del firewall
Installato il server Web Apache procedere con la configurazione del firewall per permetter l’accesso dall’esterno alle porte 80 e 443, rispettivamente HTTP e HTTPS, i comandi da eseguire sono:
sudo ufw app list
che restituisce:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
digitare il comando:
sudo ufw app info "Apache Full"
che restituisce:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Il comando da lanciare per abilitare è:
sudo ufw allow in "Apache Full"
che abilita l’accesso per le porte 80 e 443.
Abilitare anche il protoccolo SSH, necessario per l’accesso da remoto e per il caricamento dei file con il protocollo Secure SSH con il comando:
sudo ufw allow ssh
Per abilitare il firewall digitare il comando
sudo ufw enable
Terminata l’installazione del server Web Apache si può testare il suo funzionamento digitando nel browser l’indirizzo IP del server oppure un indirizzo configurato per puntare allo stesso.
In caso di mancato accesso al server entrare in consolle e digitare il comando per disabilitare il Firewall
sudo ufw disable
Installazione di MySql
Per installare il server MySql procedere con il comando:
sudo apt install mysql-server
Terminata l’installazione del Mysql bisogna procedere alla configurazione e alla messa in sicurezza, la procedura disabilita l’accesso dall’esterno e rimuove i database di default o di test e inserisce un controllo sulla complessità della password dell’utente amministratore.
sudo mysql_secure_installation
La prima richiesta è sulla validazione e installazione del controllo della complessità della Password, risponder Si e procedere, selezionare successivamente il livello di complessità, dal più basso al più alto con i valori, 0, 1, 2. Inserire la password di root seguendo le regole della complessità, il passo successivo valuta la complessità della password con un valore da 1 a 100 e richiede se procedere oppure reinserire la password. Le successive richieste sono la rimozione dell’utente anonimo, dell’accesso da remoto dell’account root e del database di test, rispondere affermativamente a tutte se non sorgono particolari esigenze, come ultimo step viene richiesto di ricaricare le impostazioni dopo le modifiche.
Di default il server per l’utente root ha abilitata auth_socket e non la password, per comodità si può abilitare la password per l’utente ed accedere più facilmente con i comandi:
sudo mysql SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
SELECT user,authentication_string,plugin,host FROM mysql.user;
che restituisce
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Uscire dal Mysql con il comando
Exit
Installazione PHP
Per installare il PHP utilizzare il comando:
sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip oppure per una versione specifica sudo apt install php7.3 libapache2-mod-php7.3 php7.3-mysql php7.3-curl php7.3-gd php7.3-mbstring php7.3-xml php7.3-xmlrpc php7.3-soap php7.3-intl php7.3-zip
Aggiornamento PHP
Per aggiornare PHP
apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-soap php7.4-intl php7.4-zip php7.4-imagick apt install php8.0 libapache2-mod-php8.0 php8.0-mysql php8.0-curl php8.0-gd php8.0-mbstring php8.0-xml php8.0-xmlrpc php8.0-soap php8.0-intl php8.0-zip php8.0-imagick sudo a2dismod php7.2 sudo a2enmod php7.4
Installazione PhpMyAdmin
Per installare l’interfaccia web di amministrazione del database Mysql utilizzare il comando:
sudo apt install phpmyadmin php-mbstring php-gettext
e procedere con la configurazione,
- utilizzare il server Apache2 per la configurazione
- Selezionare Yes per l’utilizzo di
dbconfig-common
per la configurazione - Inserire e confermare la password dell’utente amministratore
L’installazione salva la configurazione nel file /etc/apache2/conf-enabled/ e automaticamente viene utilizzata.
Se viene visualizzato l’errore:
procedere in questo modo:
sudo mysql oppure mysql -u root -p
in base all’autenticazione che avete abilitato nello step precedente
Disabilitate il componente di validazione Password
UNINSTALL COMPONENT "file://component_validate_password";
procedere con l’installazione e configurazione di phpmyadmin e una volta terminata riabilitare il componente precedentemente disattivato con il comando seguente dopo essere rientrati in mysql
INSTALL COMPONENT "file://component_validate_password";
Se è necessario abilitare l’estensione PHP mbstring e riavviare il server Apache, utilizzare il comando:
sudo phpenmod mbstring sudo systemctl restart apache2
E’ necessario installare anche il cURL necessario per diversi PlugIns e abilitarlo all’interno del php.ini
sudo apt install php-curl sudo nano /etc/php/7.2/apache2/php.ini abilitare extension=curl systemctl restart apache2
Per utilizzare il plugins Imagify oppure un pligins per modificare e gestire le immagini di può installare il componente imagemagick oppure basta installare il componente gd
sudo apt install php-gd abilitare in/etc/php/7.2/apache2/php.ini extension=gd2 systemctl restart apache2
Abilitare il protocollo HTTP/2
sudo a2enmod http2
Cambiare la root del sito e inserirla nel profilo dell’utente se necessario
Creare il nuovo utente utilizzato per la gestione completandolo di password ed eventualmente delle informazioni facoltative che vengono richieste e inserirlo nel gruppo Sudo se si vuole che abbia diritti amministrativi e www-data che è il gruppo predefinito che accede alle cartelle del server web con i seguenti comandi
adduser faustomarzo usermod -aG sudo faustomarzo usermod -aG www-data faustomarzo
Ora cambiamo il percorso /var/www/html
diamo i seguenti comandi per creare il nuovo percorso nella nostra home personale:
mkdir -p www/html
Cancelliamo la cartella html in /var/www con il comando
sudo rm -R /var/www/html
e creiamo un link simbolico alla cartella html che punta dal vecchio al nuovo percorso, dove va sostituito faustomarzo con l’utente creato precedentemente
sudo ln -s /home/faustomarzo/www/html /var/www/html
Settare i permessi sulla cartella var/www/html che sono 775 rwx per utente e gruppo e rx per altri in modo che l’utente precedente creato e inserito nel gruppo www-data possa leggere e scrivere
sudo chown -R www-data:www-data /var/www/html sudo chmod -R 775 /var/www/html
Installazione del Server Secure FTP
Procedere con l’installazione del server Secure FTP necessario per la copia di file all’interno del profilo dell’utente precedentemente configurato come root del server web
sudo apt install ssh
e procedere alla configurazione modificando il file /etc/ssh/sshd_config inserendo al fondo le righe:
sudo nano /etc/ssh/sshd_config
Match group sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Creare un gruppo chiamato sftp come precedente specificato per inserire gli utenti abilitati all’uso del SFTP e inserire l’utente precedentemente creato nel gruppo
sudo addgroup sftp sudo usermod -aG sftp faustomarzo
Per verificare che l’utente sia stato inserito nei gruppi corretti utilizzare il comando che visualizza tutti gli utenti con la loro appertenenza:
cat /etc/passwd | grep /home | grep -v false | cut -d: -f1 | xargs groups
Procedere con la copia dei file nella root del sito web
Creazione di un Virtual Host Apache
I virtual Host vengono utilizzati per avere siti web multipli sullo stesso server, si procede aggiungendo un file di configurazione per ogni sito web e successivamente abilitandoli all’interno di Apache.
Per creare un sito web ad esempio chiamato xdieci.it procedere creando un file:
sudo nano /etc/apache2/sites-available/xdieci.it.conf
e inserendo le seguenti righe:
<VirtualHost *:80> ServerAdmin webmaster@xdieci.it DocumentRoot /var/www/html/xdieci.it/ ServerName xdieci.it ServerAlias www.xdieci.it <Directory /var/www/html/xdieci.it/> Options +FollowSymlinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Abilitare il virtual host con il comando:
sudo a2ensite xdieci.it.conf sudo a2enmod rewrite sudo systemctl restart apache2
Creazione di un database Mysql
Per creare un database utilizzato per ospitare un istanza di worpress, procedere con i seguenti comandi:
sudo mysql -u root -p CREATE DATABASE xdieci; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'new_password_here'; GRANT ALL ON xdieci.* TO 'wpdbuser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;
Installazione di un Certificato Let’s Encrypt
Per installare un certificato Let’s Encrypt necessari per abilitare la navigazione con il protocollo HTTPS, procedere prima con l’installazione del pacchetto necessario alla certificazione, per prima cosa vanno aggiunti nel Repository i file necessari con il comando:
sudo add-apt-repository ppa:certbot/certbot
Lanciare il comando per installare i file necessari:
sudo apt install python-certbot-apache
Per richiede un certificato valido è necessario richierlo con il nome corretto del sito web che si può verificare alla riga
ServerName del file di configurazione del virtual host con la seguente sintassi:
sudo certbot --apache -d xdieci.it -d www.xdieci.it
Viene richiesto se attivare di default la redirezione di tutto il traffico da HTTP a HTTPS, è possibile accettare oppure no, la differenza è che accettando la redirezione, vengono aggiunte le seguenti righe al file di configurazione del sito web
RewriteEngine on RewriteCond %{SERVER_NAME} =xdieci.it [OR] RewriteCond %{SERVER_NAME} =www.xdieci.it RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
e viene creato un file di configurazione uguale al precedente con le direttive per usare il protocollo HTTPS aggiungendo -le-ssl al file prima di conf. Esempio xdieci.it.conf diventa xdieci.it-le-ssl.conf
Per abilitare il protocollo HTTP2 nel file di configurazione aggiungere la riga
Protocols h2 http/1.1
in un punto qualsiasi. Se prima di abilitare HTTP2 sono stati richiesti i certificati, non sono validi e vanno ricreati con il protocollo HTTP2 abilitato.
Per testare la configurazione dei certificati e della configurazione del sito web utilizzare il sito
https://www.ssllabs.com/ssltest/
Per testare la configurazione HTTP2 utilizzare il sito
https://tools.keycdn.com/http2-test
Post correlati:
Ultimi post di Fausto Marzo (vedi tutti)
- Prove da telefono - 20 Novembre 2021
- Installare Cockpit per controllare i server Ubuntu - 8 Agosto 2021
- Teoria del colore e segnali video - 26 Aprile 2020