본문 바로가기
Back-end/RabbitMQ

[RabbitMQ] 무작정 시작하기 (3) - 환경설정

by 허도치 2020. 1. 10.

2020/01/08 - [Back-end/RabbitMQ] - [RabbitMQ ] 무작정 시작하기 (1) - 설치 및 실행

2020/01/08 - [Back-end/RabbitMQ] - [RabbitMQ] 무작정 시작하기 (2) - Publish/Subscribe

 

 

  지난 포스트에서 RabbitMQ를 설치하고 유저도 생성하고 실행까지 해보았다. 그렇다면 실행로그는 어디에서 확인할 수 있을까? 서버를 실행시켰을때 출력되는 정보를 확인해보면 로그파일이 어디에 생성되는지 확인할 수 있는데, 별도의 설정을 하지않았기 때문에 [ C:\Users\사용자명\AppData\RabbitMQ ]에 생성이 되었을 것이다. 기본경로를 사용해도 상관없지만 아무래도 데이터를 관리를 위해 경로를 수정해주는 것을 권장한다. 그래서 이번 포스트는 RabbitMQ의 기본 경로를 변경하고 Logging 옵션을 설정하는 방법에 다루어보도록 하겠다.

 

 

 

 

 

1. RabbitMQ 환경변수 설정 방법.

   - 환경변수는 Node이나 설정파일의 위치, 쓰레드 사이즈 등을 개발 환경에 맞춰서 서버를 설정할 수 있기 때문에 등록하여 사용하는 것을 권장함.

 

   1-1. 첫번째 방법.

         - 적용할 환경변수를 각각 직접 입력.

         - 가장 단순한 방법이지만, 환경변수를 매번 입력해야함.

         - 매번 입력하지않고 사용자 환경변수에 등록하여 사용할 수도 있지만, 변수가 많아지면 관리하기 힘듦.

 

   1-2. 두번째 방법.

         - 적용할 환경변수를 설정하는 배치파일 생성.

         - [RABBITMQ_CONF_ENV_FILE] 변수에 [파일명을 포함한 경로] 저장.

         - 첫번째 방법보다 간편해진 방법으로 여러 환경변수 파일을 생성해놓고 환경에 따라 사용할 수 있음.

         - Log나 DB 등의 경로를 지정하지 않으면 서로 다른 경로에 생성될 수 있음.

 

   1-3. 세번째 방법.

         - 적용할 환경변수를 설정하는 배치파일을 [지정된 파일명( rabbitmq-env-conf.bat )]으로 생성.

         - [RABBITMQ_BASE] 변수에 [파일이 있는 경로]를 저장.

         - 기본경로를 변경함으로써 환경변수 설정 파일이 없어도 지정된 경로에서 실행됨.

         - Log나 DB 등의 경로를 지정하지 않아도 해당 경로에 생성됨.

 

   1-4. 이번 포스트에서는 세번째 방법으로 다룰 계획임.

 

 

2. RabbitMQ 기준 폴더 변경.

    * RABBITMQ_BASE를 변경하게 되면 User, Plugin 등 기존에 설정했던 옵션들이 초기화되므로 주의.

 

   2-1. 명령 프롬프트 실행.

 

   2-2. 사용자 환경변수 설정.

         - 제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 클릭.

         - 환경 변수 > 사용자 변수탭의 새로 만들기 > [ 변수이름: RABBITMQ_BASE ], [ 변수값: C:\data\rabbitmq ] 입력 > 확인.

 

   2-3. RabbitMQ의 데이터를 저장할 폴더 생성.

         > mkdir C:\data\rabbitmq

         

   2-4. RabbitMQ Server 실행.

         > rabbitmq-server

         - 로그파일의 경로가 바뀐 것을 확인할 수 있음.

 

   2-5. 디렉토리 확인.

         - [ ctrl ] + [ C ]를 입력하여 RabbitMQ Server 종료.

         > dir %RABBITMQ_BASE%

         - 3개의 파일 및 폴더가 생성된 것을 확인할 수 있음.

         - enabled_plugins 파일은 현재 Server에서 사용하는 플러그인의 목록이 담겨있음.

         - db 폴더는 RabbitMQ Server의 데이터들이 담겨있음..

         - log 폴더는 말그대로 로그 파일들이 담겨있음.

 

 

3. RabbitMQ 환경변수 설정.

    3-1. 환경변수 파일 작성.

          - RABBITMQ_BASE(C:\data\rabbitmq)에 rabbitmq-env-conf.bat 작성.

1
2
3
4
5
6
7
8
9
10
11
12
13
REM rabbitmq-env-conf.bat
 
REM Node Name
SET NODENAME=heo_dev
 
REM Config file location
REM SET CONFIG_FILE=C:/data/rabbitmq/rabbit.conf
 
