cat /etc/debian_version debian: 8.3
uname -s -r -m -o kernel: Linux 3.10.80-20-odrobian armv7l GNU/Linux
Sito di riferimento http://hardkernel.com
Nella sezione download si scelga la directory corrispondente al proprio modello di ODROID
In questa guida viene usata una delle distribuzioni “unofficial” denominata “Odrobian: Debian Jessie with MATE & KODI”
Di seguito il link per scaricare una copia dell'originale –> Odrobian: Debian Jessie with MATE & KODI“
In realtà da questo sito è possibile scaricare due versioni: una con mate (dovrebbe essere il desktop grafico e l'altra con vanilla (essenziale).??
I file di tipo ”.xz” sono file compressi. per decomprimerli si può usare 7Zip per Windows oppure unxz per Linux
Una volta scaricato il file compresso decomprimere con il seguente comando:
unxz ODROBIAN-Jessie-2.0-vanilla-s805.img.xz
Ora dobbiamo trasferire l'immagine decompressa su una schedina microSD
dopo aver individuato l'unità di memoria microSD (ad es. /dev/sdb) eseguire il seguente comando
dd if=ODROBIAN-Jessie-2.0-vanilla-s805.img of=/dev/sdb
In questo modo ci troveremo sulla nostra scheda di memoria due partizioni: BOOT e rootfs
Prima di estrarre la nostra schedina e accendere il nostro Odroid, dobbiamo aprire il file boot.ini nella prima partizione “BOOT” e controllare alcuni parametri se corrispondo al materiale cha bbiamo a disposizione. Ad esempio nel mio caso ho a disposizione un monitor che supporta la risoluzione fullHD 1080 e porta di ingresso VGA. Considerato che l'uscita dell'Odroid è HDMI ho a disposizione anche un cavo adattatore HDMI-VGA.
Prima di proseguire considerate il fatto che ho modificato questo file boot.ini traducendolo in italiano per una migliore comprensione.
Pertanto se guardiamo il contenuto del file nella prima sezione possiamo notare che tutte le righe sono commentate tranne la 720p. Ma noi possiamo commentarla e decommentare quella corrispondente a 1080p.
Inoltre dobbiamo specificare nella seconda sezione, il tipo di connessione che non sarà quindi HDMI come quella di default ma VGA.
modificare
# HDMI DVI Mode Configuration setenv vout_mode "hdmi" # setenv vout_mode "dvi" # setenv vout_mode "vga"
con
# HDMI DVI Mode Configuration # setenv vout_mode "hdmi" # setenv vout_mode "dvi" setenv vout_mode "vga"
Ora si può smontare la schedina dal PC e inserirla nell'odroid per il primo avvio
Il sistema parte e tra le operazioni di avvio c'è quella di espansione della seconda partizione “rootfs” che andrà ad occupare interamente lo spazio non ancora occupato della microSD.
Se tutto procede senza interruzioni dopo circa 2 minuti vi troverete a video la consolle per il login: root password odroid
Se invece il sistema si blocca probabilmente c'è un problema di memoria della scheda microSD ovvero non tutte le schedine sono uguali e possono avere un sistema di gestione differente. Pertanto si proverà a risolvere con la seguente procedura:
Smontare la schedina dall'odroid e rimontarla su pc ed editare il file boot.ini modificando la seguente sezione
da
# Configurazione per le UHS Card # Togliere il commento alla riga sotto per DISABILITARE il supporto alle MicroSD UHS-1 # Questo può interrompere il boot per alcuni modelli di marca di schede. setenv disableuhs "disableuhs"
a
# Configurazione per le UHS Card # Togliere il commento alla riga sotto per DISABILITARE il supporto alle MicroSD UHS-1 # Questo può interrompere il boot per alcuni modelli di marca di schede. # setenv disableuhs "disableuhs"
Se anche questa procedura fallisce dobbiamo rismontare nuovamente la micro e rimontarla su un pc che abbia a disposizione “GParted”.
Dovremo effettuare manualmente l'espansione della seconda partizione. (per la procedura si veda guida a parte).
Successivamente dobbiamo modificare nuovamente il file boot.ini nella sezione “Argomenti di boot” modificando il parametro relativo la posizione del dispositivo in cui si troverà la directory root
da
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
a
setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
A questo punto il sistema deve partire.
Nel caso in cui si voglia realizzare un server (questo è il mio caso) non c'è bisogno del video quindi di seguito i passi per disattivare l'uscita HDMI e recuperare quindi un po' di RAM che non guasta mai.
Modificare come di seguito il file boot.ini nell'apposita sezione:
# Disabilita l'uscita HDMI # 0 = disabled # 1 = enabled setenv hdmioutput "0"
inoltre
possiamo aumentare la RAM virtuale da 1 a 2GB con il seguente comando che sostanzialmente crea lo spazio di swap:
enable-zram
altrimenti per tornare alle impostazioni di default:
disable-zram
entrambi i comandi comportano il riavvio del sistema.
Se abbiamo avviato il sistema senza video dobbiamo necessariamente collegarci tramite ssh al nostro odroid.
Quindi solo se abbiamo nella nostra rete un DHCP possiamo scansionarla con nmap (ad esempio) per cercare tra gli altri il nostro odroid.
Ci colleghiamo nel seguente modo:
ssh root@192.168.1.110
L' IP suggerito è indicativo… voi ne avrete sicuramente un'altro.
Confermate alla richiesta di accettazione della chiave ECDSA
e dopo aver digitato la password “odroid” sarete a consolle.
Se avete effettuato l'avvio a video sarete già dentro pronti per modificare l'impostazione della tastiera
La prima cosa da fare è:
apt-get update
Installiamo i seguenti pacchetti:
apt-get install keyboard-configuration console-data console-setup locales
Al termine dell'installazione parte automaticamente la procedura per la selezione del layout e noi sceglieremo la quarta opzione che ci permette di scegliere tra tutte le opzioni disponibili ovvero la “italian standard standard”.
Inoltre ho notato che il comando più importante è locales che permette di selezionare non solo la lingua ma il linguaggio (IT) per l'esecuzione di diversi comandi.
Se non si fa questa operazione appariranno diversi errori relativi la lingua quando si eseguono i comandi tipo enable-zram e altri.
Prima di proseguire verifichiamo la data e l'ora che siano giuste e corrispondenti al nostro fuso orario e per l'Italia se l'orario è solare o legale.
Questo passaggio è importante anche nel caso in cui non dobbiate utilizzare a video direttamente l'odroid ma lo utilizziate come server perchè la data e l'ora devono sempre essere allineate.
date Sat May 21 10:19:56 UTC 2016
Nel mio caso (sono le ore 12:19) il sistema risulta indietro di 2 ore. Infatti il sistema essendo collegato a internet si è sincronizzato sulle informazioni base ovvero Fuso orario di Greenwich, ma noi siamo in Italia +1 e con l'ora legale +1 in totale avanti di 2 ore. Pertanto aggiustiamo l'ora installando il seguente pacchetto:
apt-get install tzdata
poi
dpkg-reconfigure tzdata
e seguendo la procedura guidata selezioniamo la città preferita. E se ridigitiamo il comando date avremo l'ora e la data aggiornate:
date Sat May 21 12:23:40 CEST 2016
Sia che abbiamo deciso di effettuare l'avvio in modalità “server” o che abbiamo scelto la modalità video, procediamo di seguito per il settaggio dell'indirizzo ip da dinamico a statico:
Editiamo il file interfaces
vi /etc/network/interfaces
l'originale
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
va modificato come di seguito:
source-directory /etc/network/interfaces.d auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.110 netmask 255.255.255.0 gateway 192.168.1.1 dns-servers 8.8.8.8
Ora abbiamo un sistema odroid basato su Debian base.
Digitiamo il seguente comando e verifichiamo le informazioni base del sistema LINUX.
uname -a Linux odroid-jessie 3.10.80 #17 SMP PREEMPT Sat Oct 31 12:44:33 CET 2015 armv7l GNU/Linux
Riavviamo odroid e accertiamoci che sia attivo l'ip da noi assegnato e prima di fare l'upgrade dei pacchetti trasferiamo il contenuto della seconda partizione, cioè la ”/“ ovvero la “rootfs” vista all'inizio, su un disco USB esterno.
Si sa che le microSD hanno una vita limitata, di conseguenza può essere molto utile lavorare con un hdd esterno, vediamo come fare.
Ipotizziamo l'uso di un hdd esterno USB (da 2,5 o 3,5 non importa, l'importante è che il collegamento sia USB). Una volta connesso possiamo eseguire
dmesg
per identificare il device
[ 9032.990136] usb 1-1.1: new high-speed USB device number 4 using dwc_otg [ 9033.091814] usb-storage 1-1.1:1.0: USB Mass Storage device detected [ 9033.092871] usb-storage 1-1.1:1.0: Quirks match for vid 05e3 pid 0702: 520 [ 9033.099924] scsi0 : usb-storage 1-1.1:1.0 [ 9034.101936] scsi 0:0:0:0: Direct-Access Hitachi HTS541212H9AT00 0811 PQ: 0 ANSI: 0 [ 9034.106060] sd 0:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/111 GiB) [ 9034.114457] sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled [ 9034.119576] sd 0:0:0:0: [sda] Cache data unavailable [ 9034.123785] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 9034.132239] sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled [ 9034.137123] sd 0:0:0:0: [sda] Cache data unavailable [ 9034.141495] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 9034.533118] sda: sda1 sda2 sda3 [ 9034.537402] sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled [ 9034.539062] sd 0:0:0:0: [sda] Cache data unavailable [ 9034.545507] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 9034.549671] sd 0:0:0:0: [sda] Attached SCSI disk
Il disco esterno è quindi /dev/sda che contiene 3 partizioni in questo caso sda1 sda2 sda3. Se abbiamo bisogno di rivedere il partizionamento per adattarlo al nostro bisogno usiamo fdisk
Ipotiziammo di avere un'unica partizione sulla quale vorremo installare il nostro raspbian. Dobbiamo innanzitutto formattarla:
mke2fs -t ext4 -L rootfs /dev/sdxx
Ora la montiamo
mount /dev/sdxx /mnt
Ma prima di iniziare la copia dobbiamo installare “rsync” quindi
apt-get install rsync
Ora copiamo tutto su hdd
rsync -axv / /mnt
Una volta terminat la copia apriamo il file
vi /boot/boot.ini
e se vi ricordate eravamo già intervenuto nella modifica della sezione “Argomenti di boot” modificando il parametro relativo la posizione del dispositivo in cui si troverà la directory root
modificheremo quindi da
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
oppure
setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
a
setenv bootargs "root=/dev/sdaxxx rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
ho notato che non c'è bisogno di modificare il file /etc/fstab in quanto è presente nella riga di montaggio della partizione root l'opzione errors=remount-ro che in caso di errore sul codice UUID va automaticamente a montare quanto indicato tra gli argomenti di boot del file boot.ini
altrimenti se si vuole essere più coerenti e lineari modificare anche il file /etc/fstab e sostituire
UUID=e139ce78-9841-40fe-8823-96a304a09859 / ext4 defaults,noatime 0 1
CON
/dev/sdaxxx / ext4 defaults,noatime 0 1
Possiamo riavviare e una volta riaperta la shell verificare di usare realmente l'hdd esterno digitando:
df
e l'output mostrerà se effettivamente la partizione / radice è stata montata dal dispositivo /dev/sdaxxx
Ce ne accorgeremo anche dal fatto che il led dell'hard disk subito dopo il riavvio inizierà a lampeggiare segno che sta lavorando.
Non ho però fatto la prova a tenere solo il main dei repositori togliendo il contrib e il non-free….
Ora se vogliamo mantenere un sistema aggiornato e possibilmente sicuro, dobbiamo effettuare l'upgrade dei pacchetti della distribuzione lanciando un bel:
root@odroid:~# apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: linux-image-odrobian-s805 The following packages will be upgraded: apt apt-utils base-files cpio gnupg gpgv initramfs-tools libapt-inst1.5 libapt-pkg4.12 libc-bin libc6 libdns-export100 libhogweed2 libidn11 libirs-export91 libisc-export95 libisccfg-export90 libnettle4 libpam-modules libpam-modules-bin libpam0g libpcre3 libssl1.0.0 libsystemd0 libtasn1-6 libudev1 locales multiarch-support odrobian-platform-s805 openssh-client openssh-server openssh-sftp-server openssl perl-base ssh systemd systemd-sysv udev 38 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 22.4 MB of archives. After this operation, 244 kB disk space will be freed. Do you want to continue? [Y/n]
e confermando con “Y”
questa è la prova fata tenendo solo il “main” e si può notare anche le impostazioni in italiano fatte prima con il comando locales, tzdata ecc..
root@odroid:~# apt-get upgrade Lettura elenco dei pacchetti... Fatto Generazione albero delle dipendenze Lettura informazioni sullo stato... Fatto Calcolo dell'aggiornamento... Eseguito I seguenti pacchetti sono stati mantenuti alla versione attuale: linux-image-odrobian-s805 I seguenti pacchetti saranno aggiornati: apt apt-utils base-files cpio gnupg gpgv initramfs-tools libapt-inst1.5 libapt-pkg4.12 libc-bin libc6 libdns-export100 libhogweed2 libidn11 libirs-export91 libisc-export95 libisccfg-export90 libnettle4 libpam-modules libpam-modules-bin libpam0g libpcre3 libssl1.0.0 libsystemd0 libtasn1-6 libudev1 multiarch-support odrobian-platform-s805 openssh-client openssh-server openssh-sftp-server openssl perl-base ssh systemd systemd-sysv udev 37 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati. � necessario scaricare 18,4 MB di archivi. Dopo quest'operazione, verranno liberati 639 kB di spazio su disco. Continuare? [S/n]
Mentre lo lasciamo lavorare sarebbe bello poter perdere qualche minuto per capire come funzionano gli aggiornamenti e i repository di debian, ma non essendo ancora sufficientemente preparato per spiegarveli, vi rimando alla documentazione ufficiale qui –> http://guide.debianizzati.org/index.php/I_repository_ed_il_loro_utilizzo
verifichiamo l'esito dell'upgrade:
cat /etc/debian_version 8.4 uname -s -r -m -o Linux 3.10.80-20-odrobian armv7l GNU/Linux
come possiamo notare l'upgrade ha aggiornato la Debian Jessie dalla 8.3 alla 8.4
Invece il seguente comando aggiorna la versione di linux (questo primo listato riguarda la prima prova fatta con anche il “contrib” e il “non-free” e in inglese)
root@odroid:~# apt-get dist-upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... The following package was automatically installed and is no longer required: linux-image-3.10.96-45-odrobian Use 'apt-get autoremove' to remove it. Done The following NEW packages will be installed: linux-image-3.10.96-45-odrobian The following packages have been kept back: linux-image-odrobian-s805 0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. Need to get 11.8 MB of archives. After this operation, 35.3 MB of additional disk space will be used. Do you want to continue? [Y/n]
questo è il listasto della prova fatta senza “contrib” e senza “non-free” e in italiano
root@odroid:~# apt-get dist-upgrade Lettura elenco dei pacchetti... Fatto Generazione albero delle dipendenze Lettura informazioni sullo stato... Fatto Calcolo dell'aggiornamento... Il seguente pacchetto � stato installato automaticamente e non � pi� richiesto: linux-image-3.10.96-45-odrobian Usare "apt-get autoremove" per rimuoverlo. Eseguito I seguenti pacchetti NUOVI saranno installati: linux-image-3.10.96-45-odrobian I seguenti pacchetti sono stati mantenuti alla versione attuale: linux-image-odrobian-s805 0 aggiornati, 1 installati, 0 da rimuovere e 1 non aggiornati. � necessario scaricare 11,8 MB di archivi. Dopo quest'operazione, verranno occupati 35,3 MB di spazio su disco. Continuare? [S/n]
verifichiamo l'esito del dist-upgrade:
cat /etc/debian_version 8.4 uname -s -r -m -o Linux 3.10.96-45-odrobian armv7l GNU/Linux
Perfetto! ora abbiamo un sistema operativo base perfettamente aggiornato al 22-05-2016
Si sta comunque parlando di realizzare un server, quindi ora si comincia con l'installazione dei software che vogliamo diventi servizi a disposizione per le nostre esigenze.
Il primo servizio per eccellenza è il “server web” che viene realizzato da:
“Apache” che si installa con il seguente comando:
root@odroid:~# apt-get install apache2 Lettura elenco dei pacchetti... Fatto Generazione albero delle dipendenze Lettura informazioni sullo stato... Fatto I seguenti pacchetti saranno inoltre installati: apache2-bin apache2-data apache2-utils file libalgorithm-c3-perl libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libarchive-extract-perl libcgi-fast-perl libcgi-pm-perl libclass-c3-perl libclass-c3-xs-perl libcpan-meta-perl libdata-optlist-perl libdata-section-perl libexpat1 libfcgi-perl libldap-2.4-2 liblog-message-perl liblog-message-simple-perl liblua5.1-0 libmagic1 libmodule-build-perl libmodule-pluggable-perl libmodule-signature-perl libmro-compat-perl libpackage-constants-perl libparams-util-perl libpod-latex-perl libpod-readme-perl libregexp-common-perl libsasl2-2 libsasl2-modules libsasl2-modules-db libsoftware-license-perl libsqlite3-0 libsub-exporter-perl libsub-install-perl libterm-ui-perl libtext-soundex-perl libtext-template-perl libxml2 mime-support perl perl-modules rename sgml-base ssl-cert xml-core Pacchetti suggeriti: www-browser apache2-doc apache2-suexec-pristine apache2-suexec-custom libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl make libb-lint-perl libcpanplus-dist-build-perl libcpanplus-perl libfile-checktree-perl libobject-accessor-perl sgml-base-doc openssl-blacklist debhelper Pacchetti raccomandati: libarchive-tar-perl I seguenti pacchetti NUOVI saranno installati: apache2 apache2-bin apache2-data apache2-utils file libalgorithm-c3-perl libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libarchive-extract-perl libcgi-fast-perl libcgi-pm-perl libclass-c3-perl libclass-c3-xs-perl libcpan-meta-perl libdata-optlist-perl libdata-section-perl libexpat1 libfcgi-perl libldap-2.4-2 liblog-message-perl liblog-message-simple-perl liblua5.1-0 libmagic1 libmodule-build-perl libmodule-pluggable-perl libmodule-signature-perl libmro-compat-perl libpackage-constants-perl libparams-util-perl libpod-latex-perl libpod-readme-perl libregexp-common-perl libsasl2-2 libsasl2-modules libsasl2-modules-db libsoftware-license-perl libsqlite3-0 libsub-exporter-perl libsub-install-perl libterm-ui-perl libtext-soundex-perl libtext-template-perl libxml2 mime-support perl perl-modules rename sgml-base ssl-cert xml-core 0 aggiornati, 52 installati, 0 da rimuovere e 1 non aggiornati. � necessario scaricare 9.754 kB di archivi. Dopo quest'operazione, verranno occupati 42,1 MB di spazio su disco. Continuare? [S/n]
Grzie a questi pacchetti installati possiamo già cominciare a usufruire di un servizio “grafico”. Infatti collegandoci a http:\\indirizzoIP\ verrà visualizzata la pagina di benvenuto del server web Apache appena installato.
root@odroid:~# apt-get install apache2 php5-mysql mysql-server Lettura elenco dei pacchetti... Fatto Generazione albero delle dipendenze Lettura informazioni sullo stato... Fatto I seguenti pacchetti saranno inoltre installati: apache2-bin apache2-data apache2-utils file libaio1 libalgorithm-c3-perl libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libarchive-extract-perl libcgi-fast-perl libcgi-pm-perl libclass-c3-perl libclass-c3-xs-perl libcpan-meta-perl libdata-optlist-perl libdata-section-perl libdbd-mysql-perl libdbi-perl libexpat1 libfcgi-perl libhtml-template-perl libldap-2.4-2 liblog-message-perl liblog-message-simple-perl liblua5.1-0 libmagic1 libmodule-build-perl libmodule-pluggable-perl libmodule-signature-perl libmro-compat-perl libmysqlclient18 libpackage-constants-perl libparams-util-perl libperl4-corelibs-perl libpod-latex-perl libpod-readme-perl libregexp-common-perl libsasl2-2 libsasl2-modules libsasl2-modules-db libsoftware-license-perl libsqlite3-0 libsub-exporter-perl libsub-install-perl libterm-readkey-perl libterm-ui-perl libtext-soundex-perl libtext-template-perl libxml2 lsof mime-support mysql-client-5.5 mysql-common mysql-server-5.5 mysql-server-core-5.5 perl perl-modules php5-common psmisc rename sgml-base ssl-cert xml-core Pacchetti suggeriti: www-browser apache2-doc apache2-suexec-pristine apache2-suexec-custom libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl libipc-sharedcache-perl libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal mailx tinyca perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl make libb-lint-perl libcpanplus-dist-build-perl libcpanplus-perl libfile-checktree-perl libobject-accessor-perl php5-user-cache sgml-base-doc openssl-blacklist debhelper Pacchetti raccomandati: libarchive-tar-perl I seguenti pacchetti NUOVI saranno installati: apache2 apache2-bin apache2-data apache2-utils file libaio1 libalgorithm-c3-perl libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libarchive-extract-perl libcgi-fast-perl libcgi-pm-perl libclass-c3-perl libclass-c3-xs-perl libcpan-meta-perl libdata-optlist-perl libdata-section-perl libdbd-mysql-perl libdbi-perl libexpat1 libfcgi-perl libhtml-template-perl libldap-2.4-2 liblog-message-perl liblog-message-simple-perl liblua5.1-0 libmagic1 libmodule-build-perl libmodule-pluggable-perl libmodule-signature-perl libmro-compat-perl libmysqlclient18 libpackage-constants-perl libparams-util-perl libperl4-corelibs-perl libpod-latex-perl libpod-readme-perl libregexp-common-perl libsasl2-2 libsasl2-modules libsasl2-modules-db libsoftware-license-perl libsqlite3-0 libsub-exporter-perl libsub-install-perl libterm-readkey-perl libterm-ui-perl libtext-soundex-perl libtext-template-perl libxml2 lsof mime-support mysql-client-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5 perl perl-modules php5-common php5-mysql psmisc rename sgml-base ssl-cert xml-core 0 aggiornati, 68 installati, 0 da rimuovere e 1 non aggiornati. � necessario scaricare 19,1 MB di archivi. Dopo quest'operazione, verranno occupati 130 MB di spazio su disco. Continuare? [S/n]
Ok, ma c'è una cosa molto importante ora da verificare, cioè la versione del nostro server web Apache.
apt-chce show apache2 Package: apache2 Version: 2.4.10-10+deb8u4 Installed-Size: 348 Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org> Architecture: armhf Replaces: apache2.2-common, libapache2-mod-macro (<< 1:2.4.6-1~) Provides: httpd, httpd-cgi Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.10-10+deb8u4), apache2-utils (>= 2.4), apache2-data (= 2.4.10-10+deb8u4) Pre-Depends: dpkg (>= 1.17.14) Recommends: ssl-cert Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-suexec-custom Conflicts: apache2.2-common (<< 2.3~) Breaks: libapache2-mod-macro (<< 1:2.4.6-1~) Description-it: server HTTP Apache L'obiettivo dell'Apache HTTP Server Project � di realizzare un server HTTP sicuro, efficiente, estensibile, open source e che segue gli standard. Apache �, ormai da lungo tempo, il pi� utilizzato server web su Internet. . L'installazione di questo pacchetto ha come risultato un'installazione completa, compresi i file di configurazione, gli script init e gli script di supporto. Description-md5: d02426bc360345e5acd45367716dc35c Homepage: http://httpd.apache.org/ Tag: role::metapackage, suite::apache Section: httpd Priority: optional Filename: pool/main/a/apache2/apache2_2.4.10-10+deb8u4_armhf.deb Size: 205290 MD5sum: 365d184a2dc772fdda2e3f96e5d75bbf SHA1: 363439c503f9e8c780510fb1ea1688f6ff45c9a1 SHA256: 64e49f35e959e68b00fd953a993cfb63c7b6d122d54a7fc5c0df866bd0d6c83c Package: apache2 Version: 2.4.10-10+deb8u1 Installed-Size: 348 Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org> Architecture: armhf Replaces: apache2.2-common Provides: httpd, httpd-cgi Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.10-10+deb8u1), apache2-utils (>= 2.4), apache2-data (= 2.4.10-10+deb8u1) Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-suexec-custom Conflicts: apache2.2-common (<< 2.3~) Description-it: server HTTP Apache L'obiettivo dell'Apache HTTP Server Project � di realizzare un server HTTP sicuro, efficiente, estensibile, open source e che segue gli standard. Apache �, ormai da lungo tempo, il pi� utilizzato server web su Internet. . L'installazione di questo pacchetto ha come risultato un'installazione completa, compresi i file di configurazione, gli script init e gli script di supporto. Description-md5: d02426bc360345e5acd45367716dc35c Homepage: http://httpd.apache.org/ Pre-Depends: dpkg (>= 1.17.14) Recommends: ssl-cert Section: httpd Priority: optional Filename: pool/updates/main/a/apache2/apache2_2.4.10-10+deb8u1_armhf.deb Size: 204938 MD5sum: 82daf8e1afcd3fa8dbbe163510635074 SHA1: a25c0529c11d9b07eec7f12ef2b8f03c0c08c9df SHA256: 5ec9e2b628ecdc04c462fe4826949c92a799628f46ec5d7f1b1cc546d3e30eb6
Curioso il fatto che mostri le informazioni per 2 pacchetti installati, quello instllato inizialmente con la distribuzione e poi quello aggiornato…. coh sinceramente dovrei approfondire. Comunque si tratta della versione 2.4.10 e specificamente aggiornato con la Debian 8.4
Ora però parliamo di come sendere sicuro e protetto il nostro server web Apache tenendo presente alcune nozioni di base(il listato seguente non è il risultato di un comando ma un elenco autoprodotto di informazioni):
Document root Directory: /var/www/html or /var/www Main Configuration file: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) and /etc/apache/apache2.conf (Debian/Ubuntu). Default HTTP Port: 80 TCP Default HTTPS Port: 443 TCP Test your Configuration file settings and syntax: httpd -t Access Log files of Web Server: /var/log/httpd/access_log Error Log files of Web Server: /var/log/httpd/error_log
Beh prima di tutto è opportuno nascondere le informazioni della versione di Apache e del sistema operativo in caso di errore restituito al browser nel caso ad es. di una pagina non trovata.
Quindi editiamo il file /etc/apache2/apache2.conf e aggiungiamo in fondo:
ServerSignature Off
Un altro passo importante è disattivare la visualizzazione a lista delle directory in uso al server Apache. Per una questione di sicurezza è opportuno non farle vedere, altrimenti se serve bisogna limitarlo allo stretto indispensabile tramite direttiva da dare alle directory esposte.
Ma ora devo capire la gestione dei moduli, perchè se non sbaglio c'è la possibilità di disattivare direttamente il modulo che permette la visualizzazione a lista delle directory. Ma da usare correttamente perchè se ho bisogno di una situazione mistsa non si deve disattivarlo ma si interverrà sulle singole impostazioni.
Infatti ad es. ho attivato a manina il modulo “ssl” che di default non è attivo.
a2enmod ssl
Ma ritornando all'attivazione o meno della visualizzazione a directory, il modulo dir_module di default è attivo!! QUindi non è possibile visualizzare sotto forma di directory la directory “base” indicata appunto del file .conf del “sito” abilitato.
Non so se sono stato chiaro.
Argomento ancora nebulo, infatti non sono sicuro che attivando o disattivando il modulo dir_module in effetti non permetta la visualizzazione delle directory. Quanto piuttosto è invece necessario agire direttamente all'interno del blocco Directory del file conf o dei vari conf dei siti e usare la direttiva Option Indexes. Si in effetti è così.
Inoltre la direttiva DocumentRoot all'interno dei file .conf dei vari siti disponibili dice da dove inizia (radice, root) la lettura dei file che vengono esposti dal server web.
Invece il blocco <Directory percorso assoluto > specifica tramite ulteriori direttive i diritti o le opzioni da applicare all directory specificata.
questo per poter eventualmente differenziare le impostazioni e i modi di accedere ad ogni singola cartella o spazio o directory.
tratto da:
altro comando utile è apache2ctl per vedere lo stato delle cose
ad sempio
apache2ctl -M
dovrebbe visualizzare i moduli caricati.
Mi sembra di aver letto da qualche parte che i due comandi: apache2 e apache2ctl hanno una differenza, ovvero il primo esegue il server senza le variabili il secondo invece con le variabili.
E' ancora incasinato ma a questi 2 comandi si possono dare delle opzioni che non apache2 non funzionano invece con apache2ctl si.
DocumentRoot is the location on your web server from which the web server will serve files if a user visits http://prestashop16.dev/. All of your web-visible files should be at or below that folder's level.
The Directory block lets you specify Apache configuration rules that should only apply to a specific directory.
The two do not have to match, and a <Directory> block can be placed within a VirtualHost block or in the general server config, according the the Apache docs.
Also, you can have multiple Directory blocks. For example, if your DocumentRoot was var/www and you wanted to restrict access to /var/www/private you could create <Directory /var/www/private></Directory> block and place your desired security configurations in there without affecting other folders.