tigernero
Posts: 140
Joined: Fri Dec 30, 2016 5:51 pm

Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Sat Apr 13, 2019 6:20 am

Salve a Tutti, in questo Post cercherò di aiutare chi come me ha trascorso nottate di studi 
per sistemare e rendere operativo un mini web server su raspberry aggiungendo installazione di un cloud server personale
cui fare affidamento per gestire i propri file a casa come si fa per Dropbox o similari


Inserirò quindi a mano a mano che avrò tempo,
tutte le istruzioni necessarie per installare sul proprio Raspberry
(con os Raspbian Buster o Stretch) il proprio sito personale e in aggiunta il proprio Cloud Personale. 

Grazie allo stupendo lavoro eseguito con Nextcloud da cui è possibile gestire anche tramite App Android e Ios il proprio archivio personale.

Ringrazio Admin Zzed per il supporto ove necessita chiederò personalmente a lui...

Requisiti:

1) Raspberry pi 1/2/3

2) Microsd/Sd Classe 10 da 16 o 32gb (io consiglio 32Gb in quanto lo spazio non basta mai..)

3) OS installato Raspbian Buster o Stretch la cui differenza è sul database e versione php

MariaDb e php 7.2 per Raspian Buster, 

Maria DB e php 7.0 per Raspian Stetch

------------


[align=center]Installazione Apache 2 su Raspbian[/align]

Primo Step accertiamoci che il nostro sistema operativo sia aggiornato e abbia ultimo kernel per fare ciò 

apriamo il terminale e digitiamo

1)

Code: Select all

sudo apt update && sudo apt dist-upgrade
diamo la nostra password utente

2)

Code: Select all

sudo rpi-update
3) diamo comando

Code: Select all

sudo reboot
finito possiamo procedere all'installazione del nostro web server apache 2

sempre da terminale digiteremo:

4) 

Code: Select all

sudo apt-get install apache2 -y
attendiamo che finisca 

poi fatto cio dobbiamo installare php e mysql e phpmyadmin

Versione 7.0 per Raspbian Stretch

Versione 7.2 per Raspbian Buster

cambiano le versioni del Php ma la modalità di installazione resta la stessa

[align=center]Installazione PHP su Raspbian Apache 2[/align]

Per coloro che abbiano Raspbian Buster  digitare:

5) 

Code: Select all

sudo apt-get install php7.2 libapache2-mod-php7.2 php7.2-cli php7.2-common php7.2-mbstring php7.2-gd php7.2-intl php7.2-xml php7.2-mysql php7.2-zip php7.2-curl php7.2-ldap php7.2-bz2  php-ssh2 php-apcu php-smbclient php-imagick libmagickcore-dev -y
Per coloro che abbiano Raspbian Stretch digitare:

5.1) 

Code: Select all

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 php7.0-ldap php-ssh2 php-apcu php-smbclient php-imagick libmagickcore-dev -y
accettiamo ogni richiesta da parte del terminale, fatto cio dobbiamo procedere nell'installazione del database Mysql che per raspbian Buster e Stretch risulta essere MariaDb 10.3 per Buster e 10.1 per Stretch.

[align=center]Installazione del Database Mysql per Apache 2[/align]


Per il Mysql Raspbian Buster e Maria DB per Raspbian Stretch 
il comando da dare al terminale è Per Raspbian Buster:

6)

Code: Select all

[b]s[/b]udo apt install mariadb-server -y
e per Raspbian Stretch

6.1)

Code: Select all

sudo apt-get install mysql-server -y
Raspbian Buster e Stretch

[Durante l'installazione del database Maria Db non verrà impostata nessuna password di root del database, operazione che verrà fatta subito dopo installazione con questo comando:

6.1) accedere come root (importante), chi non avesse impostato una password per utente root puo farlo tramite comando

 6.1.1) 

Code: Select all

sudo passwd root
 
   fatto ciò dare comando per accedere con password root appena creata o che avevamo già creato con:

6.1.2) 

Code: Select all

su
 

6.1.3) digitare 

Code: Select all

mysql_secure_installation
6.1.4) premere Enter alla richiesta password root database in quanto è vuota inizialmente (non è impostata)

6.1.5) dare Y alla richiesta per cambiare password

6.1.6) creare password per root mariadb

6.1.7) digitare Y a tutte le altre domande

cosi anche per Raspbian Stretch e Buster abbiamo il nostro utente root con password per il database Maria Db

[align=center]Installazione di Phpmyadmin[/align]

digitare 

7) digitare 

Code: Select all

sudo apt-get install phpmyadmin 
durante installazione ci verrà chiesto di inserire la password di root creata del nostro database, 
importante è metterla e ripeterla correttamente , va messa la stessa come password dello stesso phpmyadmin.

N.B.= Per raspbian Stretche Buster con database mariadb si può ricevere 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)    

