computer_IT

타임존 변경, 서버 실행환경, Cron 설정

LifenLight 2022. 6. 25. 20:50
반응형

'파이썬을 이용한 웹크롤링과 스크레이핑' 중에서

서버 조작시 타임존 변경하려면

sudo dpkg-reconfigure tzdata

Asia > 해당 지역 (예: Seoul, Tokyo) 선택
타임존을 변경했을 때 실행 중인 데몬은 변경사항이 반영되지 않을 수 있으므로, cron 재시작(작업스케줄러 사용시) 및 패키지 업데이트

sudo service crond restart
sudo apt-get update
sudo apt-get upgrade -y

서버에 실행 환경 구성하기

로컬 머신의 환경에 pip로 설치한 라이브러리와 같은 것을 서버 측에 생성한 환경에 설치하기

# 로컬 머신에서 조작
# 로컬 머신 내부에 설치된 라이브러리의 버전 목록을 추출 후 파일로 저장
pip freeze > requirements.txt

# 서버에서 조작
# requirements.txt 파일을 서버에 업로드 후
pip install -r requirements.txt

Cron 설정
Crontab 내부에 설정을 하나하나 작성하면 복잡해지므로 셸 스크립트를 만들고 필요한 설정과 프로그램 실행을 하는 것을 추천
셸 스크립트(run_crawler.sh) : 가상환경 폴더 밖에 위치

#!/bin/bash

# 셸 스크립트에 있는 디렉토리로 이동
cd $(dirname $0)

# 가상환경 활성화 하기(가상환경 이름은 scraping인 경우)
. scraping/bin/activate

# 파이썬 스크립트 실행하기(예: crawler.py)
python crawler.py

다음 명령어로 실행 가능하도록 만들어 준다.

chmod +x run_crawler.sh

/etc/crontab 끝 부분에 다음과 같은 설정을 추가하면 매일 6시 13분에 run_crawler.sh를 실행하게 된다.

13 6 * * * ubuntu /home/ubuntu/crawler/run_crawler.sh > /tmp/crawler.log 2>&1

여기서 > /tmp/crawler.log 2>&1 은 실행한 스크립트의 표준 출려과 표준 오류 출력을 tmp/crawler.log에 저장하라는 의미이다. cron으로 실행하는 프로그램은 우리가 직접 실행하는 프로그램과 다르게 문제가 발생해도 문제를 직접적으로 볼 수 없기 때문에 로그 파일에 저장하게 만들어서 문제가 발생했을 때 확인할 수 있게 해 준다.

(차후 확인해야 할 사항들)
cron 으로 메일을 보내려면 MTA(Mail Transfer Agent)설치해야 함. Postfix
cron 환경변수 설정에 다음과 같은 내용을 추가하면 오류발생시 지정한 메일 주소로 통지하게 된다.
MAILTO = example@example.com
그리고 위의 > /tmp/crawler.log 2>&1 은 삭제하고 실행한다.
크롤링과 스크레이핑 처리를 각각 독립해서 작업하면 크롤링 시간이 길어도 메시지 큐로 두 처리를 연결해서 동시에 두 처리가 상호 작용하게 하는 것이 좋다. 메시지 큐로 RQ 라이브러리 사용. 사용하기 쉬운 RQ + Redis 조합

반응형