Guida alla realizzazione di un sistema informatico economico domestico basato su GNU/Linux
Nella vita quotidiana ci sono servizi informatici ormai divenuti indispensabili per qualsiasi famiglia quali internet inteso come Worl Wide Web, la posta elettronica, la disponibilità dei dati e la sicurezza domestica.Tutto ciò comporta dei costi che tuttavia possono essere anche contenuti, o perlomeno accettabili sia di materiali che di energia. Ma se ci pensiamo attentamente il costo più alto che dobbiamo sostenere per avere questi servizi è dato dal consegnare in mano a grandi multinazionali le informazioni della nostra vita privata. L'esempio più eclatante è la posta elettronica.
Chi tra di noi non ha almeno un account di posta Google o MSN o Yahoo o Libero??? Chi tra di noi non ha almeno un account Facebook, Twitter, Instagram ecc.??? Tutte le volte che scriviamo una mail o scriviamo commenti su qualche social network lasciamo tracce di noi, del nostro passaggio, delle nostre idee, dei nostri affari privati. E giustamente qualcuno potrà dire: “Vabbè che problema c'è???” Se le cose funzionano così lasciamo che sia!!! Certo nulla da ridire.
Io però ho scoperto che grazie all'aiuto di una grande comunità mondiale di persone appassionate di informatica è possibile ridurre anche se di poco i costi legati ad una moderna informatizzazione si ain termini di privacy sia in termini economici.
Quindi per giungere al termine di questa introduzione e presentare gli aspetti tecnici di questa guida comincio a elencare i principali elementi che si distinguono in: materiale hardware per l'alimentazione elettrica, materiale hardware per il sistema informatico, materiale software per il sistema informatico.
Materiale hardware per l'alimentazione elettrica:
-Due pannelli fotovoltaici da 250Wp
-Un regolatore di carica mmp da 30A
-Una batteria da 100Ah
-Un alimentatore DC da 12V
-Un PicoUPS con batteria tampone
-Due relè, interruttori e cavetteria varia.
Materiale hardware per il sistema informatico:
-Due raspberry Pi 3 mod.B
-Due microSD (le più economiche)
-Due hdd SSD
-Un Modem Router SwitchADSL
-Un PC client per la programmazione e lo sviluppo.
Materiale software per il sistema informatico.
-Sistema operativo Fedora Linux Server per armh
-Sistema di ridondanza dei dischi (Drbd)
-Sistema per un cluster di failover (coroysnc pacemaker)
-Database per la raccolda dei dati (MariaDB)
-Server web (Apache)
-Server di Posta (Postfix Dovecot)
-Applicativi web (Postfixadmin Roundcubemail)
-Applicativo per videosorveglianza (Zoneminder)
La scelta del Raspberry PI come base per il sistema informatico è nata come sfida al consumo di energia elettrica e sopra tutto una nuova sfida all'utilizzo di un dispositivo moderno e innovativo che non conoscevo. Inoltre avevo il desiderio di realizzare un server sempre attivo h24 silenzioso e di dimensioni ridotte e ad un prezzo ancora più ridotto rispetto ad un server tradizionale!
Ma veniamo al punto di unione tra l'hardware e il software ovvero il sistema operativo. Dopo una lunga ricerca e lunghissime ore passate a fare test e verifiche la scelta è caduta su Fedora Server. Esiste un progetto specifico per l'architettura arm (https://arm.fedoraproject.org/) dal quale è possibile scaricare l'immagine raw da installare. Io vi metto a disposizione qui nel mio mirror quella che ho usato e scaricato a suo tempo dal sito di Fedoraproject.
Teniamo sempre presente che questa guida è valida fino al momento della stesura, da quella data in poi non è più detto che quello che ho scritto funzioni a causa degli innumerevoli cambiamenti del mondo opensource e freesoftware.
Per questo motivo metto a disposizione su questo sito tutto il software necessario per realizzare questa guida. Cioè se state leggendo questa pagina sicuramente avrete a disposizione il mio repo dal quale scaricare esattamente le cose che qui cito. Infatti la cosa più insopportabile delle guide online è il rimando a dei pacchetti o dei repository che poi nel frattempo sono cambiati. Qui troverete tutto per far funzionare quello che dico.
Poi è chiaro che sperimentare e avere come riferimento i repo originali è la cosa più didattica.
Bene! ora cominciamo con le cose pratiche.
La RaspberryPI effettua il boot dalla prima partizione di una SD card, necessariamente formattata con la FAT32(vfat). La partizione sarà montata su /boot/ e conterrà il kernel, il bootloader di secondo livello, ecc..
Per il nostro progetto sarà quindi sufficiente partizionare la schedina creando una semplice partizione primaria di 128M.
Ora ci troviamo davanti ad un qualsiasi PC dotato di apposito lettore per microSD e dopo aver inserito la card nel lettore apriamo il terminale e verifichiamo che sia stata correttamente riconosciuta, controlliamo con dmesg o con fdisk -l poi procediamo con il partizionamento:
Nel mio caso la schedina veniva riconosciuta con /dev/sdb. (Come S.O. ho usato una Debian 8).
#fdisk /dev/sdb Welcome to fdisk (util-linux 2.25.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
digitiamo p per visualizzare lo stato di partizionamento. Se dovessero esserci già altre partizioni, eliminiamole con il comando d e seguiamo le istruzioni. (per l'utilizzo approfondito di fdisk vi rimando alla documentazione ufficiale.
Dopo aver eliminato tutte le partizioni dovremmo avere una situazione tipo questa:
Disk /dev/sdb: 7,2 GiB, 7742685184 bytes, 15122432 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc1356df5 Command (m for help):
Quindi premiamo “n” e seguiamo le istruzioni come di seguito per creare una partizione da 128M
Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p.
invio
Partition number (1-4, default 1):
invio
First sector (2048-15122431, default 2048):
invio
Last sector, +sectors or +size{K,M,G,T,P} (2048-15122431, default 15122431):
+128M invio
Created a new partition 1 of type 'Linux' and of size 128 MiB. Command (m for help):
Ok partizione creata ma questa è di tipo “linux” invece deve essere di tipo fat32 quindi digitiamo t e seguiamo le istruzioni come di seguito:
Selected partition 1 Hex code (type L to list all codes):
b invio
If you have created or modified any DOS 6.x partitions, please see the fdisk documentation for additional information. Changed type of partition 'Linux' to 'W95 FAT32'. Command (m for help):
ed in fine ridigitiamo “p” per visualizzare la situazione che dovrebbe essere tipo la seguente:
Disk /dev/sdb: 7,2 GiB, 7742685184 bytes, 15122432 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc1356df5 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 264191 262144 128M b W95 FAT32 Command (m for help):
Ora possiamo digitare “w” e scrivere definitivamente la partition table.
The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Siamo pronti per formattare la partizione appena creata destinata ad ospitare quindi la directory /boot del nostro S.O.Linux
mkfs.vfat /dev/sdb1 mkfs.fat 3.0.27 (2014-11-12)
Prima di procedere dobbiamo ora tenere nota dell'UUID della nostra partizione, ci servirà più avanti.
blkid |grep sdb1 /dev/sdb1: SEC_TYPE="msdos" UUID="DB15-4A51" TYPE="vfat" PARTUUID="c1356df5-01"
Bene, ora procediamo al partizionamento del nostro SSD identificandolo in modo simile a quanto fatto prima. Nel mio caso /dev/sdc
fdisk /dev/sdc
Anche qui se sono presenti partizioni le possiamo eliminare e creiamo subito una nuova partizione da 2 GB che sarà il nostro spazio di swap e la partizione per il S.O. da 5GB o da 10 in base allo spazio che vogliamo dedicare.
Non sto a ripetere tutti i passaggi per la creazione delle partizioni vedremo solo di seguito quale sarà la situazione finale del nostro SSD
Ricordiamoci però che i tipi di partizione dovranno essere di swap per la prima e ext4 per la / root che ospita il S.O. pertanto dopo aver creato la prima partizione digitamo: t e 82 che identifica il tipo swap e dopo aver creato la seconda digitiamo t e 83. Infine w per rendere definitivi i cambiamenti. quindi avremo:
Disk /dev/sdc: 111,8 GiB, 120034123776 bytes, 234441648 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x6e9033d9 Device Boot Start End Sectors Size Id Type /dev/sdc1 2048 4196351 4194304 2G 82 Linux swap / Solaris /dev/sdc2 4196352 25167871 20971520 10G 83 Linux Command (m for help):
anche qui dobbiamo formattare le partizioni:
mkfs.ext4 /dev/sdc2
e
mkswap /dev/sdc1
quindi tenere nota degli UUID delle partizioni
blkid |grep sdc /dev/sdc1: UUID="a1fdee3b-375d-4d34-81a7-6267603ccb49" TYPE="swap" PARTUUID="6e9033d9-01" /dev/sdc2: UUID="d8f379fd-adf6-4402-9d2d-7dcaeacdc082" TYPE="ext4" PARTUUID="6e9033d9-02"
ora che abbiamo il posto in cui andare a sistemare il S.O. decomprimiamo l'immagine che abbiamo scaricato da [http://www.stefanostrozzi.it/mirror/Fedora-Server-armhfp-24-1.2-sda.raw.xz|qui]
decomprimere:
unxz Fedora-Server-armhfp-24-1.2-sda.raw.xz
creiamo una directory provvisoria che ci servirà per montare l'immagine
mkdir /tmp/img
carichiamola su un dispositivo temporaneo
losetup --partscan --find --show Fedora-Server-armhfp-24-1.2-sda.raw /dev/loop0
e ora montiamo solo la partizione nr3 che corrisponde alla / root sulla directory temporanea
mount -r /dev/loop0p3 /tmp/img/
creiamo un'altra directory che conterrà i file che andranno definitivamente sulle nuove partizioni
mkdir /tmp/rpi
quindi montiamo la seconda partizione del nostro disco SSD(quella formattata in ext4) su quest'ultima directory
mount /dev/sdc2 /tmp/rpi
quindi creiamo la directory boot che sarà montata con la micro contenente la partizione formattata in fat32
mkdir /tmp/rpi/boot
e allora montiamo stavolta la partizione della schedina su quest'ultima directory
mount /dev/sdb1 /tmp/rpi/boot/
se siamo pignoli e vogliamo verificare digitiamo df per vedere lo stato dei montaggi:
File system 1K-blocchi Usati Disponib. Uso% Montato su /dev/sda12 201454560 82534368 108663808 44% / udev 10240 0 10240 0% /dev tmpfs 787708 9372 778336 2% /run tmpfs 1969268 68 1969200 1% /dev/shm tmpfs 5120 4 5116 1% /run/lock tmpfs 1969268 0 1969268 0% /sys/fs/cgroup tmpfs 393856 4 393852 1% /run/user/115 tmpfs 393856 12 393844 1% /run/user/1000 /dev/loop0p3 2919444 1211308 1708136 42% /tmp/img /dev/sdc2 10190136 23032 9626432 1% /tmp/rpi /dev/sdb1 130798 0 130798 0% /tmp/rpi/boot
possiamo ora cominciare la copia dei file sui nuovi spazi
cp -rpv /tmp/img/* /tmp/rpi/
eseguiamo
sync
smontiamo la directory provvisoria
umount /tmp/img
e smontiamo l'immagine dal dispositivo temporaneo
losetup -d /dev/loop0
Ora è il momento di andare a modificare il file /etc/fstab che dovrà montare correttamente i dispositivi all'avvio ed è qui che abbiamo bisogno di recuperare gli UUID che abbiamo segnato prima
vi /tmp/rpi/etc/fstab
eliminiamo tutto quello che c'è e riscriviamolo come di seguito sostituendo oportunamente gli UUID
UUID=d8f379fd-adf6-4402-9d2d-7dcaeacdc082 / ext4 defaults,noatime 0 0 UUID=DB15-4A51 /\boot vfat defaults,noatime 0 0 UUID=a1fdee3b-375d-4d34-81a7-6267603ccb49 swap swap defaults,noatime 0 0
Ora dobbiamo installare il firmware che originariamente avevo scaricato con curl nel seguente modo:
curl -L -o raspberry-firmware.zip https://github.com/raspberrypi/firmware/archive/master.zip \\
Ma nel momento in cui scrivo la guida la situazione potrebbe già essere cambiata quindi per essere sicuri di poter arrivare in fondo alla guida scaricate [http://www.stefanostrozzi.it/mirror/raspberry-firmware.zip|qui] da mio mirror.
decomprimere
unzip raspberry-firmware.zip
trasferire i file sulla partizione di destinazione
cp -r firmware-master/boot/* /tmp/rpi/boot/
cp -r firmware-master/modules/* /tmp/rpi/lib/modules/
Andiamo a creare il seguente file inserendo i parametri per l'avvio del kernel specificando che il valore che identifica la directory root sarà /dev/sda2 perchè quando verrà avviato il sistema il disco SSD sarà riconosciuto come sda e non come nel nostro PC che è stato riconosciuto come sdc
vi /tmp/rpi/boot/cmdline.txt dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait
Giusto per capire meglio nella riga che abbiamo inserito c'è come directory root /dev/sda2 anche se fino ad ora abbiamo parlato di sdc o altro. questo perchè sda sarà il primo e unico disco che il RPi vedrà caricato e sda2 la seconda partizione che abbiamo formattato come ext4 destinata ad ospitare appunto la / (root) e sda1 lo swap.
smontiamo il tutto
umount /tmp/rpi/boot/
umount /tmp/rpi/
sync
Ripetere tutte le operazioni dall'inizio anche per il secondo RPI
Mettiamo la micro nel RPi, colleghiamo il disco esterno, colleghiamo il video alla porta hdmi (anche con cavo adatttatore hdmi-dvi) e alimentiamo.
Se tutto è andato bene apparirà la seguente schermata che ci guida alla prima configurazione.
Initial setup of Fedora 24 (Server Edition)
1) [x] Language settings 2) [!] Timezone settings
(English (United States)) (Timezone is not set.)
3) [x] Network Configuration 4) [!] Root Password
(Wired (eth0) connected) (Password is not set.)
5) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]:
La [x] sta ad indicare il valore settato e di default propone l'inglese, ma noi scegliamo l'italiano e il nostro timezone digitando '1' per entrare nel menù di configurazione della lingua
Please select language support to install:31
e poi ancora “1” per il sottotipo
procediamo allo stesso modo per le altre opzioni
Da specificare che al numero 3 quando dice che la rete è configurata si intende che è stato assegnato un indirizzo dal DHCP. L'indirizzo verrà svelato al momento del primo login.
infine premiamo “c”
La cosa carina di questa versione server è la “Admin Console” di gestione web (cockpit) che viene indicata al momento del primo login
Viene specificato nel seguente modo l'url a cui collegarsi:
Admin Console: https://xxx.xxx.xxx.xxx:9090/
In questa guida ho preferito collegarmi in modo tradizionale al RPI tramite ssh pertanto tutti i comandi si intendono eseguiti tramite terminale.
Se non è stato fatto al primo avvio è necessario ora impostare a mano gli indirizzi IP. e l'hostname
prima di iniziare ad installare i software necessari modifichiamo il file hosts inserendo gli ip e i nomi dei nostri RPI
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.1.61 nodo1 192.168.1.62 nodo2
Chiaramente gli ip indicati sono di esempio.
Disabilitiamo anche SElinux
vi /etc/selinux/config SELINUX=disabled
Ho scelto per questo primo progetto di installare tutti i software dal repository base di fedora 24 senza gli update, quindi ho disabilitato a “0” il repo fedora-update.repo:
vi /etc/yum.repos.d/fedora-repo.update
[updates] name=Fedora $releasever - $basearch - Updates failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch enabled=0 gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False
inoltre occorre anche scricare da [http://www.stefanostrozzi.it/mirror/zmrepo-24-1.fc24.noarch.rpm |qui] il repo di zoneminder:
e installarlo con
yum install zmrepo-24-1.fc24.noarch.rpm
questa installazione non fa altro che metter il file zmrepo-fedora.repo e zmrepo-fedora-testing.repo nella solita directory /etc/yum.repos.d
infine fare un ulteriore piccola modifica al file /etc/yum.repos.d/fedora.repo aggiungendo:
exclude=zoneminder*
nel blocco [fedora] che sostanzialmente dice di non installare con [fedora] i pacchetti che sono presenti nel repo [zmrepo]
Ma per proseguire con questa guida suggerisco di dimenticare quanto ho appena scritto e disabilitare tutti i repo originali fedora, fedora-update, zmrepo e di lasciare abilitato solo il mio repo contenente esclusivamente il software necessario per arrivare al termine di questo percorso.
Di seguito il mio file da scaricare e posizionare all'interno della directory /etc/yum.repos.d/:
[Fedora-str] name=Fedora-str baseurl=http://stefanostrozzi.it/mirror/fedora-24-armhpf enabled=1 gpgcheck=0
I prossimo comandi dnf presuppongono l'abilitazione del mio repo.
Riavviamo il sistema prima di procedere all'installazione del software
reboot
Iniziamo installando il server db mariadb, il server web apache il modulo ssl.
dnf install mariadb-server httpd mod_ssl
di seguito l'elenco dei pacchetti installati:
Ultima verifica della scadenza dei metadati: 0:25:21 fa il Mon Nov 14 17:31:28 2016. Dipendenze risolte. ================================================================================ Package Arch Versione Repository Dim. ================================================================================ Installazione in corso: apr armv7hl 1.5.2-3.fc24 fedora 98 k apr-util armv7hl 1.5.4-3.fc24 fedora 89 k fedora-logos-httpd noarch 22.0.0-3.fc24 fedora 34 k httpd armv7hl 2.4.18-2.fc24 fedora 1.2 M httpd-filesystem noarch 2.4.18-2.fc24 fedora 25 k httpd-tools armv7hl 2.4.18-2.fc24 fedora 89 k mariadb armv7hl 1:10.1.14-1.fc24 fedora 5.8 M mariadb-common armv7hl 1:10.1.14-1.fc24 fedora 70 k mariadb-config armv7hl 1:10.1.14-1.fc24 fedora 28 k mariadb-errmsg armv7hl 1:10.1.14-1.fc24 fedora 202 k mariadb-libs armv7hl 1:10.1.14-1.fc24 fedora 605 k mariadb-server armv7hl 1:10.1.14-1.fc24 fedora 16 M mod_ssl armv7hl 1:2.4.18-2.fc24 fedora 100 k perl armv7hl 4:5.22.2-359.fc24 fedora 5.9 M perl-Carp noarch 1.38-2.fc24 fedora 28 k perl-DBD-MySQL armv7hl 4.033-2.fc24 fedora 146 k perl-DBI armv7hl 1.634-3.fc24 fedora 721 k perl-Data-Dumper armv7hl 2.158-348.fc24 fedora 53 k perl-Encode armv7hl 3:2.84-8.fc24 fedora 1.0 M perl-Errno armv7hl 1.23-359.fc24 fedora 62 k perl-Exporter noarch 5.72-349.fc24 fedora 33 k perl-File-Path noarch 2.12-2.fc24 fedora 34 k perl-File-Temp noarch 0.23.04-347.fc24 fedora 61 k perl-Getopt-Long noarch 2.48-2.fc24 fedora 61 k perl-HTTP-Tiny noarch 0.056-4.fc24 fedora 53 k perl-IO armv7hl 1.35-359.fc24 fedora 127 k perl-MIME-Base64 armv7hl 3.15-349.fc24 fedora 29 k perl-Math-BigInt noarch 1.9997.15-2.fc24 fedora 178 k perl-Math-Complex noarch 1.59-359.fc24 fedora 94 k perl-PathTools armv7hl 3.62-2.fc24 fedora 87 k perl-Pod-Escapes noarch 1:1.07-349.fc24 fedora 20 k perl-Pod-Perldoc noarch 3.25-349.fc24 fedora 85 k perl-Pod-Simple noarch 1:3.32-3.fc24 fedora 211 k perl-Pod-Usage noarch 4:1.69-1.fc24 fedora 33 k perl-Scalar-List-Utils armv7hl 2:1.45-1.fc24 fedora 62 k perl-Socket armv7hl 3:2.021-2.fc24 fedora 54 k perl-Storable armv7hl 1:2.53-347.fc24 fedora 77 k perl-Term-ANSIColor noarch 4.03-347.fc24 fedora 45 k perl-Term-Cap noarch 1.17-2.fc24 fedora 22 k perl-Text-ParseWords noarch 3.30-347.fc24 fedora 17 k perl-Text-Tabs+Wrap noarch 2013.0523-347.fc24 fedora 23 k perl-Time-Local noarch 1.2300-347.fc24 fedora 29 k perl-Unicode-Normalize armv7hl 1.25-2.fc24 fedora 68 k perl-constant noarch 1.33-348.fc24 fedora 24 k perl-libs armv7hl 4:5.22.2-359.fc24 fedora 1.3 M perl-macros armv7hl 4:5.22.2-359.fc24 fedora 58 k perl-parent noarch 1:0.234-4.fc24 fedora 18 k perl-podlators noarch 4.07-1.fc24 fedora 113 k perl-threads armv7hl 1:2.02-3.fc24 fedora 56 k perl-threads-shared armv7hl 1.48-347.fc24 fedora 42 k Riepilogo della transazione ================================================================================ Installati 50 pacchett Dimensione totale dello scaricamento: 35 M Dimensione installata: 149 M Scaricamento dei pacchetti: -------------------------------------------------------------------------------- Totale 124 kB/s | 35 MB 04:50
dnf install zoneminder
Ultima verifica della scadenza dei metadati: 0:00:15 fa il Mon Nov 14 18:17:05 2016.
Dipendenze risolte.
================================================================================
Package Arch Versione Repository
Dim.
================================================================================
Installazione in corso:
SDL armv7hl 1.2.15-21.fc24 fedora 189 k
SDL_image armv7hl 1.2.12-14.fc24 fedora 44 k
a52dec armv7hl 0.7.4-19.fc24 zmrepo 57 k
aajohan-comfortaa-fonts noarch 2.004-6.fc24 fedora 151 k
alsa-lib armv7hl 1.1.1-1.fc24 fedora 359 k
binutils armv7hl 2.26-18.fc24 fedora 5.5 M
cairo armv7hl 1.14.6-1.fc24 fedora 629 k
cambozola noarch 0.936-2.fc24 fedora 104 k
cdparanoia-libs armv7hl 10.2-21.fc24 fedora 52 k
clang armv7hl 3.8.0-1.fc24 fedora 303 k
clang-libs armv7hl 3.8.0-1.fc24 fedora 7.0 M
copy-jdk-configs noarch 1.1-4.fc24 fedora 18 k
cpp armv7hl 6.1.1-2.fc24 fedora 7.1 M
faad2-libs armv7hl 1:2.7-6.fc24 zmrepo 145 k
ffmpeg armv7hl 3.0.4-1.fc24 zmrepo 1.4 M
ffmpeg-libs armv7hl 3.0.4-1.fc24 zmrepo 5.1 M
fftw-libs-double armv7hl 3.3.4-7.fc24 fedora 474 k
flac-libs armv7hl 1.3.1-6.fc24 fedora 168 k
fontconfig armv7hl 2.11.94-6.fc24 fedora 227 k
fontpackages-filesystem noarch 1.44-17.fc24 fedora 15 k
freerdp-libs armv7hl 2:2.0.0-5.git.b02943a.fc24 fedora 797 k
freetype armv7hl 2.6.3-2.fc24 fedora 311 k
fribidi armv7hl 0.19.7-2.fc24 fedora 69 k
game-music-emu armv7hl 0.6.0-8.fc24 fedora 144 k
gcc armv7hl 6.1.1-2.fc24 fedora 15 M
gcc-c++ armv7hl 6.1.1-2.fc24 fedora 8.5 M
gd armv7hl 2.2.1-1.fc24 fedora 121 k
gdbm-devel armv7hl 1.11-7.fc24 fedora 59 k
giflib armv7hl 4.1.6-15.fc24 fedora 42 k
glibc-devel armv7hl 2.23.1-7.fc24 fedora 934 k
glibc-headers armv7hl 2.23.1-7.fc24 fedora 483 k
glibmm24 armv7hl 2.48.1-1.fc24 fedora 451 k
graphite2 armv7hl 1.3.6-1.fc24 fedora 97 k
gsm armv7hl 1.0.13-14.fc24 fedora 34 k
gstreamer1 armv7hl 1.8.1-1.fc24 fedora 1.1 M
gstreamer1-plugins-base armv7hl 1.8.1-1.fc24 fedora 1.3 M
harfbuzz armv7hl 1.2.7-1.fc24 fedora 197 k
hwloc-libs armv7hl 1.11.0-6.fc24 fedora 1.4 M
isl armv7hl 0.14-5.fc24 fedora 382 k
iso-codes noarch 3.68-1.fc24 fedora 3.0 M
jack-audio-connection-kit armv7hl 1.9.10-5.fc24 fedora 482 k
java-1.8.0-openjdk armv7hl 1:1.8.0.91-7.b14.fc24 fedora 200 k
java-1.8.0-openjdk-headless armv7hl 1:1.8.0.91-7.b14.fc24 fedora 29 M
javapackages-tools noarch 4.6.0-14.fc24 fedora 104 k
jbigkit-libs armv7hl 2.1-5.fc24 fedora 49 k
kernel-headers armv7hl 4.5.5-300.fc24 fedora 1.0 M
lame-libs armv7hl 3.99.5-5.fc24 zmrepo 329 k
libICE armv7hl 1.0.9-5.fc24 fedora 64 k
libSM armv7hl 1.2.2-4.fc24 fedora 42 k
libX11 armv7hl 1.6.3-3.fc24 fedora 550 k
libX11-common noarch 1.6.3-3.fc24 fedora 164 k
libXau armv7hl 1.0.8-6.fc24 fedora 33 k
libXcomposite armv7hl 0.4.4-8.fc24 fedora 27 k
libXcursor armv7hl 1.1.14-6.fc24 fedora 31 k
libXdamage armv7hl 1.1.4-8.fc24 fedora 25 k
libXext armv7hl 1.3.3-4.fc24 fedora 38 k
libXfixes armv7hl 5.0.2-2.fc24 fedora 22 k
libXfont armv7hl 1.5.1-4.fc24 fedora 142 k
libXft armv7hl 2.3.2-4.fc24 fedora 57 k
libXi armv7hl 1.7.6-2.fc24 fedora 40 k
libXinerama armv7hl 1.1.3-6.fc24 fedora 18 k
libXmu armv7hl 1.1.2-4.fc24 fedora 68 k
libXpm armv7hl 3.5.11-5.fc24 fedora 50 k
libXrandr armv7hl 1.5.0-3.fc24 fedora 28 k
libXrender armv7hl 0.9.9-3.fc24 fedora 28 k
libXt armv7hl 1.1.5-3.fc24 fedora 150 k
libXtst armv7hl 1.2.2-6.fc24 fedora 24 k
libXv armv7hl 1.0.10-4.fc24 fedora 21 k
libXxf86misc armv7hl 1.0.3-11.fc24 fedora 23 k
libXxf86vm armv7hl 1.1.4-3.fc24 fedora 22 k
libasan armv7hl 6.1.1-2.fc24 fedora 301 k
libass armv7hl 0.13.1-2.fc24 fedora 87 k
libasyncns armv7hl 0.8-10.fc24 fedora 30 k
libatomic armv7hl 6.1.1-2.fc24 fedora 27 k
libavc1394 armv7hl 0.5.3-19.fc24 fedora 54 k
libavdevice armv7hl 3.0.4-1.fc24 zmrepo 81 k
libbluray armv7hl 0.9.3-1.fc24 fedora 136 k
libcddb armv7hl 1.3.2-19.fc24 fedora 70 k
libcdio armv7hl 0.93-7.fc24 fedora 231 k
libcdio-paranoia armv7hl 10.2+0.93+1-5.fc24 fedora 83 k
libchromaprint armv7hl 1.2-4.fc24 fedora 47 k
libconfig armv7hl 1.5-4.fc24 fedora 60 k
libcroco armv7hl 0.6.11-2.fc24 fedora 98 k
libdatrie armv7hl 0.2.9-3.fc24 fedora 28 k
libdb-devel armv7hl 5.3.28-14.fc24 fedora 43 k
libdc1394 armv7hl 2.2.2-5.fc24 fedora 117 k
libdca armv7hl 0.0.5-9.fc24 zmrepo 104 k
libdrm armv7hl 2.4.68-1.fc24 fedora 103 k
libdvbpsi armv7hl 1.3.0-1.fc24 zmrepo 93 k
libdvdnav armv7hl 5.0.3-4.fc24 fedora 55 k
libdvdread armv7hl 5.0.3-2.fc24 fedora 68 k
libebml armv7hl 1.3.3-3.fc24 fedora 72 k
libffado armv7hl 2.2.1-8.fc24 fedora 615 k
libfontenc armv7hl 1.1.3-3.fc24 fedora 34 k
libgomp armv7hl 6.1.1-2.fc24 fedora 176 k
libiec61883 armv7hl 1.2.0-14.fc24 fedora 40 k
libjpeg-turbo armv7hl 1.4.2-3.fc24 fedora 124 k
libkate armv7hl 0.4.1-7.fc24 fedora 50 k
libmad armv7hl 0.15.1b-17.fc24 zmrepo 79 k
libmatroska armv7hl 1.4.4-2.fc24 fedora 138 k
libmcpp armv7hl 2.7.2-16.fc24 fedora 81 k
libmodplug armv7hl 1:0.8.8.5-8.fc24 fedora 152 k
libmpc armv7hl 1.0.2-5.fc24 fedora 47 k
libmpcdec armv7hl 1.2.6-16.fc24 fedora 33 k
libmpeg2 armv7hl 0.5.1-11.fc24 zmrepo 65 k
libmtp armv7hl 1.1.10-2.fc24 fedora 158 k
libogg armv7hl 2:1.3.2-5.fc24 fedora 27 k
libraw1394 armv7hl 2.1.0-7.fc24 fedora 66 k
librsvg2 armv7hl 2.40.15-1.fc24 fedora 120 k
libsamplerate armv7hl 0.1.8-10.fc24 fedora 1.0 M
libshout armv7hl 2.2.2-14.fc24 fedora 44 k
libsigc++20 armv7hl 2.8.0-1.fc24 fedora 41 k
libsndfile armv7hl 1.0.25-20.fc24 fedora 148 k
libstdc++-devel armv7hl 6.1.1-2.fc24 fedora 1.8 M
libthai armv7hl 0.1.24-1.fc24 fedora 193 k
libtheora armv7hl 1:1.1.1-14.fc24 fedora 172 k
libtiff armv7hl 4.0.6-2.fc24 fedora 158 k
libtiger armv7hl 0.3.4-11.fc24 fedora 38 k
libubsan armv7hl 6.1.1-2.fc24 fedora 117 k
libupnp armv7hl 1.6.19-5.fc24 fedora 94 k
libv4l armv7hl 1.10.0-2.fc24 fedora 168 k
libva armv7hl 1.7.0-1.fc24 fedora 77 k
libvdpau armv7hl 1.1.1-3.fc24 fedora 36 k
libvisual armv7hl 1:0.4.0-20.fc24 fedora 130 k
libvncserver armv7hl 0.9.10-5.fc24 fedora 240 k
libvorbis armv7hl 1:1.3.4-6.fc24 fedora 174 k
libvpx armv7hl 1.5.0-4.fc24 fedora 457 k
libwayland-client armv7hl 1.10.0-1.fc24 fedora 29 k
libwayland-server armv7hl 1.10.0-1.fc24 fedora 33 k
libwebp armv7hl 0.5.0-2.fc24 fedora 184 k
libwinpr armv7hl 2:2.0.0-5.git.b02943a.fc24 fedora 237 k
libxcb armv7hl 1.11.1-2.fc24 fedora 178 k
libxkbfile armv7hl 1.0.9-3.fc24 fedora 80 k
libxml++ armv7hl 2.40.1-2.fc24 fedora 81 k
libxshmfence armv7hl 1.2-3.fc24 fedora 12 k
live555 armv7hl 2016.05.20-1.fc24 zmrepo 313 k
lksctp-tools armv7hl 1.0.16-5.fc24 fedora 93 k
llvm-libs armv7hl 3.8.0-1.fc24 fedora 9.4 M
lua-posix armv7hl 33.3.1-2.fc24 fedora 166 k
lzo-minilzo armv7hl 2.08-8.fc24 fedora 26 k
mcpp armv7hl 2.7.2-16.fc24 fedora 30 k
mesa-filesystem armv7hl 11.2.1-1.20160501.fc24 fedora 39 k
mesa-libEGL armv7hl 11.2.1-1.20160501.fc24 fedora 99 k
mesa-libGL armv7hl 11.2.1-1.20160501.fc24 fedora 160 k
mesa-libgbm armv7hl 11.2.1-1.20160501.fc24 fedora 56 k
mesa-libglapi armv7hl 11.2.1-1.20160501.fc24 fedora 69 k
minizip armv7hl 1.2.8-10.fc24 fedora 37 k
mod_perl armv7hl 2.0.9-3.fc24 fedora 3.0 M
mpfr armv7hl 3.1.4-1.fc24 fedora 196 k
ocl-icd armv7hl 2.2.8-3.git20151217.0122332.fc24
fedora 45 k
openal-soft armv7hl 1.17.2-2.fc24 fedora 312 k
opencl-filesystem noarch 1.0-4.fc24 fedora 7.9 k
opencv-core armv7hl 2.4.12.3-3.fc24 fedora 1.5 M
openjpeg-libs armv7hl 1.5.1-16.fc24 fedora 79 k
opus armv7hl 1.1.2-2.fc24 fedora 164 k
orc armv7hl 0.4.25-1.fc24 fedora 150 k
pango armv7hl 1.40.1-1.fc24 fedora 259 k
perl-Algorithm-Diff noarch 1.1903-4.fc24 fedora 51 k
perl-AppConfig noarch 1.71-4.fc24 fedora 86 k
perl-Archive-Tar noarch 2.06-1.fc24 fedora 76 k
perl-Archive-Zip noarch 1.57-1.fc24 fedora 106 k
perl-Astro-SunTime noarch 0.01-1 zmrepo 8.5 k
perl-BSD-Resource armv7hl 1.291.000-1.fc24 fedora 44 k
perl-Business-ISBN noarch 2.010-2.fc24 fedora 34 k
perl-Business-ISBN-Data noarch 20140910.003-2.fc24 fedora 33 k
perl-CGI noarch 4.28-2.fc24 fedora 204 k
perl-CPAN-Meta noarch 2.150005-3.fc24 fedora 173 k
perl-CPAN-Meta-Requirements noarch 2.140-2.fc24 fedora 36 k
perl-CPAN-Meta-YAML noarch 0.018-2.fc24 fedora 32 k
perl-Class-Load noarch 0.23-2.fc24 fedora 35 k
perl-Class-Std noarch 0.013-2.fc24 fedora 53 k
perl-Class-Std-Fast noarch 0.0.8-2.fc24 zmrepo 25 k
perl-Compress-Raw-Bzip2 armv7hl 2.069-2.fc24 fedora 36 k
perl-Compress-Raw-Zlib armv7hl 2.069-2.fc24 fedora 62 k
perl-Convert-BinHex noarch 1.125-2.fc24 fedora 48 k
perl-Data-Dump noarch 1.23-2.fc24 fedora 36 k
perl-Data-OptList noarch 0.110-1.fc24 fedora 30 k
perl-Data-UUID armv7hl 1.221-2.fc24 fedora 28 k
perl-Date-Manip noarch 6.53-1.fc24 fedora 1.1 M
perl-Device-SerialPort armv7hl 1.04-23.fc24 fedora 68 k
perl-Digest noarch 1.17-347.fc24 fedora 26 k
perl-Digest-HMAC noarch 1.03-12.fc24 fedora 19 k
perl-Digest-MD5 armv7hl 2.55-1.fc24 fedora 35 k
perl-Digest-SHA armv7hl 1:5.95-348.fc24 fedora 62 k
perl-Dist-CheckConflicts noarch 0.11-6.fc24 fedora 26 k
perl-Email-Date-Format noarch 1.005-4.fc24 fedora 21 k
perl-Encode-Locale noarch 1.05-4.fc24 fedora 20 k
perl-ExtUtils-Command noarch 7.10-4.fc24 fedora 17 k
perl-ExtUtils-Install noarch 2.04-348.fc24 fedora 45 k
perl-ExtUtils-MakeMaker noarch 7.10-4.fc24 fedora 279 k
perl-ExtUtils-Manifest noarch 1.70-347.fc24 fedora 36 k
perl-ExtUtils-ParseXS noarch 1:3.30-2.fc24 fedora 81 k
perl-File-Listing noarch 6.04-12.fc24 fedora 17 k
perl-GD armv7hl 2.56-7.fc24 fedora 166 k
perl-GD-Barcode noarch 1.15-22.fc24 fedora 683 k
perl-HTML-Parser armv7hl 3.72-2.fc24 fedora 114 k
perl-HTML-Tagset noarch 3.20-25.fc24 fedora 23 k
perl-HTTP-Cookies noarch 6.01-12.fc24 fedora 29 k
perl-HTTP-Date noarch 6.02-13.fc24 fedora 18 k
perl-HTTP-Message noarch 6.11-2.fc24 fedora 88 k
perl-HTTP-Negotiate noarch 6.01-12.fc24 fedora 21 k
perl-IO-Compress noarch 2.069-2.fc24 fedora 255 k
perl-IO-HTML noarch 1.001-5.fc24 fedora 27 k
perl-IO-Interface armv7hl 1.09-4.fc24 fedora 33 k
perl-IO-Socket-IP noarch 0.37-348.fc24 fedora 46 k
perl-IO-Socket-Multicast armv7hl 1.12-1.fc24 zmrepo 26 k
perl-IO-Socket-SSL noarch 2.025-1.fc24 fedora 254 k
perl-IO-Zlib noarch 1:1.10-359.fc24 fedora 66 k
perl-Image-Base noarch 1.17-5.fc24 fedora 26 k
perl-Image-Info noarch 1.38-4.fc24 fedora 85 k
perl-Image-Xbm noarch 1.09-2.fc24 fedora 22 k
perl-Image-Xpm noarch 1.12-4.fc24 fedora 23 k
perl-JSON-PP noarch 2.27400-1.fc24 fedora 59 k
perl-LWP-MediaTypes noarch 6.02-9.fc24 fedora 28 k
perl-LWP-Protocol-https noarch 6.06-7.fc24 fedora 16 k
perl-Linux-Pid armv7hl 0.04-27.fc24 fedora 18 k
perl-Locale-Maketext noarch 1.26-348.fc24 fedora 95 k
perl-Locale-Maketext-Simple noarch 1:0.21-359.fc24 fedora 65 k
perl-MIME-Lite noarch 3.030-6.fc24 fedora 100 k
perl-MIME-Types noarch 2.13-1.fc24 fedora 69 k
perl-MIME-tools noarch 5.507-3.fc24 fedora 247 k
perl-MailTools noarch 2.18-1.fc24 fedora 107 k
perl-Module-CoreList noarch 1:5.20160520-1.fc24 fedora 75 k
perl-Module-Implementation noarch 0.09-6.fc24 fedora 22 k
perl-Module-Load noarch 1:0.32-347.fc24 fedora 18 k
perl-Module-Load-Conditional noarch 0.64-347.fc24 fedora 23 k
perl-Module-Metadata noarch 1.000027-4.fc24 fedora 40 k
perl-Module-Runtime noarch 0.014-7.fc24 fedora 24 k
perl-Mojolicious noarch 6.46-1.fc24 fedora 832 k
perl-Mozilla-CA noarch 20160104-2.fc24 fedora 14 k
perl-NTLM noarch 1.09-12.fc24 fedora 23 k
perl-Net-HTTP noarch 6.09-4.fc24 fedora 32 k
perl-Net-SMTP-SSL noarch 1.03-2.fc24 fedora 14 k
perl-Net-SSLeay armv7hl 1.74-1.fc24 fedora 305 k
perl-Package-Stash noarch 0.37-4.fc24 fedora 41 k
perl-Package-Stash-XS armv7hl 0.28-9.fc24 fedora 35 k
perl-Params-Check noarch 1:0.38-347.fc24 fedora 22 k
perl-Params-Util armv7hl 1.07-15.fc24 fedora 41 k
perl-Parse-CPAN-Meta noarch 1:1.4417-3.fc24 fedora 30 k
perl-Pod-POM noarch 2.01-3.fc24 fedora 97 k
perl-SOAP-WSDL noarch 3.003-1.fc24 zmrepo 339 k
perl-Sub-Install noarch 0.928-7.fc24 fedora 26 k
perl-Sys-CPU armv7hl 0.61-8.fc24 fedora 18 k
perl-Sys-MemInfo armv7hl 0.98-2.fc24 fedora 26 k
perl-Sys-Mmap armv7hl 0.17-5.fc24 fedora 34 k
perl-Sys-Syslog armv7hl 0.34-1.fc24 fedora 47 k
perl-Template-Toolkit armv7hl 2.26-4.fc24 fedora 1.3 M
perl-TermReadKey armv7hl 2.33-4.fc24 fedora 38 k
perl-Test-Harness noarch 3.36-2.fc24 fedora 276 k
perl-Text-Diff noarch 1.44-1.fc24 fedora 44 k
perl-Time-HiRes armv7hl 1.9728-2.fc24 fedora 50 k
perl-Time-ParseDate noarch 2015.103-2.fc24 fedora 40 k
perl-TimeDate noarch 1:2.30-8.fc24 fedora 52 k
perl-Try-Tiny noarch 0.24-2.fc24 fedora 41 k
perl-URI noarch 1.71-2.fc24 fedora 116 k
perl-URI-Encode noarch 1.0.1-2.fc24 fedora 23 k
perl-WWW-RobotRules noarch 6.02-13.fc24 fedora 22 k
perl-X10 noarch 0.03-1 zmrepo 29 k
perl-XML-LibXML armv7hl 1:2.0124-1.fc24 fedora 342 k
perl-XML-NamespaceSupport noarch 1.11-18.fc24 fedora 22 k
perl-XML-Parser armv7hl 2.44-4.fc24 fedora 220 k
perl-XML-SAX noarch 0.99-16.fc24 fedora 64 k
perl-XML-SAX-Base noarch 1.08-15.fc24 fedora 35 k
perl-XML-Simple noarch 2.22-2.fc24 fedora 85 k
perl-devel armv7hl 4:5.22.2-359.fc24 fedora 552 k
perl-libnet noarch 3.08-2.fc24 fedora 125 k
perl-libwww-perl noarch 6.15-2.fc24 fedora 209 k
perl-version armv7hl 5:0.99.16-1.fc24 fedora 94 k
php armv7hl 5.6.22-1.fc24 fedora 2.3 M
php-cli armv7hl 5.6.22-1.fc24 fedora 3.5 M
php-common armv7hl 5.6.22-1.fc24 fedora 1.0 M
php-gd armv7hl 5.6.22-1.fc24 fedora 91 k
php-mysqlnd armv7hl 5.6.22-1.fc24 fedora 281 k
php-pdo armv7hl 5.6.22-1.fc24 fedora 137 k
php-pecl-jsonc armv7hl 1.3.9-3.fc24 fedora 54 k
pocl armv7hl 0.13-4.fc24 fedora 1.6 M
protobuf-lite armv7hl 2.6.1-4.fc24 fedora 62 k
pulseaudio-libs armv7hl 8.0-6.fc24 fedora 558 k
python3-cssselect noarch 0.9.1-9.fc24 fedora 64 k
python3-javapackages noarch 4.6.0-14.fc24 fedora 89 k
python3-lxml armv7hl 3.4.4-4.fc24 fedora 839 k
python3-pyparsing noarch 2.1.3-1.fc24 fedora 113 k
schroedinger armv7hl 1.0.11-10.fc24 fedora 248 k
soxr armv7hl 0.1.2-2.fc24 fedora 65 k
speex armv7hl 1.2-0.25.rc2.fc24 fedora 60 k
speexdsp armv7hl 1.2-0.9.rc3.fc24 fedora 449 k
systemtap-sdt-devel armv7hl 3.0-2.fc24 fedora 70 k
t1lib armv7hl 5.1.2-18.fc24 fedora 153 k
taglib armv7hl 1.11-1.fc24 fedora 264 k
ttmkfdir armv7hl 3.0.9-48.fc24 fedora 52 k
twolame-libs armv7hl 0.3.13-4.fc24 zmrepo 51 k
tzdata-java noarch 2016d-1.fc24 fedora 181 k
uthash-devel noarch 1.9.9-10.fc24 fedora 59 k
vlc-core armv7hl 3.0.0-0.8.fc24 zmrepo 7.6 M
x264-libs armv7hl 0.148-11.20160614gita5e06b9.fc24
zmrepo 472 k
x265-libs armv7hl 1.9-1.fc24 zmrepo 301 k
xcb-util-keysyms armv7hl 0.4.0-3.fc24 fedora 14 k
xml-common noarch 0.6.3-44.fc24 fedora 31 k
xorg-x11-font-utils armv7hl 1:7.5-31.fc24 fedora 78 k
xorg-x11-fonts-Type1 noarch 7.5-16.fc24 fedora 522 k
xorg-x11-server-utils armv7hl 7.7-19.fc24 fedora 184 k
xvidcore armv7hl 1.3.4-2.fc24 zmrepo 222 k
zoneminder armv7hl 1.30.0-3.fc24 zmrepo 7.2 M
zvbi armv7hl 0.2.35-1.fc24 fedora 371 k
Riepilogo della transazione
================================================================================
Installati 304 pacchetti
Dimensione totale dello scaricamento: 163 M
Dimensione installata: 519 M
Scaricamento dei pacchetti:
--------------------------------------------------------------------------------
Totale 227 kB/s | 163 MB 12:15
dnf install drbd Ultima verifica della scadenza dei metadati: 3:44:21 fa il Mon Nov 14 18:17:05 2016. Dipendenze risolte. ================================================================================ Package Arch Versione Repository Dim. ================================================================================ Installazione in corso: drbd armv7hl 8.9.6-2.fc24 fedora 20 k drbd-udev armv7hl 8.9.6-2.fc24 fedora 11 k drbd-utils armv7hl 8.9.6-2.fc24 fedora 491 k Riepilogo della transazione ================================================================================ Installati 3 pacchetti Dimensione totale dello scaricamento: 523 k Dimensione installata: 1.3 M
dnf install postfix postfix-mysql dovecot dovecot-mysql dovecot-pigeonhole cyrus-sasl cyrus-sasl-devel cyrus-sasl-md5 php-imap php-mbstring Ultima verifica della scadenza dei metadati: 1 day, 1:17:29 fa il Wed Nov 30 15:46:05 2016. Dipendenze risolte. ========================================================================================================================= Package Arch Versione Repository Dim. ========================================================================================================================= Installazione in corso: clucene-core armv7hl 2.3.3.4-24.20130812.e8e3d20git.fc24 Fedora-str 456 k cyrus-sasl armv7hl 2.1.26-26.2.fc24 Fedora-str 88 k cyrus-sasl-devel armv7hl 2.1.26-26.2.fc24 Fedora-str 314 k cyrus-sasl-md5 armv7hl 2.1.26-26.2.fc24 Fedora-str 58 k dovecot armv7hl 1:2.2.24-1.fc24 Fedora-str 3.3 M dovecot-mysql armv7hl 1:2.2.24-1.fc24 Fedora-str 82 k dovecot-pigeonhole armv7hl 1:2.2.24-1.fc24 Fedora-str 365 k libc-client armv7hl 2007f-11.fc24 Fedora-str 532 k libicu armv7hl 56.1-4.fc24 Fedora-str 8.0 M php-imap armv7hl 5.6.22-1.fc24 Fedora-str 91 k php-mbstring armv7hl 5.6.22-1.fc24 Fedora-str 537 k postfix armv7hl 2:3.1.0-1.fc24 Fedora-str 1.3 M postfix-mysql armv7hl 2:3.1.0-1.fc24 Fedora-str 47 k Riepilogo della transazione ========================================================================================================================= Installati 13 pacchetti Dimensione totale dello scaricamento: 15 M Dimensione installata: 50 M Procedere [s/N]:
portiamoci in /usar/share
cd /usr/share
Scarichiamo dal mio mirror postfixadmin:
wget http://www.stefanostrozzi.it/mirror/postfixadmin-3.0.tar.gz
decomprimere:
tar -xzvf postfixadmin-3.0.tar.gz
rinominiamo
mv postfixadmin-3.0 postfixadmin
Scarichiamo dal mio mirror roundcubemail:
wget http://www.stefanostrozzi.it/mirror/roundcubemail-1.2.2-complete.tar.gz
decomprimere sempre in /usr/share:
tar -xzvf roundcubemail-1.2.2-complete.tar.gz
rinominare
mv roundcubemail-1.2.2 roundcubemail
dnf install pcs Ultima verifica della scadenza dei metadati: 0:00:01 fa il Thu Dec 1 18:33:35 2016. Dipendenze risolte. ==================================================================================== Package Arch Versione Repository Dim. ==================================================================================== Installazione in corso: corosync armv7hl 2.3.5-2.fc24 Fedora-str 192 k corosynclib armv7hl 2.3.5-2.fc24 Fedora-str 114 k libibverbs armv7hl 1.2.0-1.fc24 Fedora-str 56 k libqb armv7hl 1.0-1.fc24 Fedora-str 93 k librdmacm armv7hl 1.0.21-1.fc24 Fedora-str 62 k libyaml armv7hl 0.1.6-8.fc24 Fedora-str 51 k net-snmp-libs armv7hl 1:5.7.3-9.fc24 Fedora-str 754 k pacemaker armv7hl 1.1.14-2.5a6cdd1.git.fc24 Fedora-str 465 k pacemaker-cli armv7hl 1.1.14-2.5a6cdd1.git.fc24 Fedora-str 227 k pacemaker-cluster-libs armv7hl 1.1.14-2.5a6cdd1.git.fc24 Fedora-str 55 k pacemaker-libs armv7hl 1.1.14-2.5a6cdd1.git.fc24 Fedora-str 488 k pcs armv7hl 0.9.150-1.fc24 Fedora-str 1.4 M python-clufter armv7hl 0.56.2-1.fc24 Fedora-str 330 k resource-agents armv7hl 3.9.7-4.fc24 Fedora-str 555 k ruby armv7hl 2.3.1-56.fc24 Fedora-str 77 k ruby-irb noarch 2.3.1-56.fc24 Fedora-str 95 k ruby-libs armv7hl 2.3.1-56.fc24 Fedora-str 2.7 M rubygem-backports noarch 3.6.4-2.fc24 Fedora-str 121 k rubygem-bigdecimal armv7hl 1.2.8-56.fc24 Fedora-str 85 k rubygem-did_you_mean armv7hl 1.0.0-56.fc24 Fedora-str 219 k rubygem-eventmachine armv7hl 1.0.8-2.fc24 Fedora-str 151 k rubygem-io-console armv7hl 0.4.5-56.fc24 Fedora-str 58 k rubygem-json armv7hl 1.8.3-102.fc24 Fedora-str 62 k rubygem-multi_json noarch 1.10.1-3.fc24 Fedora-str 22 k rubygem-open4 noarch 1.3.4-3.fc24 Fedora-str 17 k rubygem-psych armv7hl 2.0.17-56.fc24 Fedora-str 87 k rubygem-rack noarch 1:1.6.4-1.fc24 Fedora-str 93 k rubygem-rack-protection noarch 1.5.3-3.fc24 Fedora-str 19 k rubygem-rack-test noarch 0.6.3-3.fc24 Fedora-str 19 k rubygem-rdoc noarch 4.2.2-1.fc24 Fedora-str 449 k rubygem-sinatra noarch 1:1.4.6-3.fc24 Fedora-str 136 k rubygem-tilt noarch 2.0.1-2.fc24 Fedora-str 32 k rubygems noarch 2.5.1-56.fc24 Fedora-str 281 k rubypick noarch 1.1.1-5.fc24 Fedora-str 11 k Riepilogo della transazione ==================================================================================== Installati 34 pacchetti Dimensione totale dello scaricamento: 9.4 M Dimensione installata: 30 M Procedere [s/N]:
aggiunte per samba:
pcs resource create fs_smb Filesystem device="/dev/drbd1" directory="/var/share" fstype="ext4" pcs resource create r_smb systemd:smb pcs resource create r_nmb systemd:nmb pcs resource group add gr_smb fs_smb r_nmb r_smb
Ora dobbiamo svolgere alcune operazioni di base per la configurazione dei vari software.
Benchè abbia cercato di mantenere una certa linearità e distinzione tra un software e l'altro alla fine inevitabilmente le strade si incrociano e verranno ripresi e richiamati comandi che si riferiscono a altri software già presentati.
avviamo l'apache
systemctl start httpd.service
apriamo il firewall
firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload
avviamo mariadb
systemctl start mariadb.service
apriamo il firewall
firewall-cmd --add-service=mysql --permanent firewall-cmd --reload
rendiamo sicura l'installazione di mariadb
mysql_secure_installation
Impostiamo la password del “root” di MariaDB e confermiamo alle scelte proposte.
Creiamo il database per zoneminder
mysql -u root -p < /usr/share/zoneminder/db/zm_create.sql
creiamo l'utente e i relativi diritti di accesso (se scegliamo una password e un utente diversi da quelli proposti ricordarseli per eventuali future modifiche).
Entrare nella consolle di mariadb:
mysql -u root -p
lanciare il comando:
>grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';
rendiamo subito effettivi i cambiamenti
mysqladmin -u root -p reload
oppure dalla console di mariadb:
>flush privileges;
zoneminder ci chiede anche di modificare il file php.ini inserendo il nostro “time zone”
vi /etc/php.ini date.timezone = "Europe/Rome"
riavviare apache
systemctl restart httpd.service
avviare zoneminder
systemctl start zoneminder.zervice
verificare che tutto funzione collegandosi al proprio server RPI tramite browser e testare il funzionamento di zoneminder http://indirizzoserver/zm su entrambi i nodi
In particolare per attivare le visualizzazioni delle telecamere riporto un paio di esempi:
telecamera ip su rtsp:
Name: libero
Server: none
Source Type: Ffmpeg
Scheda source:
Source Path: rtsp://192.168.1.xxx:554/12
Remote Method:RTP/Unicast
telecamera ip su http:
Name:libero
Server:none
Source Type: remote
Scheda source:
Remote Protocol:http
Remote Method:regexp
Remote HostName: 192.168.xxx
Remote Host Port:80xx
Remote Host Path:/videostream.cgi?user=utente&pwd=password&resolution=6&rate=5
Innanzi tutti modificare il file /etc/drbd.d/global_common.conf come segue:
# DRBD is the result of over a decade of development by LINBIT.
# In case you need professional services for DRBD or have
# feature requests visit http://www.linbit.com
global {
usage-count yes;
# minor-count dialog-refresh disable-ip-verification
# cmd-timeout-short 5; cmd-timeout-medium 121; cmd-timeout-long 600;
}
common {
handlers {
# These are EXAMPLE handlers only.
# They may have severe implications,
# like hard resetting the node under certain circumstances.
# Be careful when chosing your poison.
pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
# split-brain "/usr/lib/drbd/notify-split-brain.sh root";
# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup {
wfc-timeout 60;
degr-wfc-timeout 120;
#outdated-wfc-timeout wait-after-sb
}
options {
# cpu-mask on-no-data-accessible
}
disk {
# size on-io-error fencing disk-barrier disk-flushes
# disk-drain md-flushes resync-rate resync-after al-extents
# c-plan-ahead c-delay-target c-fill-target c-max-rate
# c-min-rate disk-timeout
}
net {
# protocol timeout max-epoch-size max-buffers unplug-watermark
# connect-int ping-int sndbuf-size rcvbuf-size ko-count
allow-two-primaries;
#cram-hmac-alg shared-secret
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
# always-asbp rr-conflict
# ping-timeout data-integrity-alg tcp-cork on-congestion
# congestion-fill congestion-extents csums-alg verify-alg
# use-rle
}
}
Ora Preparare le partizioni che dovranno accogliere i dati.
Avendo creato inizialmente un partizionamento di tipo MBR conviene ora creare su /dev/sda una partizione estesa e quindi creare le unità logiche che si desidera.
Per il mio progetto ho previsto un partizione da 10GB che dovrà ospitare il database “mariadb” e le caselle di posta.
La partizione sarà /dev/sda5 e diventerà tramite DRBD il device /dev/drbd0.
Creiamo allora il primo file risorsa:
I nomi nodo1 e nodo2 sono gli hostname dei nodi e devono essere gli stessi indicati nel file hosts.
vi /etc/drbd.d/r0.res
resource r0 {
startup {
become-primary-on both;
}
on nodo1 {
device /dev/drbd0;
disk /dev/sda5;
address 192.168.1.61:7788;
meta-disk internal;
}
on nodo2 {
device /dev/drbd0;
disk /dev/sda5;
address 192.168.1.62:7788;
meta-disk internal;
}
}
Creiamo la seconda partizione /dev/sda6 da circa 60G e conterrà le risorse web, diventerà /dev/drbd1
resource r1 {
startup {
become-primary-on both;
}
on nodo1 {
device /dev/drbd1;
disk /dev/sda6;
address 192.168.1.61:7789;
meta-disk internal;
}
on nodo2 {
device /dev/drbd1;
disk /dev/sda6;
address 192.168.1.62:7789;
meta-disk internal;
}
}
La terza partizione da creare è /dev/sda7 che diventerà il device /dev/drbd2 destinata ad ospitare lo spazio per le condivisioni interne gestite da samba.
resource r2 {
startup {
become-primary-on both;
}
on nodo1 {
device /dev/drbd2;
disk /dev/sda7;
address 192.168.1.61:7790;
meta-disk internal;
}
on nodo2 {
device /dev/drbd2;
disk /dev/sda7;
address 192.168.1.62:7790;
meta-disk internal;
}
}
I file appena creati devono essere identici su entrambi i nodi.
Su ciascun nodo eseguire il seguente comando per creare lo spazio dei metadati.
drbdadm create-md r0 drbdadm create-md r1 drbdadm create-md r2
Disabilitiamo temporaneamente il servizio drbd all'avvio e riavviamo il nodo.
systemctl disable drbd.service
reboot
Prima di avviare drbd apriamo le porte del firewall su entrambi i nodi
firewall-cmd --add-port=7788/tcp --permanent firewall-cmd --add-port=7789/tcp --permanent firewall-cmd --add-port=7790/tcp --permanent firewall-cmd --reload
NOTA BENE
Prima di avviare drbd però dobbiamo tornare ai vari file risorsa e commentare la sezione “become-primary-on both” solo per il primo avvio per consentire la sincronizzazione prodotta da overwrite data ecc…
poi una volta terminata la prima sincronizzazione possiamo togliere il commento.
Avviamo drbd
systemctl start drbd.service
Possiamo controllare lo stato dei device con
cat /proc/drbd
Se è tutto ok iniziamo a sincronizzare
drbdadm -- --overwrite-data-of-peer primary r0 drbdadm -- --overwrite-data-of-peer primary r1 drbdadm -- --overwrite-data-of-peer primary r2
L'operazione durerà il tempo necessario che varia in base alla dimensione delle partizioni, alle prestazioni dei dischi e della macchina.
Nel mentre abilitiamo il servizio drbd al boot:
systemctl enable drbd.service
e facciamo una modifica al file “/etc/systemd/system/multi-user.target.wants/drbd.service” che diventerà come segue:
[Unit] Description=Distributed Replicated Block Device After=systemd-modules-load.service network.target network-online.target Wants=network-online.target [Service] Type=oneshot RemainAfterExit=yes # load config ExecStart=/usr/sbin/drbdadm adjust all # user interruptible version of wait-connect all ExecStart=/usr/sbin/drbdadm wait-con-int # become primary if configured ExecStart=/usr/sbin/drbdadm sh-b-pri all # disconnect and detach all resources ExecStop=/usr/sbin/drbdadm down all [Install] WantedBy=multi-user.target
In sostanza gli abbiamo detto di avviare il servizio drbd solo dopo il target network-online e che lo stesso network-online è necessario per avviare drbd.
Al termine della sincronizzazione saremo pronti per utilizzare i nostri nuovi dispositivi drbd (/dev/drbd0, /dev/drbd1, /dev/drbd2).
Lo vedremo più avanti quando li formatteremo prima di darli in pasto al cluster.
Inizia ora la fase più complicata ovvero la preparazione degli strumenti del mailserver.
creiamo il db per la gestione delle caselle di posta:
mysql -u root -p CREATE DATABASE postfix; CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'choose_Pfxadmin_password'; GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost'; FLUSH PRIVILEGES;
Creare
mkdir /etc/postfixadmin
creare al suo interno il file (su entrambi i nodi)
vi /etc/postfixadmin/config.local.php
e inserire al suo interno quanto segue cos' come indicato nel file INSTALL.TXT (entrambi i nodi)
<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'choose_Pfxadmin_password';
$CONF['database_name'] = 'postfix';
$CONF['configured'] = true;
$CONF['admin_email'] = 'postmaster@miodominio.org';
$CONF['page_size'] = '50';
$CONF['default_aliases'] = array (
'MAILER-DAEMON' => 'postmaster@miodominio.org',
'abuse' => 'postmaster@miodominio.org',
'postmaster' => 'hostmaster@miodominio.org',
'webmaster' => 'hostmaster@miodominio.org',
'hostmaster' => 'root@miodominio.org',
'root' => 'admin@miodominio.org'
);
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['transport'] = 'YES';
$CONF['transport_options'] = array (
'dovecot', // for virtual accounts
'virtual', // for virtual accounts
'local', // for system accounts
'relay' // for backup mx
);
$CONF['transport_default'] = 'dovecot';
$CONF['vacation'] = 'NO';
$CONF['vacation_control'] = 'NO';
$CONF['vacation_control_admin'] = 'NO';
$CONF['backup'] = 'YES';
$CONF['sendmail'] = 'YES';
$CONF['logging'] = 'YES';
$CONF['fetchmail'] = 'YES';
$CONF['fetchmail_extra_options'] = 'YES';
$CONF['footer_text'] = 'Return to mail.miodominio.org';
$CONF['footer_link'] = 'http://mail.miodominio.org';
$CONF['used_quotas'] = 'YES';
?>
modificando ovviamente il valore 'database_user' e 'database_password' in modo coerente con quanto scelto in precedenza
creare il seguente link simbolico (su entrambi i nodi)
ln -s /etc/postfixadmin/config.local.php /usr/share/postfixadmin
modificare i permessi solo per la seguente cartella (solo sul nodo attivo)
chown -R root:apache /usr/share/postfixadmin/templates_c
creiamo anche il seguente file che servirà per indicare ad apache dove trovare la directory riservata a postfixadmin (su entrambi i nodi)
vi /etc/httpd/conf.d/postfixadmin.conf
Alias /postfixadmin /usr/share/postfixadmin
<Directory /usr/share/postfixadmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Allow from 127.0.0.1
Allow from ::1
Allow from 192.168.1.0/24
</IfModule>
</Directory>
Prima di accedere alla configurazione di postfixadmin e per applicare le modifiche appena fatte è necessario riavviare il server web:
systemctl restart httpd.service
E poi accedere a: https://192.168.1.xxx/postfixadmin/setup.php
Se non avremo avuto messaggi di errore o notifiche da correggere, ci verrà proposto di inserire e confermare una “setup” password.
Essa ci permetterà di genere un hash che andrà copiato e inserito nel file /usr/share/config.inc.php
$CONF['setup_password'] = '4fd7a130b6899ca352b5a0bf74026687:e2c448969739f22be306831b505d042a5d55a2ac';
Subito dopo proseguire sul portale a reinserire la password provvisoria, la mail dell'amministratore di postfixadmin e una nuova password da confermare.
Verranno aggiornati i dati nel db e verrà proposto di accedere alla pagina di login dalla quale si potrà poi amministrare i dati e le caselle di posta del server mail.
editare il file /etc/postfix/main.cf in modo tale da avere la seguente configurazione:
myhostname = mail.miodominio.it
mydomain = miodominio.it
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = 127.0.0.1
unknown_local_recipient_reject_code = 550
mynetworks_style = host
#----------parte relativa i file mappa cf -------------------#
relay_domains = proxy:mysql:$config_directory/sql/relay_domains.cf
relay_recipient_maps = proxy:mysql:$config_directory/sql/relay_recipient_maps.cf
virtual_alias_maps = proxy:mysql:$config_directory/sql/virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:$config_directory/sql/virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:$config_directory/sql/virtual_mailbox_maps.cf
transport_maps = proxy:mysql:$config_directory/sql/transport_maps.cf
#----------- fine mappe -----------------------#
virtual_mailbox_base = /var/spool/mail
virtual_uid_maps = static:8
virtual_gid_maps = static:12
mailbox_size_limit = 0
message_size_limit = 0
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
dovecot_destination_recipient_limit = 1
#------------------------- parte relativa a SASL -------------------------
broken_sasl_auth_clients = yes
smtpd_helo_required = yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sender_restrictions = permit_sasl_authenticated
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
#-------------------------- fine SASL --------------------------
#-------------------------- parte relativa TLS -------------------------
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt
smtpd_tls_key_file = /etc/pki/tls/private/localhost.key
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 3
tls_random_source = dev:/dev/urandom
# --------------------------- fine TLS --------------------------
# ------------------ parte relativa le restrizioni SMTPD (relay) ------------------
disable_vrfy_command = yes
non_fqdn_reject_code = 450
invalid_hostname_reject_code = 450
maps_rbl_reject_code = 450
unverified_sender_reject_code = 550
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
permit
compatibility_level = 2
Fare una copia anche del file /etc/postfix/master.cf e sostituirlo con il seguente:
smtp inet n - n - - smtpd
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
dovecot unix - n n - - pipe
flags=DRhu user=mail:mail argv=/usr/libexec/dovecot/deliver -d ${recipient}
Ora creare la directory /etc/postfix/sql nella qualle metteremo tutti i seguenti file delle mappe di collegamento a mariadb
mkdir /etc/postfix/sql cd /etc/postfix/sql
e iniziamo a creare i vari file mappa:
vi /etc/postfix/sql/virtual_alias_maps.cf
hosts = localhost dbname = postfix user = postfix password = password inserita al momento della creazione del database postfix table = alias select_field = goto where_field = address additional_conditions = AND active = '1'
vi /etc/postfix/sql/virtual_domains_maps.cf
hosts = localhost dbname = postfix user = postfix password = password inserita al momento della creazione del database postfix table = domain select_field = domain where_field = domain additional_conditions = AND backupmx = '0' AND active = '1'
vi /etc/postfix/sql/virtual_mailbox_maps.cf
hosts = localhost dbname = postfix user = postfix password = password inserita al momento della creazione del database postfix table = mailbox select_field = maildir where_field = username additional_conditions = AND active = '1'
vi /etc/postfix/sql/virtual_mailbox_limit_maps.cf
hosts = localhost dbname = postfix user = postfix password = password inserita al momento della creazione del database postfix table = mailbox select_field = quota where_field = username additional_conditions = AND active = '1'
vi /etc/postfix/sql/relay_recipient_maps.cf
hosts = localhost dbname = postfix user = postfix password = password inserita al momento della creazione del database postfix table = alias select_field = goto where_field = address additional_conditions = AND active = '1'
Qui viene cercato nel database l'elenco dei domini ai quali è consentito il ralay ossia l'invio delle email.
vi /etc/postfix/sql/relay_domains.cf
hosts = localhost dbname = postfix user = postfix password = password inserita al momento della creazione del database postfix table = domain select_field = domain where_field = domain additional_conditions = AND backupmx = '1' AND active = '1'
Questa mappa viene usata da postfix nel momento in cui un dominio deve inviare della posta.
Qui viene indicato che tipo di trasporto dovrà usare un determinato dominio.
vi /etc/postfix/sql/transport_maps.cf
hosts = localhost dbname = postfix user = postfix password = password inserita al momento della creazione del database postfix table = domain select_field = transport where_field = domain additional_conditions = AND active = '1'
infine cambiamo i diritti alla cartella sql per renderla sicura in quanto al suo interno i file contengono delle password
chown root:postfix /etc/postfix/sql/ -R chmod 0640 /etc/postfix/sql/*.cf chmod 0750 /etc/postfix/sql/
Quindi possiamo scegliere se riscrivere tutti questi file anche sull'altro nodo o trasferirli con scp
scp /etc/postfix/main.cf nodo2:/etc/postfix/ scp /etc/postfix/master.cf nodo2:/etc/postfix/ scp /etc/postfix/sql/* nodo2:/etc/postfix/sql/
apriamo il firewall per postfix
firewall-cmd --add-service=smtp --permanent firewall-cmd --add-service=smtps --permanent firewall-cmd --reload
Facciamo un test di avvio del servizio postfix per essere sicuri che fino ad ora sia tutto ok.
systemctl start postfix.service
Se non ci sono messaggi di errore passiamo a dovecot.
Portiamoci nella cartella
cd /etc/dovecot
rinominiamo il file originale
cp /etc/dovecot/dovecot.conf /etc/dovecto/dovecot.conf.orig
rieditiamolo e lo riscriviamo come di seguito:
vi /etc/dovecto/dovecot.conf
protocols = imap !include conf.d/*.conf !include_try local.conf
Poi creiamo il seguente file:
vi /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=passwordinseritaallaconfigurazionedipostfixadmin
default_pass_scheme = MD5
user_query = \
SELECT CONCAT("/var/spool/mail/", domain) AS home, 8 AS uid, 12 AS gid, \
'maildir:/var/spool/mail/%d/%n' AS mail, CONCAT("dirsize:storage=", quota) AS quota \
FROM mailbox WHERE username = '%u' AND active = '1'
password_query = \
SELECT username AS user, password, \
CONCAT("/var/spool/mail/", domain) AS userdb_home, 8 AS userdb_uid, 12 AS userdb_gid \
FROM mailbox WHERE username = '%u' AND active='1'
iterate_query = SELECT username AS user FROM mailbox WHERE active='1'
ora possiamo entrare nella sottodirectory conf.d
cd /etc/dovecot/conf.d
ed eseguiamo la rinomina e la riscrittura di tutti i seguenti file:
mv 10-auth.conf 10-auth.conf.orig vi 10-auth.conf
auth_mechanisms = plain !include auth-sql.conf.ext
mv 10-mail.conf 10-mail.conf.orig vi 10-mail.conf
mail_location = maildir:/var/spool/mail/%d/%n
namespace inbox {
inbox = yes
}
mail_privileged_group = mail
mail_access_groups = mail
mmap_disable = yes
first_valid_uid = 8
first_valid_gid = 12
mbox_write_locks = fcntl
mv 10-master.conf 10-master.conf.orig vi 10-master.conf
service imap-login {
inet_listener imap {
}
inet_listener imaps {
}
}
service pop3-login {
inet_listener pop3 {
}
inet_listener pop3s {
}
}
service lmtp {
unix_listener lmtp {
}
}
service imap {
}
service pop3 {
}
service auth {
unix_listener auth-userdb {
mode = 0600
user = mail
group = mail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
service auth-worker {
}
service dict {
unix_listener dict {
}
}
mv 10-ssl.conf 10-ssl.conf.orig vi 10-ssl.conf
ssl = yes ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem ssl_cipher_list = PROFILE=SYSTEM
mv 15-lda.conf 15-lda.conf.orig vi 15-lda.conf
postmaster_address = postmaster@miodominio.it
hostname = mail.miodominio.it
protocol lda {
mail_plugins = sieve
}
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
mv 20-managesieve.conf 20-managesieve.conf.orig vi 20-managesieve.conf
protocols = $protocols sieve
protocol sieve {
}
mv 90-sieve.conf 90-sieve.conf.orig vi 90-sieve.conf
plugin {
sieve = /var/spool/mail/%Ld/%Ln.sieve/.dovecot.sieve
sieve_dir = /var/spool/mail/%Ld/%Ln.sieve/
sieve_extensions = +notify +imapflags
}
Infine ricordiamoci di proteggere il seguente file in quanto contiene la password del db
chmod 0600 /etc/dovecot/dovecot-sql.conf.ext
apriamo il firewall per dovecot
firewall-cmd --add-service=imap --permanent firewall-cmd --add-service=imaps --permanent firewall-cmd --reload
Questi file devono essere identici su entrambi i nodi.
Avviamo dovecot
systemctl start dovecot.service
Ora sarebbe bello fare un po' di test con telnet o qualche client ma è troppo lungo da riportare qui quindi andiamo avanti con Roundcubemail
Posizionarsi in /usr/share/
cd /usr/share chown -R root:apache /usr/share/roundcubemail chmod 775 /usr/share/roundcubemail/temp chmod 775 /usr/share/roundcubemail/logs chmod 775 /usr/share/roundcubemail/config
creare il file /etc/httpd/conf.d/roundcubemail.conf
Alias /roundcubemail /usr/share/roundcubemail
<Directory /usr/share/roundcubemail/>
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Allow from all
</IfModule>
</Directory>
<Directory /usr/share/roundcubemail/installer/>
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Allow from all
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
<Directory /usr/share/roundcubemail/bin/>
Order Allow,Deny
Deny from all
</Directory>
<Directory /usr/share/roundcubemail/plugins/enigma/home/>
Order Allow,Deny
Deny from all
</Directory>
creare il database per roundcube
mysql -u root -p
CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password';
entrare nella directory /usr/share/roundcubemail
cd /usr/share/roundcubemail
eseguire
mysql -u root -p roundcubemail < SQL/mysql.initial.sql
Ricaricare l'apache in quanto è stato aggiunto il file roundcubemail.conf
systemctl restart httpd.service
poi vado all'installer
http://ipnodo/roundcubemail/installer
dovrebbe dare tutto verde tranne alcuni arancioni che non sono richiesti
In realtà per chissà quale motivo ci rimane da installare php-xml… quindi:
dnf install php-xml
nella seconda pagina
in smtp settings ho messo ssl://localhost (ma non va quindi ho messo localhost)
e spuntato use the current IMAP username and password for smtp autentication
in fondo cliccare su create config e dovrebbe apparire un messaggio che avvisa che il file di configurazione è stato posizionato all'interno di RCMAIL_CONFIG_DIR
cliccare su continue
si fanno i test e poi si va alla pagina di login di roundcube
http://ipnodo/roundcubemail
se è tutto ok si dovrebbe eliminare la directory installer.
Quindi tutta la parte relativa alle configurazioni di postfixadmin, postfix, dovecot e roundcubemail sono da ripetere sul secondo nodo stando attenti agli IP
Su entrambi i nodi eseguire le seguenti 4 operazioni:
1-aprire il firewall
firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload
2-avviare il servizio pcsd
systemctl start pcsd.service
3-abilitarlo all'avvio
systemctl enable pcsd.service
4-dare una password all'utente riservato per il cluster
passwd hacluster
Da eseguire solo su uno dei due nodi:
1-Generare le chiavi di autenticazione per i nodi del cluster
pcs cluster auth stn1 stn2
2-Creare il cluster dandogli un nome:
pcs cluster setup --name clst stn1 stn2
Se tutto è andato bene avremo una serie di messagi come di seguito:
Destroying cluster on nodes: stn1, stn2... stn2: Stopping Cluster (pacemaker)... stn1: Stopping Cluster (pacemaker)... stn2: Successfully destroyed cluster stn1: Successfully destroyed cluster Sending cluster config files to the nodes... stn1: Succeeded stn2: Succeeded Synchronizing pcsd certificates on nodes rp1, rp2... stn1: Success stn2: Success Restarting pcsd on the nodes in order to reload the certificates... stn1: Success stn2: Success
3-avviare il cluster:
pcs cluster start --all
QUesto comando avvia il servizio pacemaker su entrambi i nodi altrimenti si puo eseguire
systemctl start pacemaker.service
separatamente su ogni nodo.
Se è stato lanciato il pcs cluster start –all avremo come riusltato il seguente messaggio:
rp2: Starting Cluster... rp1: Starting Cluster...
Verificare su entrambi i nodi la funzionalità del cluster con:
crm_mon
che avrà come esito qualcosa simile a questo:
Stack: corosync Current DC: rp1 (version 1.1.14-2.5a6cdd1.git.fc24-5a6cdd1) - partition with quorum Last updated: Fri Feb 10 08:30:28 2017 Last change: Fri Feb 10 08:28:14 2017 by hacluster via crmd on stn1 2 nodes and 0 resources configured Online: [ stn1 stn2 ]
Da qui in avanti si apre un mondo di scelte possibili.
Io inoltre ho lanciato i seguenti comandi SOLO DA UNO DEI DUE NODI:
disabilitare lo stonith:
pcs property set stonith-enabled=false
ignorare il quorum:
pcs property set no-quorum-policy=ignore
di default ogni risorsa rimane dove è stata lasciata l'ultima volta (credo):
pcs property set default-resource-stickiness=INFINITY
Iniziamo a creare lanostra prima risorsa ovvero l'indirizzo ip
pcs resource create clstIP IPaddr2 ip=192.168.1.63 cidr_netmask=24
esito di crm_mon:
Stack: corosync Current DC: rp1 (version 1.1.14-2.5a6cdd1.git.fc24-5a6cdd1) - partition with quorum Last updated: Fri Feb 10 08:36:38 2017 Last change: Fri Feb 10 08:36:34 2017 by root via cibadmin on rp1 2 nodes and 1 resource configured Online: [ rp1 rp2 ] clstIP (ocf::heartbeat:IPaddr2): Started rp1
Dobbiamo ora preparare e attivare lo spazio in cui andremo a mettere i dati del sito web e della posta elettronica.
Abbiamo precedentemente creato il dispositivo /dev/drbd0 con la risorsa “r0.res” e reso primario su entrambi i nodi
Quindi è come se avessimo un normale HD a disposizione, e come tutti gli HD deve essere formattato prima di usarlo
Solo da uno dei due nodi:
mkfs.ext4 /dev/drbd0
esito:
mke2fs 1.42.13 (17-May-2015) Discarding device blocks: done Creating filesystem with 55460079 4k blocks and 13869056 inodes Filesystem UUID: bad70a0f-8c24-4088-8a38-45ec0dca5272 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
Ora fermiamo e ci accertiamo che tutti i servizi da far gestire al cluster siano disabilitati al boot (SU ENTRAMBI I NODI)
systemctl stop zoneminder.service systemctl stop httpd.service systemctl stop dovecot.service systemctl stop postfix.service systemctl stop mariadb.service systemctl disable mariadb.service systemctl disable postfix.service systemctl disable httpd.service systemctl disable zoneminder.service
Lasciamo invece attivo al boot solo il servizio drbd e dovecot:
systemctl enable drbd.service systemctl enable dovecot.service
Ora montiamo il dispositivo drbd su una directory provvisoria, in essa dovremo copiare la struttura dei file che dobbiamo avere ridondanti.
mount /dev/drbd0 /mnt
Ci portiamo nella directory di Mariadb (ha lo stesso nome di mysql)
cd /var/lib/mysql
Copiamo l'intero contenuto comprese le sottodirectory sull'unità appena montata
cp -R . /mnt/
Diamo la proprietà della directory all'utente del DB mysql:
chown -R mysql:mysql /mnt/
da:
total 176196 drwxr-xr-x 8 root root 4096 Feb 10 14:19 . dr-xr-xr-x. 18 root root 4096 Feb 7 19:59 .. -rw-r----- 1 root root 16384 Feb 10 14:19 aria_log.00000001 -rw-r----- 1 root root 52 Feb 10 14:19 aria_log_control -rw-r----- 1 root root 79691776 Feb 10 14:19 ibdata1 -rw-r----- 1 root root 50331648 Feb 10 14:19 ib_logfile0 -rw-r----- 1 root root 50331648 Feb 10 14:19 ib_logfile1 drwx------ 2 root root 16384 Feb 10 08:43 lost+found -rw-r----- 1 root root 0 Feb 10 14:19 multi-master.info drwx------ 2 root root 4096 Feb 10 14:19 mysql -rw-r----- 1 root root 16 Feb 10 14:19 mysql_upgrade_info drwx------ 2 root root 4096 Feb 10 14:19 performance_schema drwx------ 2 root root 4096 Feb 10 14:19 postfix drwx------ 2 root root 4096 Feb 10 14:19 roundcubemail drwx------ 2 root root 4096 Feb 10 14:19 zm
a:
total 176196
drwxr-xr-x 8 mysql mysql 4096 Feb 10 14:19 . dr-xr-xr-x. 18 root root 4096 Feb 7 19:59 .. -rw-r----- 1 mysql mysql 16384 Feb 10 14:19 aria_log.00000001 -rw-r----- 1 mysql mysql 52 Feb 10 14:19 aria_log_control -rw-r----- 1 mysql mysql 79691776 Feb 10 14:19 ibdata1 -rw-r----- 1 mysql mysql 50331648 Feb 10 14:19 ib_logfile0 -rw-r----- 1 mysql mysql 50331648 Feb 10 14:19 ib_logfile1 drwx------ 2 mysql mysql 16384 Feb 10 08:43 lost+found -rw-r----- 1 mysql mysql 0 Feb 10 14:19 multi-master.info drwx------ 2 mysql mysql 4096 Feb 10 14:19 mysql -rw-r----- 1 mysql mysql 16 Feb 10 14:19 mysql_upgrade_info drwx------ 2 mysql mysql 4096 Feb 10 14:19 performance_schema drwx------ 2 mysql mysql 4096 Feb 10 14:19 postfix drwx------ 2 mysql mysql 4096 Feb 10 14:19 roundcubemail drwx------ 2 mysql mysql 4096 Feb 10 14:19 zm
Smontiamo l'unità drbd
umount /mnt/
Ora creiamo la risorsa filesystem per il cluster (ad essa viene dato il nome fs_mmweb che sta ad indicare che è il filesystem nel quale saranno posizionati i dati MariaDb, Mail, e WEB
pcs resource create fs_mmweb Filesystem device="/dev/drbd0" directory="/var/lib/mysql" fstype="ext4"
N.B. di seguito un esempio per il caso in cui ci sia da specificare ulteriori parametri come rw,xattr…
pcs resource create fs_mmweb Filesystem device="/dev/drbd0" directory="/var/lib/mysql" fstype="ext4" options="rw,acl,user_xattr"
POssiamo controllare lo stato del cluster:
crm_mon
Stack: corosync Current DC: rp2 (version 1.1.14-2.5a6cdd1.git.fc24-5a6cdd1) - partition with quorum Last updated: Fri Feb 10 14:27:31 2017 Last change: Fri Feb 10 14:27:27 2017 by root via cibadmin on rp2 2 nodes and 2 resources configured Online: [ rp2 ] OFFLINE: [ rp1 ] clstIP (ocf::heartbeat:IPaddr2): Started rp2 fs_mmweb (ocf::heartbeat:Filesystem): Started rp2
Siamo pronti per creare la risorsa Mariadb che gestisce i database.
pcs resource create srv_maria ocf:heartbeat:mysql binary="/usr/bin/mysqld_safe" config="/etc/my.cnf" datadir="/var/lib/mysql" pid="/var/lib/mysql/mysql.pid" socket="/var/lib/mysql/mysql.sock" additional_parameters="--bind-address=0.0.0.0" op start timeout=60s op stop timeout="60s" op monitor interval=20s timeout=30s
Invece se dovessimo creare la stessa risorsa su un cluster debian bisogna cambiare alcuni percorsi:
pcs resource create srv_maria ocf:heartbeat:mysql binary="/usr/bin/mysqld_safe" config="/etc/mysql/my.cnf" datadir="/var/lib/mysql" pid="/var/lib/mysql/mysql.pid" socket="/var/run/mysqld/mysqld.sock" additional_parameters="--bind-address=0.0.0.0" op start timeout=60s op stop timeout="60s" op monitor interval=20s timeout=30s
si deve specificare che su debian se controlliamo l'avvio dei servizi con systemctl, questi non sembrano avviati perchè l'output del comando dice “inactive” in realtà il demone del servizio è stato avviato.\
crm_mon
Stack: corosync Current DC: rp2 (version 1.1.14-2.5a6cdd1.git.fc24-5a6cdd1) - partition with quorum Last updated: Fri Feb 10 14:32:10 2017 Last change: Fri Feb 10 14:32:05 2017 by root via cibadmin on rp2 2 nodes and 3 resources configured Online: [ rp2 ] OFFLINE: [ rp1 ] clstIP (ocf::heartbeat:IPaddr2): Started rp2 fs_mmweb (ocf::heartbeat:Filesystem): Started rp2 srv_maria (ocf::heartbeat:mysql): Started rp2
Ora creiamo la directory che dovrà contenere le e-mail del mio server ovvero le mailbox virtuali.
Questa directory in realtà è già esistente ma noi dovremo montarla in un'altra posizione..
mkdir /var/lib/mysql/vmail
ci portiamo nella directory originaria impostata di default
cd /var/spool/mail
copiamo l'intero contenuto nella nuova directory
cp . -R /var/lib/mysql/vmail/
anche in questo caso cambiamo la proprietà della nuova directory:
chown -R mail:mail /var/lib/mysql/vmail/
vediamo la situazione della direcotry /var/spool/mail
total 12 drwxrwxr-x. 3 root mail 4096 Feb 8 21:52 . drwxr-xr-x. 12 root root 4096 Feb 7 19:40 .. -rw-rw----. 1 rpc mail 0 Feb 7 17:36 rpc
e quella di /var/lib/mysql/vmail dopo la copia
total 12 drwxr-xr-x 3 root root 4096 Feb 10 14:43 . drwxr-xr-x 9 mysql mysql 4096 Feb 10 14:41 .. -rw-r----- 1 root root 0 Feb 10 14:43 rpc
e dopo il cambio di proprietà
total 12 drwxr-xr-x 3 mail mail 4096 Feb 10 14:43 . drwxr-xr-x 9 mysql mysql 4096 Feb 10 14:41 .. -rw-r----- 1 mail mail 0 Feb 10 14:43 rpc
ma non è sufficiente quindi:
chown rpc:mail /var/lib/mysql/vmail/rpc
ora rinominare la directory originaria su ENTRAMBI I NODI
mv /var/spool/mail /var/spool/mail.orig
e creare un link simbolico alla nuova dirctory(PER IL NODO CON IL FS MONTATO)
ln -s /var/lib/mysql/vmail/ /var/spool/mail
creare una directory fittizia su /var/lib/mysql (SUL NODO PASSIVO)
mkdir /var/lib/mysql/vmail
ora creare anche qui il link simbilico (SUL NODO PASSIVO)
ln -s /var/lib/mysql/vmail/ /var/spool/mail
verificare con
ls -la
total 48 drwxr-xr-x. 12 root root 4096 Feb 10 14:53 . drwxr-xr-x. 22 root root 4096 Feb 9 21:02 .. drwxr-x--x. 2 root abrt 4096 May 25 2016 abrt drwx------. 2 abrt abrt 4096 May 25 2016 abrt-upload drwxr-xr-x. 2 root root 4096 Feb 7 17:36 anacron drwx------. 3 daemon daemon 4096 Feb 7 17:37 at drwx------. 2 root root 4096 Feb 3 2016 cron drwxr-xr-x. 2 root root 4096 Feb 3 2016 lpd lrwxrwxrwx 1 root root 21 Feb 10 14:53 mail -> /var/lib/mysql/vmail/ drwxrwxr-x. 3 root mail 4096 Feb 8 21:52 mail.orig drwxr-xr-x. 2 root root 4096 Feb 5 2016 plymouth drwxr-xr-x. 16 root root 4096 Feb 7 19:40 postfix drwxr-xr-x. 2 apache apache 4096 Jul 29 2016 zoneminder-upload
In questo modo il nodo che gestirà la posta utilizzerà la directory di default che in realtà è un link alla nuova
Quindi creiamo in fine la nostra risorsa postfix che smisterà nel modo corretto la posta.
pcs resource create srv_postfix ocf:heartbeat:postfix op monitor timeout="20s" interval="60s"
Verifichiamo:
crm_mon
Stack: corosync Current DC: rp2 (version 1.1.14-2.5a6cdd1.git.fc24-5a6cdd1) - partition with quorum Last updated: Fri Feb 10 14:57:12 2017 Last change: Fri Feb 10 14:56:03 2017 by root via cibadmin on rp2 2 nodes and 4 resources configured Online: [ rp2 ] OFFLINE: [ rp1 ] clstIP (ocf::heartbeat:IPaddr2): Started rp2 fs_mmweb (ocf::heartbeat:Filesystem): Started rp2 srv_maria (ocf::heartbeat:mysql): Started rp2 srv_postfix (ocf::heartbeat:postfix): Started rp2
in modo analogo al mail server, dobbiamo cambiare la posizione alla directory di default per il web (/var/www) che normalmente ha questi diritti:
ls -la /var/www total 16 drwxr-xr-x. 4 root root 4096 Feb 7 18:06 . drwxr-xr-x. 22 root root 4096 Feb 9 21:02 .. drwxr-xr-x. 2 root root 4096 Feb 4 2016 cgi-bin drwxr-xr-x. 2 root root 4096 Feb 4 2016 html
Quindi (SU ENTRAMBI I NODI):
mkdir /var/lib/mysql/www
poi ci portiamo nella directory originale
cd /var/www
e copiamo tutto il contenuto
cp -R . /var/lib/mysql/www/
poi rinominiamo la directory originale (SU ENTRAMBI I NODI)
cd .. mv /var/www/ /var/web.orig/
perchè dovrà far posto al nuovo link simbolico (SU ENTRAMBI I NODI)
ln -s /var/lib/mysql/www/ /var/www
Bene siamo quasi pronti per creare la risorsa web-server (SU ENTRAMBI I NODI)
vi /etc/httpd/conf.d/status.conf
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 </Location>
Ora si che creiamo il servizio per pacemaker
pcs resource create web_server ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://127.0.0.1/server-status" op monitor interval=20s
Controlliamo lo stato del cluster
crm_mon
Stack: corosync Current DC: rp2 (version 1.1.14-2.5a6cdd1.git.fc24-5a6cdd1) - partition with quorum Last updated: Fri Feb 10 15:13:20 2017 Last change: Fri Feb 10 15:13:14 2017 by root via cibadmin on rp2 2 nodes and 5 resources configured Online: [ rp2 ] OFFLINE: [ rp1 ] clstIP (ocf::heartbeat:IPaddr2): Started rp2 fs_mmweb (ocf::heartbeat:Filesystem): Started rp2 srv_maria (ocf::heartbeat:mysql): Started rp2 srv_postfix (ocf::heartbeat:postfix): Started rp2 web_server (ocf::heartbeat:apache): Started rp2
pcs resource create nome_risorsa systemd:smb
a questo punto ci sarebbe da valutare l'opportunità o meno di raggruppare le risorse in gruppi e stabilire l'ordine di avvio, in quanto il filesystem deve avviarsi prima dell' IP e di mysql.
in modo analogo mariadb deve avviarsi prima del server web e di zoneminder ecc..
Nel progetto originario avevo tutti i servizi e i filesystem su un unico cluster. quindi sulla stessa unità avevo dovuto creare più partizioni per differenziare i servizi. Infatti avevo anche samba e il web su un FS diverso dalle email.
Potevo avviare solo il servizio di posta e non il web e avevo raggruppato in modo differente.
Ho pensato che come sempre possiamo creare un gruppo per i servizi DB e mail insieme il servizio web invece lasciarlo libero anche se poi è vincolato al FS e dovrà sempre e comunque avviarsi solo se è attivo l'altro gruppo.
iniziamo creando il gruppo mariamail
pcs resource group add gr_mariamail fs_mmweb srv_maria srv_postfix clstIP
controlliamo con il solito crm_mon
crm_mon
Stack: corosync
Current DC: rp2 (version 1.1.14-2.5a6cdd1.git.fc24-5a6cdd1) - partition with quorum
Last updated: Fri Feb 10 15:54:01 2017 Last change: Fri Feb 10 15:53:58 2017 by root via cib
admin on rp2
2 nodes and 5 resources configured
Online: [ rp2 ]
OFFLINE: [ rp1 ]
web_server (ocf::heartbeat:apache): Started rp2
Resource Group: gr_mariamail
fs_mmweb (ocf::heartbeat:Filesystem): Started rp2
srv_maria (ocf::heartbeat:mysql): Started rp2
srv_postfix (ocf::heartbeat:postfix): Started rp2
clstIP (ocf::heartbeat:IPaddr2): Started rp2
Ed in fine poniamo la condizione che il server apache parta dopo il gruppo gr_mariamail
pcs constraint order gr_mariamail then web_server
che darà un messaggio simile al seguente
Adding gr_mariamail web_server (kind: Mandatory) (Options: first-action=start then-action=start)
E oltre tutto che venga avviato sullo stesso nodo in cui si trova il gruppo gr_mariamail
Ovvero la realizzazione di uno spazio dati riservato in base al nome di dominio.
Ad esempio i domini da me registrati sono i seguenti:
stefanostrozzi.it
risorsalibera.org
strsoft.eu
Il mio server deve ospirare tutti e tre i domini facendo in modo però che se scrivo nella barra dell'indirizzo del browser il nome del sito deve restituirmi una pagina differente per ciascuno.
Per fare questo si utilizzano i virtualhost.
Innanzi tutto creiamo una directory per ciascuno (ESEGUIRE SOLO SUL NODO CHE HA LE RISORSE WEB):
mkdir /var/www/risorsalibera.org mkdir /var/www/strsoft.eu mkdir /var/www/stefanostrozzi.it
per ora creo nelle prime due solo il file index.html con il nome del sito senza fare altro.(SUL NODO CON RISORSA WEB)
Poi metterò in /etc/httpd/conf.d/ il relativo file che possiamo vederequi di seguito (SU CIASCUN NODO)
vi /etc/httpd/conf.d/risorsalibera.conf
<VirtualHost *:80>
DocumentRoot "/var/www/risorsalibera.org"
ServerName www.risorsalibera.org
ServerAlias risorsalibera.org
<Directory /var/www/risorsalibera.org>
Options Indexes FollowSymLinks MultiViews
AllowOverride none
Order allow,deny
allow from all
</Directory>
# Other directives here
</VirtualHost>
Creiamo il file index anche per il secondo vhost (SOLO SUL NODO ATTIVO)
vi /etc/httpd/conf.d/strsoft.conf
Creiamo il file di configurazione (SU ENTRAMBI I NODI)
<VirtualHost *:80>
DocumentRoot "/var/www/risorsalibera.org"
ServerName www.risorsalibera.org
ServerAlias risorsalibera.org
<Directory /var/www/risorsalibera.org>
Options Indexes FollowSymLinks MultiViews
AllowOverride none
Order allow,deny
allow from all
</Directory>
# Other directives here
</VirtualHost>