Code: Select all

sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
\q
sudo reboot
Con queste Operazioni abbiamo installato un web server apache 2 con database mysql e gestione dello stesso tramite Gui di Phpmyadmin.


Non ci resta che creare un database tramite phpmyadmin per poter poi installare Nextcloud sul nostra Raspberry.

Prima procedura da fare è settare i permessi dell utente predisposto alla gestione apache (utente Data) sulla cartella www dove andrà ospitato il nostro sito o nel nostro caso Nextcloud per fare cio da terminale digitiamo:

8) 

Code: Select all

sudo chown -R www-data:www-data /var/www/
9) creiamo una cartella Chiamata Nextcloud nella directory www con questi comandi

  9.1)

Code: Select all

sudo chmod -R 777 /var/www

        sudo mkdir /var/www/Nextcloud

abilitiamo modulo rewrite php per la gestione degli url tramite

10) 

Code: Select all

sudo a2enmod rewrite
modifichiamo il file conf di apache per gestire il rewrite e non permettere la visualizzazione del contenuto delle carte ove non permesso con queste due voci da inserire in /etc/apache2/apache2.conf 

quindi digitiamo

10.1) 

Code: Select all

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 gia esiste la voce, va solo settata la dicitura All alla voce AllowOverride

 <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:

 <Directory "/var/www/Nextcloud">
Options -Indexes
</Directory> 

cosi facendo nessuno potrà vedere il contenuto delle cartelle ove non permesso.

Ora abilitiamo i moduli php necessari per il corretto funzionamento di nextcloud digitiamo i seguenti comandi:

11) 
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/7.2 fpm (FastCGI Process Manager)

PHP-FPM è uno dei tanti modi di implementazione PHP, che fa parte della suite Apache-Mysql-PHP sui 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 Buster digitare

12)
1) sudo systemctl stop apache2
    
2) sudo apt-get install php7.2-fpm

3) sudo a2enmod proxy_fcgi setenvif

4) sudo a2enconf php7.2-fpm 

5) sudo a2dismod php7.2

6) sudo a2dismod mpm_prefork 

7) sudo a2enmod mpm_event

8) sudo systemctl start apache2
Per Raspian stretch

12.1)
1) sudo systemctl stop apache2
    
2) sudo apt-get install php7.0-fpm

3) sudo a2enmod proxy_fcgi setenvif

4) sudo a2enconf php7.0-fpm 

5) sudo a2dismod php7.0 

6) sudo a2dismod mpm_prefork 

7) sudo a2enmod mpm_event

8) sudo systemctl start apache2
Procediamo con la creazione dei certificati tls, in questo ci verrà in aiuto CertBot, pacchetto per os 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:

/etc/apache2/sites-available

esso che 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 del nostro sito da /var/www/html in /var/www/Nexcloud 

cartella che va creata nella directory /var/www
(chi avesse problemi in questo passaggio può postare sotto i suoi dubbi li risolveremo)

fatto ciò copiare il file nextcloud.conf in /etc/apache2/sites-available

digitiamo da terminale

12.2) diamo permessi di scrittura alla cartella site available
sudo chmod -R 777 /etc/apache2/sites-available
con  un software ftp o via terminale copiamo poi il file Nextcloud.conf sul nostro desktop in /etc/apache2/sites-available


digitiamo poi da terminale


13)
sudo a2dissite 000-default.conf
      
      sudo a2ensite nextcloud.conf

abbiamo disattivato il puntamento alla cartella html e abilitato quello che punta alla cartella Nextcloud.

Provvediamo a installare i certificati tls per far si che il nostro sito sia attendibile anche tramite protocollo https

per fare cio ci avvaliamo di Certbot, gestore per os linux che provvederà anche al rinnovo dei certificati.

digitiamo da terminale

14) 
1) sudo apt-get update

2) sudo apt-get install certbot python-certbot-apache

3) sudo certbot --apache

(qui vi verrà chiesto la vostra email e il vostro url di riferimento, di solito un ddns che punta dall'esterno all ip del vostro raspberry porta 80 e 443)

fatto cio vi verrà chiesto se certbot dovrà redirigere le chiamate http in https seconda opzione sceglietela

anche qui chi avesse dubbi può postare sotto le proprie perplessità.

finito certbot creerà da solo il file https relativo al vostro file conf della porta 80 abilitando di suo tutti i moduli necessari per il corretto funzionamento del protocollo https
Il comando impostura in automatico lo script per il rinnovo certificati prima della scadenza

Per coloro che volessero aggiornarli in automatico o verificate se serve aggiornamento dare il comando:

15)

Code: Select all

sudo certbot renew
bene ora installiamo il protocollo http/2.0 che velocizzerà e migliorerà di molto il caricamento delle nostre pagine web...

