Installazione server MQTT (Mosquitto) su CentOS 7
In questo breve tutorial andremo a descrivere come installare il server di messaggistica Mosquitto ( server MQTT) su macchina virtuale CentOS 7.
Consideriamo di partire da una macchina virtuale CentOS 7 (per l’installazione seguire questo articolo) ed aggiorniamola
yum update
aggiungiamo il repository epel
yum install epel-release vim
installiamo il software Mosquitto
yum install mosquitto
avviamo il server MQTT
systemctl start mosquitto
abilitiamo l’avvio allo startup
systemctl enable mosquitto
Adesso rendiamo sicuro il server MQTT vincolando la comunicazione tra Subscribers, Publishers e Broker ad un determinato utente, nel nostro caso mqtt
mosquitto_passwd -c /etc/mosquitto/passwd mqtt
modifichiamo il file di configurazione di Mosquitto per evitare di far scambiare in maniera anonima messaggi, impostando la metodologia di scambio tramite autenticazione, in particolare
vim /etc/mosquitto/mosquitto.conf
allow_anonymous false
password_file /etc/mosquitto/passwd
riavviamo il demone di Mosquitto
systemctl enable mosquitto
Adesso simuliamo uno scambio di messaggi tra Subscribers e Publishers, apriamo due terminali che si connettono al server MQTT, nel primo eseguiamo il seguente comando (simulando il Subscriber)
mosquitto_sub -h localhost -t primo_test -u "mqtt" -P "password_scelta"
mentre nell’altro terminale simuliamo il Publisher, ed effettuiamo un test di connessione
mosquitto_pub -h localhost -t "primo_test" -m "Primo Messaggio" -u "mqtt" -P "password_scelta"
avremo che il Broker (server MQTT) permetterà lo scambio di messaggi, ed avremo dal lato Subscribers il seguente risultato
[root@localhost log]# mosquitto_sub -h localhost -t primo_test -u “mqtt” -P “password_scelta”
Primo Messaggio
nel caso avessi tentato di utilizzare per lo scambio di messaggi un utente non aggiunto all’interno del nostro elenco ( è possibile verificarli nel file passwd ), ad esempio
mosquitto_sub -h localhost -t "secondo_test" -u "mqtt2" - P "altra_password"
avremo avuto il seguente errore
Connection Refused: not authorised.