REM MNESIA DB data file location
REM SET MNESIA_BASE=C:/data/rabbitmq/db
 
REM Log file location
REM SET LOG_BASE=C:/data/rabbitmq/log
cs

          - bat확장자는 배치 스크립트 파일로 윈도우에서 스크립트를 실행하는 파일의 확장자.

          - REM 키워드는 주석이므로, 스크립트 실행시 무시됨.

          - 4 ln: NODENAME은 Server의 이름, [노드명]@[서비스명]

          - 7 ln: CONFIG_FILE은 상세 설정파일의 경로.

          - 10 ln: MNESIA_BASE는 데이터가 저장되는 경로, Mnesia는 Erlang으로 작성된 DB.

          - 13 ln: LOG_BASE는 로그 파일의 경로, 상세 옵션이 없다면 파일명은 NODENAME을 사용.

         - 자세한 옵션들은 공식문서 참조.

 

   3-2. RabbitMQ Server 실행.

         > rabbitmq-server

         - NODENAME을 설정했기 때문에 로그파일명도 변경된 것을 확인할 수 있음.

 

 

   3-3. RABBITMQ_BASE 폴더 확인.

         > dir %RABBITMQ_BASE%

         - 그 외에 DB폴더를 보면 NODENAME별로 데이터가 생성된 것을 확인할 수 있음.

 

 

4. RabbitMQ Configuration 설정.

    - 환경변수는 기준 경로나 프로세스에 대한 설정이었다면, Configuration파일은 상세설정임.

 

   4-1. RABBITMQ_BASE(C:\data\rabbitmq)에 rabbitmq.conf 작성.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# rabbitmq.conf
 
# Logging to a file can be disabled
log.file = true
 
# log.dir = C:/data/rabbitmq/logs
log.file = rabbit.log
log.file.level = debug
 
# rotate every night at midnight
log.file.rotation.date = $D0
 
# rotate when the file reaches 10 MiB
# log.file.rotation.size = 10485760
 
# keep up to 7 archived log files in addition to the current one
log.file.rotation.count = 7
cs

         - 4 ln: 로그 파일생성 여부.

         - 6 ln: 실행 로그파일의 경로, 폴더는 자동으로 생성되지 않으므로 미리 생성해두어야함.

         - 7 ln: 로그 파일명, 지정하지 않으면 NODENAME으로 자동 설정됨.

         - 8 ln: Logging 레벨이며 기본값은 info 레벨임.

         - 11 ln: 매일 자정에 새로운 로그파일 생성.

         - 14 ln: 10MB 단위로 로그 파일 생성.

         - 17 ln: 로그파일 유지 개수.

           * 주로 11, 14는 함께 쓰지않고 각각 17과 조합하여 쓰임.

         - 자세한 옵션들은 공식문서 참조.

 

   4-2. RabbitMQ Server 실행.

         > rabbitmq-server

         - 실행화면에서 3가지 변화를 확인할 수 있음.

         - '1개 파일이 복사되었습니다.' 라는 문구가 출력됨.

         - 로그 파일의 이름이 NODENAME에서 설정한 파일명(dev.log)으로 변경되었음.

         - Config file(s)이 (none) 에서 경로(C:/data/rabbitmq/rabbitmq.conf)가 지정됨.

 

   4-3. RABBITMQ_BASE 폴더 확인.

         > dir %RABBITMQ_BASE%

         - config 폴더와 schema 폴더가 새로 추가됨.

         - '1개 파일이 복사되었습니다.'라는 문구는 config 폴더에 파일이 복사된 것을 의미.

         - schema에는 erlang으로 작성된 schema파일이 생성됨.

 

 

5. 번외.

   - RABBITMQ_BASE를 통해 환경설정을 하면 지정된 경로지정된 파일명으로 환경설정 파일들을 생성해야하는 단점이 있는데, 아래와 같이 설정하면 파일명과 경로도 마음대로 지정할 수 있음. 아래 두개의 변수가 우선순위가 더 높기 때문에 가능함.

     > set RABBITMQ_CONF_ENV_FILE=C:/prod/rabbitmq/dochi-rabbitmq-env-prod.bat

     > set RABBITMQ_CONFIG_FILE=C:/prod/rabbitmq/dochi-rabbitmq-prod.conf

 

 

6. 마치며.

   - 다른 기술들과 마찬가지로 설정하고나면 간단한데 대부분의 자료들이 영어로 되어있다보니 필요한 자료들을 찾기가 어려웠다. 실행 배치파일들도 뜯어보면서 꾸역꾸역 해결했다. 그래도 잘 돌아가니 뿌듯하다.

   - 이제 MacOS나 Docker에 적용하는 것도 파일 확장자나 사용자 환경변수를 등록하는 방법이 다를뿐이니 두려워말고 시도해보자.

댓글