digitiamo da terminale

16) 
sudo a2enmod http2
nel file di configurazione di apache inseriamo questa voce per abilitare http/2.0

17) 
sudo nano /etc/apache2/apache2.conf
È inseriamo la voce
Protocols h2 h2c http/1.1
diamo un bel:

18)
sudo systemctl restart apache2
abbiamo finito nel configurare protocollo https e installazione del protocollo di comunicazione http/2.0

-------------------------------------

19) Per Nextcloud scaricare il file php di installazione dal link:

Code: Select all

https://download.nextcloud.com/server/installer/setup-nextcloud.php
e copiatelo nella vostra  cartella Nextcloud: Es. (/var/www/Nextcloud)

aprite il vostro browser preferito e fatelo puntare al file php "setup-nextcloud.php"

esempio:=

Code: Select all

 https://www.sitovostro/setup-nextcloud.php
da li partirà step di configurazione in automatico che scaricherà tutto il pacchetto nextcloud in automatico e vi porterà poi alla pagina di prima configurazione,
dove dovrete poi inserire nome utente e password dell'amministratore, e i parametri del database

che se avete seguito la guida saranno:

nome utente = root
password = (quello che avete scelto quando avete installato mariadb sopra)
nome database= Nextcloud (o quello che avete creato accedento a phpmyadmin)

(ricordo che url per creare un database tramite phpmyadmin è https://www.vostrosito/phpmyadmin)

accedete con root e password del database Maria Db che avete scelto cliccate sul pulsante nuovo e date un nome al vostro database (es. nextcloud)

come ip database lasciate "localhost" e cliccate sul pulsante conferma.

----------------------------

20) Dopo installazione Nextcloud egli ci avvertirà di sistemare  4 errori non gravi da sistemare:

1) error hsts in rosso, 
2) la memcache 
3) opcache 
4) error http referrer

questo per gestire al meglio il cloud,

Per errore hsts e Referrer Policy 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 voi dare basta sia il conf che richiama la porta 443 ssl)

Code: Select all

<IfModule mod_headers.c>
Header set Referrer-Policy "no-referrer"
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomai$
</IfModule>
per gli altri 2 errori invece basta modificare il file config.conf di nextcloud situato in 

(https://www.sitovostro/Nextcloud/config/config.php)

aggiungendo la seguente voce sotto le altri simili:

20.1) Per memcache

Code: Select all

'memcache.local' => '\OC\Memcache\APCu',
20.2) Per opcache modificare il file php.ini situato in /etc/php/7.0/fpm con il comando

Code: Select all

sudo nano /etc/php/7.0/fpm/php.ini
aggiungere le seguenti voci al file:

Code: Select all

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 il servizio php fpm con il comando:

Code: Select all

sudo service php7.0-fpm restart
diamo un bel 

Code: Select all

sudo reboot
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 [email protected]
Last edited by tigernero on Tue Jun 25, 2019 5:23 pm, edited 7 times in total.

fMoro
Posts: 1
Joined: Sat May 11, 2019 1:22 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Sat May 11, 2019 1:46 pm

ciao, complimenti per la guida molto dettagliata.
Purtroppo mi sono bloccato al punto 12.1:non ho sinceramente capito cosa bisogna fare. Ho spostato nel desktop il file 000... .conf e l'ho rinominato in nextcloud.conf e poi l'ho rimesso nel percorso precedente. E' giusto?
e al punto 15:non capisco quale sia il percorso di Certbot

tigernero
Posts: 140
Joined: Fri Dec 30, 2016 5:51 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Sat May 11, 2019 5:55 pm

al 12.1 devi praticamente disattivare la configurazione 000, prima pero fai una copia chiamandola nextcloud.conf dove al suo interno modifichi come da guida le voci che ho scritto, questo serve per prepararti per nextcloud.

per il punto certbot ho modificato la guida al punto 14, adesso è piu facile non devi fare piu nulla solo lanciare i comandi e crearti il tuo certificato in base al tuo dominio www.cccc.com o ddns

emaxi14
Posts: 2
Joined: Fri Jul 12, 2019 5:58 am

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Fri Jul 12, 2019 8:14 am

Davvero bella guida.
Ho però un errore quando creo il certificato e la directory rimane /var/www/Nextcloud rimane vuota.

Performing the following challenges:
http-01 challenge for "nomemioserver".ddns.net
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. ederli.ddns.net (http-01): urn:ietf:params:acme: error:connection :: The server could not connect to the client to verify the dom ain :: Fetching http://"nomemioserver"/.well-known/acme-challenge/f6KZEWr1XGNc7U K_W7NVmjvlMsLRzLCOlfSJDIGxMBw: Connection refused

La risoluzione ip è corretta,

emaxi14
Posts: 2
Joined: Fri Jul 12, 2019 5:58 am

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Fri Jul 12, 2019 8:54 am

