본문으로 건너뛰기

4.3. 설치 및 배포

4.3.1 Python 3.6 설치

Redhat 시스템의 패키지기 관리 프로그램인 YUM을 통해서 파이썬을 설치합니다.

  1. Centos확장 패키지 설치 명령어 : yum install epel-release centos-release-scl
  2. 파이썬 설치 명령어 : sudo yum install -y python36.x86_64 python36-libs.x86_64 python36-devel.x86_64 python36-pip.noarch

4.3.2. 파이썬 가상환경 구성 및 실행

/home/centos/ANALYTICS_MODULE 위치에 파이썬 가상환경을 구성합니다.

  1. 디렉터리 이동 : cd /home/centos
  2. 가상환경 구성 : virtualenv ANALYTICS_MODULE
  3. 가상환경 실행 : source /home/centos/ANALYTICS_MODULE/bin/activate

4.3.3. Postgresql 11 데이터베이스 설치

ANALYTICS_MOUDLE에서 분석관련 데이터를 관리하기 위한 데이터베이스를 설치합니다.

  1. Postgresql11 설치 관련 링크

    centos7에 postgresql 11 설치 방법 : https://www.symmcom.com/docs/how-tos/databases/how-to-install-postgresql-11-x-on-centos-7

  2. 데이터베이스에 ANALYTICS_MODULE의 사용자 및 데이터베이스를 추가합니다.

    • 사용자이름 : smartcity (권장)
    • 데이터베이스 이름 : ANALYTICS_MODULE(권장)

4.3.4. NFS 연결

운영환경과 별도의 서버가 구축되어, 관리서버와의 연결을 위해 NFS 파일을 Mount하여 연결합니다. 이 폴더는 NIFI에서 생성한 예측 또는 적용할 데이터를 공유하거나, 배치서버에 모델을 공유하기 위해서 사용됩니다.

  1. 아래사이트를 참고하여 NFS 를 설치합니다.

    NFS설치 참고사이트 : https://epdl-studio.tistory.com/43

    [명령어]
    $ sudo yum install nfs-utils nfs-utils-lib
  2. NFS연결 명령어

  • NFS에서 사용할 폴더 생성

    [폴더생성]
    $ mkdir /ANALYTICS_MANAGER_NFS

    [사용자 권한변경]
    $ sudo chown centos /ANALYTICS_MANAGER_NFS

    [그룹 권한변경]
    $ sudo chgrp centos /ANALYTICS_MANAGER_NFS
  • 리눅스에 NFS 확장 유틸 설치

    [NFS 확장유틸리티 설치]
    $ sudo yum install nfs-utils
  • NFS서버를 로컬 파일에 마운트 ({SERVER_IP} : ANALYTICS_MANAGER를 설치한 서버 IP)

    [마운트 명령어]
    $ sudo mount -t nfs {SERVER_IP}:/ANALYTICS_MANAGER_NFS /ANALYTICS_MANAGER_NFS
  • 재부팅 시 자동 마운트 명령어 등록 ({SERVER_IP} : ANALYTICS_MANAGER를 설치한 서버 IP)

    [시작프로그램 편집기]
    $ sudo vi /etc/rc.d/rc.local
    # 아래 내용 추가
    sudo mount -t nfs {SERVER_IP}:/ANALYTICS_MANAGER_NFS /ANALYTICS_MANAGER_NFS

4.3.5. Rabbit MQ 설치

Thread 기반의 명령어 처리를 위해 사용되는 Celery를 위한 Queue를 설치합니다.

  1. RabbitMQ설치 관련 블로그를 참고하여 데이터베이스를 설치합니다.

    centos7RabbitMQ설치 : https://marshallslee.tistory.com/entry/CentOS-7에-RabbitMQ-설치하기

  2. 서버 실행 및 종료 그리고 시작프로그램 등록

    [서버 시작프로그램 등록]
    $ sudo systemctl enable rabbitmq-server

    [서버 실행]
    $ sudo systemctl start rabbitmq-server

    [서버 종료]
    $ sudo systemctl stop rabbitmq-server

4.3.6. 소스 이관

/home/centos/ANALYTICS_MODULE 하위에 analytics_module폴더를 생성하고, ftp를 통해, ANALYTICS_MODULE source를 모두 이관합니다.

4.3.7. ANALYTICS_MODULE에서 사용되는 라이브러리 설치

[PSUTIL 라이브러리를 위해 GCC 설치]
$ sudo yum -y install gcc

[라이브러리 설치]
$ pip3.6 install -r requirements.txt

4.3.8. Django 초기 설정 및 데이터베이스 스키마를 생성하는 명령 실행

장고의 ORM 기능을 사용하여 ANALYTICS_MOUDLE 에서 사용하는 데이터베이스를 테이블 스키마를 생성합니다.

  1. 프로젝트에 대한 마이그레이션 파일생성 : python3.6 manage.py makemigrations
  2. APP API에 대한 마이그레이션 파일생성 : python3.6 manage.py makemigrations API
  3. 데이터베이스에 스키마 생성 : python3.6 manage.py migrate
  4. 관리자 생성 : python3.6 manage.py createsuperuser
  5. 지원하는 알고리즘, 전처리 기능 리스트 업데이트 : psql -U smartcity -f AlgorihtmAndPreprocessFunction.sql ANALYTICS_MODULE

4.3.9. Systemd에 서비스 등록 및 실행

리눅스의 서비스를 관리하는 프로그램인 Systemd에 Celery와 ANALYTICS_MOUDLE의 서비스를 등록합니다.

  1. celery 서비스 등록 : /home/centos/ANALYTICS_MODULE/celery/bin/registerService.sh
  2. ANALYTICS_MOUDLE의 서비스 등록 : /home/centos/ANALYTICS_MODULE/analytics_module/bin/registerService.sh

4.3.10. 서버 시작, 종료, 상태확인 명령어

“4.3.9. Systemd에 서비스 등록 및 실행” 을 실행하면 아래와 같은 systemctl 명령어를 통해서 서비스를 관리 할 수 있습니다.

  1. 상태 확인 명령어
  • RabbitMQ 상태 확인 : sudo systemctl status rabbitmq-server
  • Celery Worker 상태 확인: sudo systemctl status celery_worker
  • Celery Beat 상태 확인: sudo systemctl status celery_beat
  • 분석모듈 상태 확인 : sudo systemctl status analytics_module
  1. 시작 명령어
  • RabbitMQ 시작 : sudo systemctl start rabbitmq-server
  • Celery Worker 시작 : sudo systemctl start celery_worker
  • Celery Beat 시작 : sudo systemctl start celery_beat
  • 분석모듈 시작 : sudo systemctl start analytics_module
  1. 종료 명령어
  • RabbitMQ 종료 : sudo systemctl stop rabbitmq-server
  • Celery Worker 종료 : sudo systemctl stop celery_worker
  • Celery Beat 종료 : sudo systemctl stop celery_beat
  • 분석모듈 종료 : sudo systemctl stop analytics_module

4.3.11. 로그파일

  1. 로그 파일 위치
  • RabbitMQ : /var/log/rabbitmq/
  • Celery:/home/centos/ANALYTICS_MODULE/analytics_module/celery/logs
  • 분석모듈 : /home/centos/ANALYTICS_MODULE/analytics_module/result/log
  1. 분석모듈의 로그 파일 생성 규칙 (설정파일) 로그파일은 1일 단위로 롤링되며, 금일 로그는 logback.log 에 기록됩니다.
    • 'maxBytes': 1024*1024*10, # 로그 파일 당 10M 까지
    • 'backupCount': 10, # 로그 파일을 최대 10개까지 유지