ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 타임존 변경, 서버 실행환경, Cron 설정
    computer_IT 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 조합

    댓글

Designed by Tistory.