IT, 개발/서버

리눅스 (Ubuntu-20) MQTT 통신 설정하기 (mosquitto 설치, websocket 연동)

개발자스터디 2022. 4. 7.
728x90
반응형

mosquitto

리눅스에서 MQTT 통신을 하기 위한 설정 방법 및 테스트 방법을 알아보도록 하겠습니다.

OS : Ubuntu-20.04.4

mosquitto version : mosquitto-1.4.10

 

websocket 연동하는 방식으로 진행하였습니다.

1. apt update & install
2. mosquitto 다운로드 
3. config 파일 수정 
4. make 
5. websocket 설정 
6. user 추가
7. 실행 테스트 

 

 


1. apt update & install

$ sudo apt-get install
$ sudo apt-get update
$ sudo apt-get install libssl-dev
$ sudo apt-get install cmake
$ sudo apt-get install libc-ares-dev

 

 

2. mosquitto 다운로드 

 

http://mosquitto.org/files/source/

위 링크에서 여러 버전을 확인할 수 있고 다운로드할 수 있습니다.

 

mosquitto 다운로드

 

저는 mosquitto-1.4.10.tar.gz을 다운로드하여 사용하도록 하겠습니다.

파일 다운로드 후 원하는 경로로 이동시켜서 압축 풀어줍니다.

 

 

압축 풀기 명령어

$ tar zxvf mosquitto-1.4.10.tar.gz

 

3. config 파일 수정 

 

폴더 내부에서 config.mk 파일을 수정합니다.

$ cd mosquitto-1.4.10
$ sudo gedit config.mk

 

편집기로 config.mk파일을 열어서 WITH_WEBSOCKETS 항목의 값을 수정합니다.

no를 yes로 변경합니다.

WITH_WEBSOCKETS:=no 
                     ↓
WITH_WEBSOCKETS:=yes 

 

4. make 

 

make 명령어를 사용하여 빌드합니다.

$ make
$ sudo make install
make 시 오류가 날 경우 오류 메시지 확인하고 apt install을 사용하여 필요한 패키지를 설치해줘야 합니다.

 

5. websocket 설정 

 

config파일을 수정하겠습니다.

파일을 수정하기 위해 편집기를 열어보겠습니다.

$ sudo gedit mosquitto.conf

 

파일 내부에서 port 1883 항목을 찾습니다.

여기로 가서 아래 내용 추가합니다.

port 1883
listener 9090
protocol websockets

 

port, listener 항목을 각자 상황에 맞게 설정하시고 저장합니다.

 

 

6. user 추가

$ sudo adduser mosquitto

 

 

설정이 완료되면 재부팅하고 테스트를 해보도록 하겠습니다.

 

$ sudo reboot
        or
$ sudo /usr/sbin/init 6

 

 

7. 실행 테스트 

 

mosquitto를 실행해보도록 하겠습니다.

 

$ mosquitto -c /압축푼경로/mosquitto-1.4.10/mosquitto.conf

 

정상적으로 실행되었다면 

 

websockets listen socket on port 
ipv4 listen socket on port
ipv6 listen socket on port

 

위 항목이 표시됩니다.


※ mosquitto 실행 상태 확인하는 명령어

$ ps -ef | grep mosquitto
$ netstat -ano | grep LISTEN

 

mosquitto 실행시킨 상태로 두고 새로운 터미널 창을 2개 더 열어줍니다.

 

하나의 터미널 창에는 mosquitto_sub 명령어를 실행시킨 후 대기하고

또 다른 터미널에서 mosquitto_pub 명령어를 실행해서 정상적으로 통신이 되는지 확인해보겠습니다.

 

mosquitto_sub 예제 명령어

$ mosquitto_sub -h localhost -t testTopic 

 

mosquitto_pub 예제 명령어

$ mosquitto_pub -h localhost -t testTopic -m "testMsg"

 

mosquitto_pub 명령어를 실행하였을 때

나머지 두 개의 터미널에서 메시지가 출력된다면 정상적으로 작동되고 있는 것입니다. 

 

 

 

728x90
반응형