주의: 개인적인 메모 목적으로 정리한 글입니다.
ejabberd XMPP서버와 Mysql 조합
- 필요조건
- ejabberd는 FULLTEXT index를 InnoDB엔진과 함께 사용 -> Mysql 5.6 이상이 설치되어야 함
- Amazone AWS의 Mysql RDS 지원함
Mysql ejabberd 셋팅
- DB 접근 권한 추가
echo "GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'password';" | mysql -h localhost -u root -p
- . DB 생성
echo "CREATE DATABASE ejabberd;" | mysql -h localhost -u ejabberd -p
- DB 접속 확인
echo "CREATE DATABASE ejabberd;" | mysql -h localhost -u ejabberd -p
- Mysql 스키마 적용
cd /opt/ejabberd-19.09.1/lib/ejabberd-19.09.1/priv/sql (예. 설치된 디렉토리 하위의 sql 디렉토리에 스키마 sql들이 존재함)
mysql -h localhost -D ejabberd -u ejabberd -p < mysql.sql
참고: new sql 파일이 존재하는데 여러개의 XMPP도메인 사용할 때인 듯(참고 링크)
[참고-생성 결과 테이블 캡쳐]
- ejabberd 설정 진행
참고: https://docs.ejabberd.im/admin/databases/mysql/
vi /opt/ejabberd/conf/ejabberd.yml 후 아래 내용 추가
## MySQL server:
##
sql_type: mysql
sql_server: "localhost"
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "암호입력"
##
## If you want to specify the port:
sql_port: 3306
#유저 암호를 기본설정인 internal에서 db를 사용한다는 설정 추가
auth_method: sql
auth_password_format: scram
# modules의 기본 저장을 DB로 변경(각 module별로 개별 설정도 가능)
default_db: sql
#유저 세션을 DB에 저장(redis 설정 후 sm_db_type: redis 로 설정하면 redis를 사용). 참고: https://docs.ejabberd.im/admin/configuration/#database-and-ldap-configuration
#Mysql의 경우 sm 테이블에 저장됨
sm_db_type: sql
-
참고: 추가 설정이 없으면 유저 암호가 plain text로 저장됨
- 아래 설정으로 변경해서 암호화해서 저장되도록 변경
vi /opt/ejabberd/conf/ejabberd.yml 후 아래 내용 추가
auth_password_format: scram
이후 계정 생성해보면 암호화되어서 저장됨
ex) ./ejabberdctl register "test-enc" "localhost" "test-enc" 로 계정 생성 후 DB 조회해봄
- 암호화되서 저장된 결과 캡쳐
'XMPP 채팅 > ejabberd' 카테고리의 다른 글
ejabberd XMPP 채팅 서버 셋팅 2 - client 설치 후 실제 채팅 진행해보기 (0) | 2019.10.25 |
---|---|
ejabberd XMPP 채팅 서버 셋팅 1 - 서버 설치 (0) | 2019.10.25 |