[MQTT] Mosquitto 설치 (Mac M1)

현지렁이·2023년 5월 7일
0

PillMinder

목록 보기
3/5

📌 MQTT란?

최소한의 전력과 패킷량으로 통신하는 프로토콜로, 제한된 통신 환경을 고려하여 만들어졌다.

우리가 알고있는 socket.io는 MQTT보다 더 low 레벨이다.

📍 구조

구조는 [ Publisher ----------> Broker ----------> Subscriber ] 의 형태이다.

📍 Publisher

Topic을 발행한다.

Topic: Publisher에서 발행하는 데이터 Subscriber가 받고자 하는 데이터

토픽은 계층적으로 구성할 수 있다. 따라서 대량의 센서 기기들을 효율적으로 관리할 수 있다.

예를 들어 중앙제어 장치에서, 해당 아파트를 구독한 에어컨들을 켜고 끌 수 있고, 그 아파트 들이 각각 구독한 동, 호수라는 하위 토픽으로 인하여 세세하게 끄고 켤 수도 있다.

MQTT 통신을 잘 활용한 예의 어플리케이션은 slack이 있다.

📍 Broker

Topic과 구독/발행을 총괄한다.
Publish와 Subscriber 사이에 메세지를 관리하여 전송해주는 중앙 관리자이다.

📍 Subscriber

Topic을 구독한 구독자이다.

📌 mosquitto란?

모스키토는 MQ Telemetry Trasport 프로토콜 버전 3.1 과 3.1.1 을 구현한 오픈소스 메세지 브로커이다. MQTT 는 생산자/소비자 모델을 사용한 메세지 이동에 관한 가벼운 메소드를 제공한다. 이것은 저전력 파워센서 나 모바일 디바이스 , 임베디드 컴퓨터나 아두이노 마이크로 컨트롤러 같은 "디바이스 to 디바이스 " 간의 메세징을 처리하기에 적합하다.

참고 : Mac) MQTT mosquitto 설치 & 테스트

⚙️ mosquitto 설치

1. 자바 설치

mosquitto 설치를 위해 먼저 자바를 설치해주었다. (대체 왜 아직까지 자바 설치를 안했던거지????ㅋㅋ)

처음에 자바가 설치되어 있지 않은 상태에서 java -version 명령어를 입력해보면 아래와 같은 문구가 뜬다.

The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

해당 링크로 접속해 자바를 설치해주었다.


2. 설치 확인

/usr/libexec/java_home -v 1.8
java -version

설치 후 위 명령어를 입력하면 자바가 정상적으로 설치된 것을 확인할 수 있다.

brew를 이용해서도 jdk를 설치할 수 있다.
password는 본인의 mac 비밀번호를 입력하면 된다.

참고 : [MacOS] 자바(JDK 1.8 다운로드) 설치(with brew)

3. mosquitto 설치

강의 자료에 나와있는대로 sudo apt update를 시도했는데

java가 설치되어 있음에도 불구하고 계속 해당 에러가 떴다.

알고 보니 mac은 sudo apt update가 아닌 brew update를 쓰면 된다고 한다. (이유는 더 알아봐야지)

그리고 mosquitto를 설치하기 위해

brew install mosquitto

위 명령어를 입력했더니 또 에러가 떴다.

Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
To rerun under ARM use:
arch -arm64 brew install ...
To install under x86_64, install Homebrew into /usr/local.

해당 에러는 m1 맥 사용자에게 나타나는 homebrew 설치 에러라고 한다.

참고 :

위 글들을 따라서 homebrew를 다시 설치하고 설정해주어도 똑같은 에러가 떴다.

그래서 에러 메시지에 나온 대로

arch -arm64 brew install mosquitto
arch -arm64 brew install mosquitto-clients

명령어를 사용해주었더니 잘 설치되었다.
M1이 ISA가 달라서 호환성 문제때문에 에러가 발생하는 것 같다.(컴퓨터구조 시간에 배운 얄팍한 지식을 바탕으로 추측한 내 뇌피셜임.)


4. mosquitto 실행

강의자료에 나온대로 sudo(brew) service start mosquitto를 입력했더니 또!!!!!!!!에러가 떴다.
구글링해서 service가 아니라 services로 쓰면 된다는 걸 알게 됐다.

brew services start mosquitto

위와 같이 mosquitto가 정상적으로 실행된 것을 확인할 수 있다.

정리하면!!!!

📌 mosquitto 설치 및 실행

⚙️ 설치

brew install mosquitto

⚙️ 실행

brew services start mosquitto

⚙️ 중지

brew services stop mosquitto

⚙️ 재실행

brew services restart mosquitto

⚙️ 비서비스 시작

/opt/homebrew/opt/mosquitto/sbin/mosquitto -c /opt/homebrew/etc/mosquitto/mosquitto.conf

mosquitto가 설치된 경로에 따라 다르니 주의하자!!
위의 비서비스 명령어를 사용하면 brew services start mosquitto을 따로 명령 할 필요가 없다.

0개의 댓글