Premessa
Guida nata dal Forum, stilata dall’utente Tiger
Requisiti:
- Raspberry Pi 1/2/3
- Microsd/Sd Classe 10 da 16 o 32gb (io consiglio 32Gb in quanto lo spazio non basta mai..)
- OS installato Raspbian Jessie o Stretch la cui differenza è sul database e versione php
mysql e php 5.x per Raspian Jessie,
Maria DB e php 7.0 per Raspian Stetch
Installazione Apache 2 su Raspbian
Primo Step, accertiamoci che il nostro sistema operativo sia aggiornato e abbia l’ultimo kernel. Per farlo, apriamo il terminale e digitiamo:
1)
sudo apt update && sudo apt dist-upgrade
diamo la nostra password utente
2)
sudo rpi-update
3) diamo il comando
sudo reboot
per riavviare.
Una volta riavviato, possiamo procedere all’installazione del nostro web server Apache 2. Sempre da terminale digiteremo quindi:
4)
sudo apt-get install apache2 -y
e attendiamo che finisca.
Dopo, dobbiamo installare php, mysql e phpmyadmin
Installeremo php v.5.x per Raspbian Jessie
o la versione 7.0 per Raspbian Stretch.
cambiano le versioni del Php ma la modalità di installazione resta la medesima.
Installazione PHP su Raspbian e Apache 2
- Per coloro che utilizzano Raspbian Jessie, digitare:
5)
sudo apt-get install php5 libapache2-mod-php5 php5-mysql php5-curl php5-gd php5-IDN php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php-apcu php-smbclient php-imagick libmagickcore-dev -y
- Per coloro che utilizzano Raspbian Stretch, digitare:
5.1)
sudo apt-get install php7.0 libapache2-mod-php7.0 php7.0-cli php7.0-common php7.0-mbstring php7.0-gd php7.0-intl php7.0-xml php7.0-mysql php7.0-mcrypt php7.0-zip php7.0-curl php-ssh2 php-apcu php-smbclient php-imagick libmagickcore-dev -y
accettiamo quindi ogni richiesta da parte del terminale, e quando abbiamo terminato possiamo procedere nell’installazione del database Mysql, che per Raspbian Jessie risulta essere SQL Mysql mentre per Raspbian Stretch si è passati alla gestione del database tramite Maria DB.
E’ Importante ricordare che mentre per Mysql su Raspbian Jessie la password di root viene impostata nella fase di installazione del database, per Maria Db la password di root della release Raspbian Stretch viene impostata successivamente all’installazione.
Installazione del Database Mysql per Apache 2
Sia per Mysql su Raspbian Jessie che per MariaDB su Raspbian Stretch, il comando da dare al terminale è simile, sebbene vengano installate due diverse tipologie di database, quindi attenzione, lo ripeto: Mysql per Raspbian Jessie e Maria DB per Raspbian Stretch!
-
Raspbian Jessie:
6)
sudo apt-get install mysql-server -y
(con questo comando nel terminale per Jessie andrà impostata la password di root del Database, è importante segnarla e ricordarla, perché ci servirà per gestire il database tramite poi phpmyadmin) -
Raspbian Stretch:
(Durante l’installazione del database Maria Db, a differenza di Jessie, non verrà impostata nessuna password di root del database, operazione che verrà invece fatta subito dopo l’installazione con questi comandi:
6.1) accedere come root (importante), chi non avesse impostato una password per l’utente root, può farlo tramite il comando
6.1.1)
sudo passwd root
Una volta fatto, dare il comando per accedere come root, tramite la password (appena creata o già impostata):
6.1.2)
su
6.1.3) digitare poi
mysql_secure_installation
6.1.4) premere Invio alla richiesta della password di root del database, in quanto è inizialmente vuota (non è impostata)
6.1.5) rispondere Y alla richiesta di cambio password
6.1.6) creare password per il root di MariaDb
6.1.7) digitare Y a tutte le altre domandecosi anche per Raspbian Stretch abbiamo il nostro utente root con password per il database Maria Db!
Installazione di Phpmyadmin
7) digitare
sudo apt-get install phpmyadmin
Durante l’installazione, ci verrà chiesto di inserire la password di root del nostro database, creata precedentemente. E’ importante iserirla e ripeterla correttamente, va utilizzata la stessa password dello stesso phpmyadmin.
N.B.= Per raspbian Stretch con database MariaDb, si può ricevere un messaggio di errore, tentando di accedere al proprio PhpMyAdmin:
phpmyadmin #1698 – Access denied for user ‘root’@’localhost’
Mysql tries to authenticate root using plugin, not password. You need to disable plugin usage for root.
Per risolverlo, digitiamo a terminale:
7.1)
sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
\q
sudo reboot
Bene! Con queste Operazioni abbiamo installato un web server Apache 2 con database mysql e gestione dello stesso tramite GUI di Phpmyadmin!
Creazione Database
Ora non ci resta che creare un database tramite phpmyadmin per poter poi installare Nextcloud sul nostro Raspberry Pi.
La prima procedura da fare, è settare i permessi dell’utente predisposto alla gestione di Apache (utente Data) sulla cartella www dove andrà ospitato il nostro sito, o nel nostro caso, Nextcloud. Per fare questo, da terminale digitiamo:
8)
sudo chown -R www-data:www-data /var/www/
9) creiamo poi una cartella Chiamata Nextcloud, nella directory www, con questi comandi:
sudo chmod -R 777 /var/www
sudo mkdir /var/www/Nextcloud
10) Abilitiamo il modulo rewrite php per la gestione degli url, tramite
sudo a2enmod rewrite
10.1) Modifichiamo il file conf di Apache per gestire il rewrite e non permettere la visualizzazione del contenuto delle cartelle ove non permesso, con queste due voci da inserire in /etc/apache2/apache2.conf
sudo chmod -R 777 /etc/apache2/apache2.conf
sudo nano /etc/apache2/apache2.conf
qui andremo ad inserire le 2 voci che ci interessano. La prima, va solo modificata, in quanto già esistente: va solo settata la dicitura All alla voce AllowOverride:
1 2 3 4 5 |
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> |
Nella seconda (presupponendo che abbiate creato la cartella Nextcloud in /var/www), aggiungiamo, sempre al file apache2.conf, la voce:
1 2 3 |
<Directory "/var/www/Nextcloud"> Options -Indexes </Directory> |
Cosi facendo, nessuno potrà vedere il contenuto delle cartelle ove non permesso.
11) Ora abilitiamo i moduli php necessari per il corretto funzionamento di Nextcloud, digitiando i seguenti comandi:
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo chown -R www-data:www-data /var/www/Nextcloud/
Ho pensato di inserire installazione del php 7.0 fpm (FastCGI Process Manager)
PHP-FPM è uno dei tanti metodi di implementazione di PHP, che fa parte della suite Apache-Mysql-PHP nei vostri sistemi operativi preferiti. Questa suite è stata rapidamente adottata nel World Wide Web perché di facile implementazione ed eseguibile su tutti e tre i principali sistemi operativi.
Nelle versioni precedenti, PHP funzionava in parallelo al server Apache attraverso il protocollo CGI e FAST-CGI, ma il suo utilizzo non era semplice. Incluso direttamente nella suite del web server Apache, la sua popolarità è esplosa per la sua breve configurazione e le sue prestazioni molto alte. Ne beneficerà tutto il web server Apache2.
Da terminale digitiamo questi comandi:
-
Per Raspian Jessie
12) Digitare
sudo systemctl stop apache2
sudo apt-get install php5-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php5-fpm
sudo a2dismod php5
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl start apache2 -
Per Raspian Stretch
12.1) Digitare:
sudo systemctl stop apache2
sudo apt-get install php7.0-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo a2dismod php7.0
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl start apache
Certificati TLS
Procediamo con la creazione dei certificati TLS, in questo ci verrà in aiuto CertBot, un pacchetto per Sistemi Operativi Linux che si preoccupa dell’installazione dei nostri certificati gratuiti e del loro rinnovo dopo 90 gg:
Andiamo a disattivare il file 000-default.conf situato in:
1 |
/etc/apache2/sites-available |
Esso contiene i dati di default del sito Apache2, che punta alla cartella /var/www/html
Preventivamente, tramite qualunque programma FTP, copiamo il nostro file sul nostro desktop e rinominiamolo in nextcloud.conf
al suo interno modifichiamo solo il puntamento all nostro sito da /var/www/html a /var/www/Nexcloud
cartella (Nextcloud) che va creata nella directory /var/www
(chi avesse problemi in questo passaggio scriva nella discussione di supporto nel forum)
Fatto ciò, copiare il file nextcloud.conf in /etc/apache2/sites-available
12.2) diamo permessi di scrittura alla cartella site available
Digitiamo poi da Terminale
sudo chmod -R 777 /etc/apache2/sites-available
Con un software FTP, o via Termianle, copiamo poi il file nextcloud.conf in /etc/apache2/sites-available
13) Digitiamo poi da terminale
sudo a2dissite 000-default.conf
sudoo a2ensite nextcloud.conf
Abbiamo così disattivato il puntamento alla cartella html e abilitato quello che punta alla cartella Nextcloud.
14) Provvediamo a installare i certificati TLS per far si che il nostro sito sia attendibile anche tramite protocollo https:
Per farlo, ci avvaliamo di Certbot, gestore per OS Linux che provvde anche al rinnovo dei certificati.
Scriviamo quindi sul Terminale:
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x certbot-auto
sudo update
sudo dist-upgrade
15) Ora cominciamo la configurazione!
Ecco i comandi da Terminale:
sudo /path/to/certbot-auto --apache
(Ora vi verrà richiesto il vostro indirizzo email e la vostra URL di riferimento, di solito un DDNS che punta dall’esterno all’IP del vostro Raspberry PI, sulle porte 80 e 443)
Una volta immessi, vi verrà chiesto se Certbot dovrà redirigere le chiamate HTTP in HTTPS: seconda opzione, sceglietela.
Ora Certbot creerà da solo il modulo nextcloud-ssl.conf abilitando automaticamente tutti i moduli necessari per il corretto funzionamento del protocollo https:
16) Bene! Ora installiamo il protocollo http/2.0 che velocizzerà e migliorerà di molto il caricamento delle nostre pagine web…:
Digitiamo, sempre da Terminale
sudo a2enmod http2
Ora, nel file di configurazione di Apache, inseriamo questa voce per abilitare http/2.0
17) sudo nano /etc/apache2/apache2.conf
e inseriamo la voce
1 |
Protocols h2 h2c http/1.1 |
18) A questo punto, riavviamo il servizio di Apache2 con:
sudo systemctl restart apache2
abbiamo finito di configurare il protocollo HTTPS e l’installazione del protocollo di comunicazione http/2.0
————————————-
19) Per Nextcloud scaricate il file PHP di installazione, dal link:
1 |
https://download.nextcloud.com/server/installer/setup-nextcloud.php |
e copiatelo nella vostra cartella Nextcloud: Es. (/var/www/Nextcloud)
Aprite adesso il vostro browser preferito e fatelo puntare al file PHP “setup-nextcloud.php”
esempio:
1 |
https://www.sitovostro/setup-nextcloud.php |
Da lì partirà in automatico una procedura di configurazione, che scaricherà tutto il pacchetto Nextcloud,e vi porterà poi alla pagina di prima configurazione, dove dovrete inserire nome utente e password dell’amministratore, e i parametri del database.
I quali, se avete seguito la guida, saranno:
- nome utente = root
- password = (quello che avete scelto quando avete installato MariaDb più in sua)
- nome database= Nextcloud (o quello che avete creato accedendo a phpmyadmin)
(ricordo che la URL per creare un database tramite phpmyadmin è https://www.vostrosito/phpmyadmin)
Accedete quindi come root e password del database Maria Db che avete scelto, cliccate sul pulsante ‘nuovo’ e date un nome al vostro database (es. nextcloud)
Come indirizzo IP del database, lasciate “localhost” e cliccate sul pulsante ‘conferma’.
—————————-
20) Dopo l’installazione di Nextcloud, esso ci avvertirà di sistemare 3 errori non critici:
- error hsts in rosso,
- la memcache
- opcache
Questo per gestire al meglio il cloud.
Per l’ errore hsts, basta aggiungere la seguente stringa al file nextcloud-ssl.conf, in precedenza creato grazie a Certbot (il nome cambia in base a quello che volete, basta che sia il file .conf che richiama la porta 443 dell’SSL):
1 2 3 |
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> |
per gli altri 2 errori, invece, basta modificare il file config.conf di Nextcloud, situato in https://www.sitovostro/Nextcloud/config/config.conf, aggiungendo la seguente voce sotto alle altri simili:
20.1) Per memcache
1 |
'memcache.local' => '\OC\Memcache\APCu' |
,
20.2) Per opcache modificare il file php.ini, situato in /etc/php/7.0/fpm, con il comando:
sudo nano /etc/php/7.0/fpm/php.ini
e aggiungere le seguenti voci al file:
1 2 3 4 5 6 7 |
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1 |
Riavviamo ora il servizio PHP FPM, con il comando:
sudo service php7.0-fpm restart
diamo un bel
sudo reboot
per riavviare tutto e..
abbiamo così finito!!!
Ci ritroveremo quindi installato e configurato il nostro cloud personale.
Grazie di cuore a chi ha avuto la costanza di leggermi fino in fondo… See You Ti@er
Per ogni dubbio o domanda, resta attiva la discussione di supporto di questa guida.
Se vuoi restare aggiornato seguici sui nostri social: Facebook , Twitter, YouTube, Google+, Telegram