본문 바로가기

Snippets

Ubuntu에서 mosquitto 컴파일 및 mysql 연동

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

* 본 문서는 ubuntu 14.04 LTS 기준으로 작성되었습니다.

* docker에서 진행됨으로 ubuntu의 docker 공식 이미지를 사용하였습니다.


1. 사전 준비

sudo apt-get install build-essential libc-ares-dev uuid-dev libssl-dev libcurl4-openssl-dev libmysqlclient-dev
sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto


2. mosquitto 다운로드 및 컴파일

http://mosquitto.org/download/ 사이트에서 최신 source 다운로드(현재 버전은 1.4.8)

cd ~
wget http://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz
tar xvf mosquitto-1.4.8.tar.gz
cd mosquitto-1.4.8
make
sudo make install

sudo mosquitto 로 설치 확인

3. mosquitto-auth-plugin 다운로드 및 컴파일. git허브에서 다운로드 받으므로 git 설치

sudo apt-get install git
cd ~
git clone https://github.com/jpmens/mosquitto-auth-plug.git
cd mosquitto-auth-plug
cp config.mk.in config.mk
make & make install

4. 컴파일 된 auth-plug.so 파일 이동 저장 및 mosquitto 설정 파일 생성

sudo mv auth-plug.so /usr/local/lib/
cd /etc/mosquitto/
sudo cp mosquitto.conf.example mosquitto.conf
vi mosquitto.conf

5. 환결설정

auth_plugin /usr/local/lib/auth-plug.so
auth_opt_backends mysql
auth_opt_host localhost
auth_opt_port 3306
auth_opt_dbname testdb
auth_opt_user test
auth_opt_pass 1111
auth_opt_userquery SELECT pw FROM users WHERE username = '%s'
auth_opt_superquery SELECT COUNT(*) FROM users WHERE username = '%s' AND super = 1
auth_opt_aclquery SELECT topic FROM acls WHERE (username = '%s') AND (rw >= %d)
auth_opt_anonusername AnonymouS

6. mosquitto 실행

sudo mosquitto -c /etc/mosquitto/mosquitto.conf


7. 테스트

sudo apt-get install mosquitto-clients
mosquitto_pub -t 'topic' -u username -P password -m 'message'
mosquitto_sub -t 'topic' -u username -P password



mosquitto-auth-plugin의 비밀번호는 PBKDF2 로 해쉬된 값을 저장해야 합니다. 이 해쉬를 만드는 방법중 하나는 mosquitto-auth-plugin을 clone 한 디렉토리 안에 있는 np 툴을 이용하면 비밀번호가 해쉬되어 나옵니다. 이 도구를 사용하면 됩니다.


mysql의 기본적인 스키마 구성 및 권한 설정은 https://github.com/jpmens/mosquitto-auth-plug 에서 확인이 가능합니다.



'Snippets' 카테고리의 다른 글

crontab 실행하기  (0) 2016.02.25
java 에서 활성화된 thread 카운트 보기  (0) 2016.02.23
Ubuntu 에서 docker 설치하기  (0) 2016.02.23
VI 명령어 모음  (0) 2016.02.19
MySQL에서 Random으로 데이타 가지고 오기  (0) 2016.02.18