4.3. 설치 및 배포
4.3.1 Python 3.6 설치
Redhat 시스템의 패키지기 관리 프로그램인 YUM을 통해서 파이썬을 설치합니다.
- Centos확장 패키지 설치 명령어 :
yum install epel-release centos-release-scl
- 파이썬 설치 명령어 :
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
위치에 파이썬 가상환경을 구성합니다.
- 디렉터리 이동 :
cd /home/centos
- 가상환경 구성 :
virtualenv ANALYTICS_MODULE
- 가상환경 실행 :
source /home/centos/ANALYTICS_MODULE/bin/activate
4.3.3. Postgresql 11 데이터베이스 설치
ANALYTICS_MOUDLE에서 분석관련 데이터를 관리하기 위한 데이터베이스를 설치합니다.
Postgresql11 설치 관련 링크
centos7에 postgresql 11 설치 방법 : https://www.symmcom.com/docs/how-tos/databases/how-to-install-postgresql-11-x-on-centos-7
데이터베이스에 ANALYTICS_MODULE의 사용자 및 데이터베이스를 추가합니다.
- 사용자이름 : smartcity (권장)
- 데이터베이스 이름 : ANALYTICS_MODULE(권장)
4.3.4. NFS 연결
운영환경과 별도의 서버가 구축되어, 관리서버와의 연결을 위해 NFS 파일을 Mount하여 연결합니다. 이 폴더는 NIFI에서 생성한 예측 또는 적용할 데이터를 공유하거나, 배치서버에 모델을 공유하기 위해서 사용됩니다.
아래사이트를 참고하여 NFS 를 설치합니다.
NFS설치 참고사이트 : https://epdl-studio.tistory.com/43
[명령어]
$ sudo yum install nfs-utils nfs-utils-libNFS연결 명령어
NFS에서 사용할 폴더 생성
[폴더생성]
$ mkdir /ANALYTICS_MANAGER_NFS
[사용자 권한변경]
$ sudo chown centos /ANALYTICS_MANAGER_NFS
[그룹 권한변경]
$ sudo chgrp centos /ANALYTICS_MANAGER_NFS리눅스에 NFS 확장 유틸 설치
[NFS 확장유틸리티 설치]
$ sudo yum install nfs-utilsNFS서버를 로컬 파일에 마운트 ({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를 설치합니다.
RabbitMQ설치 관련 블로그를 참고하여 데이터베이스를 설치합니다.
centos7RabbitMQ설치 : https://marshallslee.tistory.com/entry/CentOS-7에-RabbitMQ-설치하기
서버 실행 및 종료 그리고 시작프로그램 등록
[서버 시작프로그램 등록]
$ 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 에서 사용하는 데이터베이스를 테이블 스키마를 생성합니다.
- 프로젝트에 대한 마이그레이션 파일생성 :
python3.6 manage.py makemigrations
- APP API에 대한 마이그레이션 파일생성 :
python3.6 manage.py makemigrations API
- 데이터베이스에 스키마 생성 :
python3.6 manage.py migrate
- 관리자 생성 :
python3.6 manage.py createsuperuser
- 지원하는 알고리즘, 전처리 기능 리스트 업데이트 :
psql -U smartcity -f AlgorihtmAndPreprocessFunction.sql ANALYTICS_MODULE
4.3.9. Systemd에 서비스 등록 및 실행
리눅스의 서비스를 관리하는 프로그램인 Systemd에 Celery와 ANALYTICS_MOUDLE의 서비스를 등록합니다.
- celery 서비스 등록 :
/home/centos/ANALYTICS_MODULE/celery/bin/registerService.sh
- ANALYTICS_MOUDLE의 서비스 등록 :
/home/centos/ANALYTICS_MODULE/analytics_module/bin/registerService.sh
4.3.10. 서버 시작, 종료, 상태확인 명령어
“4.3.9. Systemd에 서비스 등록 및 실행” 을 실행하면 아래와 같은 systemctl 명령어를 통해서 서비스를 관리 할 수 있습니다.
- 상태 확인 명령어
- 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
- 시작 명령어
- 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
- 종료 명령어
- 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. 로그파일
- 로그 파일 위치
- RabbitMQ : /var/log/rabbitmq/
- Celery:/home/centos/ANALYTICS_MODULE/analytics_module/celery/logs
- 분석모듈 : /home/centos/ANALYTICS_MODULE/analytics_module/result/log
- 분석모듈의 로그 파일 생성 규칙 (설정파일)
로그파일은 1일 단위로 롤링되며, 금일 로그는 logback.log 에 기록됩니다.
- 'maxBytes': 1024*1024*10, # 로그 파일 당 10M 까지
- 'backupCount': 10, # 로그 파일을 최대 10개까지 유지