OK risolto. Non funzionava il nat sulla porta 80 e quindi avevo problemi con il rilascio dei certificati.


markovi
Posts: 1
Joined: Fri Sep 20, 2019 4:40 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Fri Sep 20, 2019 4:49 pm

complimenti per la tua guida, avevo incasinato le cose con una mia modifica manualmente e non riuscivo piu' a risolvere , grazie alla tua guida ho risolto reinstallando tutti i pacchetti e programmi, ora nextcloud oltre ad essere tornato on e' molto piu' veloce , prima era lentissimo,.
volevo chiederti una delucidazione, la stringa che dici di inserire per velocizzare il caricamento delle pagine la posso inserire dove voglio nel .conf oppure devo seguire una procedura (io l ho messo in testa e sembra funzioni).
Grazie e ancora complimenti.
Ciao
Mirko

tigernero
Posts: 140
Joined: Fri Dec 30, 2016 5:51 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Fri Oct 11, 2019 1:35 pm

Parli della stringa h2?

Mettila dove vuoi, funziona uguale io la tengo vicino alle voci delle path del Sito.

Se vuoi gestire ancor più veloce puoi usare la memcache Redis per nextcloud ora alla release 17.0.0

Se vuoi ti aiuto.

ricsantu
Posts: 3
Joined: Sun Oct 13, 2019 5:06 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Sun Oct 13, 2019 5:13 pm

Per Prima Cosa GRAZIE PER LA GUIDA!!
Anche un novizio come me ce l'ha fatta a farlo funzionare….
Per necessità di spazio ho montato un HDD USB esterno al mio Raspberry e lho interfacciato a nextcloud tramite Archiviazioni Esterne.
Ho la sensazione che sia tutto un po' lento… inoltre quando vado a condividere un file (link) contenuto nell'HDD esterno tramite l'app nel telefono mi dice: Request Failed: not found (404) invece se condivito un file sulla memoria tutto ok.
Grazie mille per l'aiuto

tigernero
Posts: 140
Joined: Fri Dec 30, 2016 5:51 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Tue Oct 15, 2019 12:38 pm

Che protocollo hai usato per interfacciarsi con archiviazione esterna? Smb/sftp/ftp?

ricsantu
Posts: 3
Joined: Sun Oct 13, 2019 5:06 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Tue Oct 15, 2019 1:53 pm

Avevo usato internal ma ho dovuto rinunciare… era davvero troppo lento!
Ho montato l'hdd usb al posto della cartella data ed ho copiato i vecchi file che erano nella cartella data originale.
Tutto sembra funzionare al meglio e veloce.
Ho notato invece un errore in giallo:

•Il limite di memoria di PHP è inferiore al valore consigliato di 512MB.

si puo risolvere?
Inoltre mi dice che c'è disponibile un aggiornamento dell'app, è fattibile o ci sono problematiche per farlo?
Grazie infinite

tigernero
Posts: 140
Joined: Fri Dec 30, 2016 5:51 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Fri Oct 18, 2019 5:29 am

Certo che si può risolvere, basta editare il file pop.ini e alla voce "php limit=128MB" mettere 512MB e riavviare.

sudo nano /etc/php/7.3/fpm/php.ini

Cerca e modifica la voce php limit.

Poi riavvia.

Certo che puoi aggiornare ultima release 17.0.0 ciao

ricsantu
Posts: 3
Joined: Sun Oct 13, 2019 5:06 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Fri Oct 18, 2019 9:34 pm

Fatto!!
Tutto ok.. aggiornato e funziona tutto.
Approfitto per fare un altra domanda...
Non riesco a fare lo streaming di file mp3 o
Musicali in generale dai dispositivi mobili... quando cerco di aprire il file con la app nextcloud si apre il player ma non partono mentre se li scarico in locale si.
Ho provato ad istallare l’applicazione player audio ma è uguale.
C’è qualche settaggio da fare?

tigernero
Posts: 140
Joined: Fri Dec 30, 2016 5:51 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Mon Oct 21, 2019 6:20 am

Converti mp3 in mp4 e dovresti risolvere

Spider81man
Posts: 12
Joined: Sat Oct 29, 2016 5:01 am

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Fri Oct 25, 2019 12:21 pm

Ciao,
complimenti per la guida ma perdonami mi sono perso al punto 14, lancio "sudo certbot --apache" ma non ho capito cosa mettere come "url di riferimento".
Grazie ancora

tigernero
Posts: 140
Joined: Fri Dec 30, 2016 5:51 pm

Re: Guida: Apache 2 + Mysql + Phpmyadmin + Nextcloud

Wed Nov 20, 2019 6:53 pm

url di riferimento è il tuo ddns se non hai ip statico, o il nome del tuo spazio web

Return to “Italiano”