본문 바로가기
오늘은 뭘 배울까?/etc

[Heroku] 헤로쿠 가입/설치/사용법 with 파이썬

by Kim Juhwan 2021. 2. 13.

1. Heroku
   1-1. 헤로쿠란?
   1-2. 헤로쿠의 장점
   1-3. 헤로쿠의 단점
2. 가입 및 설치
   2-1. 가입
   2-2. 설치
3. 필요한 파일 준비
   3-1. Aptfile
   3-2. Procfile
   3-3. runtime.txt
   3-4. requirements.txt
4. 연동 및 배포하기

   4-1. app 생성
   4-2. 깃허브(GitHub) 연동
5. 실행하기

   5-1. 프로그램 실행
   5-2. 스케쥴러 이용
6. 관리

   6-1. 유용한 명령어
   6-2. 환경변수

 

 

 


 

 

1. Heroku

1-1. 헤로쿠란?

헤로쿠는 서버를 대체할 수 있는 클라우드 플랫폼이다.

새 물건이 입고됐는지 감시하는 프로그램을 24시간 내내 돌려야 한다거나

내가 만든 웹 사이트를 사람들이 방문할 수 있도록 열어두고 싶을 때

물론 개인용 노트북을 서버로 사용할 수도 있지만 갑자기 전원이 나가버린다거나 하는 등 변수가 많다.

 

그나저나 heroku.. 이름을 처음 들었을 때는 일본어 같은데?? 일본에서 만든 건가? 싶었는데 그건 아니었다.

일본말을 영어로 바꾼 건 맞고 별 뜻은 없다고 한다.

히로쿠라고 부르는 사람도 있던데 머 암튼...

 

 

1-2. 헤로쿠의 장점

일단 무료다. 어마어마하게 큰 장점이다.

한 달에 550시간이라는 제한이 있긴 하지만 카드를 등록하면 1000시간까지 늘어난다.

(결제 안 해도 됨. 그냥 등록만)

 

사용하기가 쉽다. 예를 들어 아마존에서 제공하는 AWS의 경우 서버를 구축해서 사용해야 하는데

헤로쿠는 이미 다 만들어져 있고 그냥 간단한 설정 후 사용하면 돼서 엄청 편하다.

심지어 파이썬, 자바 등이 다 설치되어있기 때문에

코드를 업로드하기만 하면 끝이다.

 

이 두 장점 덕분에 학생들이 학습/토이 프로젝트용으로 많이 사용하는 편이다.

 

 

1-3. 헤로쿠의 단점

https://devcenter.heroku.com/articles/python-support#supported-runtimes

 

서버를 구축해서 사용하는 것이 아닌 헤로쿠라는 플랫폼을 이용하는 거라서

지정된 버전의 언어를 사용해야 한다.

예를 들어 파이썬은 2021.02.12 기준으로 위 5가지의 버전을 지원하고 있는 상태이다.

 

그리고 또 다른 단점은 웹 사이트를 만들었을 때 30분 동안 아무도 방문하지 않는다면

사이트를 수면상태로 바꿔버린다는 것이다. 누군가 다시 방문하면 풀리지만 재시작하는데 30초 내외의 시간이 걸린다.

 

 

 

2. 가입 및 설치

2-1. 가입

 

Cloud Application Platform | Heroku

Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

www.heroku.com

가입은 어려울 건 없다. 헤로쿠 사이트로 일단 접속!

 

 

가입화면

 

외국 사이트는 가입 절차가 간단해서 좋은 것 같다.

따로 설명할 것도 없네...

 

 

2-2. 설치

https://devcenter.heroku.com/articles/getting-started-with-python#set-up

 

위 주소로 들어가서 자신의 운영체제에 맞는 파일을 설치해주면 된다.

 

 

 

3. 필요한 파일 준비

3-1. Aptfile

git에 올라간 5개의 파일

 

헤로쿠에서 코드를 돌리기 위해서는 4가지의 파일 그리고 실행 파일이 필요하다.

자신의 컴퓨터를 저장소로 두고 코드를 업로드하는 방법도 있고 git을 사용하는 방법도 있는데

이 포스팅에서는 git을 사용하는 방법을 다루려고 한다.

 

 

커맨드 사용 시
echo 'git' > Aptfile

파일을 생성하는 방법은 2가지가 있다. 커맨드를 사용하거나, 웹 사이트에서 직접 추가해주면 된다.

이 포스팅에선 두 가지 방법을 모두 설명할 것이고, 자신이 편한 방법으로 따라 하면 된다.

 

우선 Aptfile 파일을 만들건데, 만약 커맨드 사용이 익숙하다면

위 명령어로 파일을 생성 후 깃허브에 올려주면 된다.

 

 

웹 사이트 이용 시

Add file - Create new file

새로운 파일을 생성을 눌러주고...

 

 

Aptfile 파일 내용

 

내용에 git이라고 적고 파일 이름은 Aptfile이라고 적어주면 된다.

그다음 Commit new file을 눌러 커밋해주면 끝!

 

 

3-2. Procfile

커맨드 사용 시
echo 'worker: python parsingPost.py' > Procfile

Procfile은 파일을 실행시키는 명령어를 저장해두는 파일이다.

여기서 parsingPost는 내가 만든 실행 파일명이기 때문에

각자 자신의 파일명에 맞게 고쳐 사용하면 된다.

 

 

웹 사이트 이용 시

Procfile 파일 내용

3-1에서 했던 것처럼 git 웹 사이트에서 이렇게 생성하면 된다.

 

 

 

3-3. runtime.txt

커맨드 사용 시
echo 'python-3.9.1' > runtime.txt

파이썬 몇 버전을 이용해서 컴파일해주세요~ 라는 뜻의 파일이다.

이때 주의할 점은 자신의 컴퓨터에서 사용하는 파이썬 버전을 적으면 에러가 난다.

[목차 1-3]에서 설명했듯이 헤로쿠에서 제공하는 버전이 몇 가지가 있는데 그중에서 골라야 한다.

 

+) 2021.10.17

현재 3.9.1 버전은 더 이상 지원하지 않는걸로 확인됩니다.

링크로 들어가 지원하는 버전을 확인해서 사용해주세요.

 

웹 사이트 이용 시

runtime.txt 파일 내용

 

 

 

3-4. requirements.txt

커맨드 이용 시
pip freeze > requirements.txt

이 파일에선 내가 사용할 라이브러리(파이썬에선 모듈이라고 하나..? 암튼)와 버전을 명시해주어야 한다.

위 명령어를 사용하면 현재 사용하고 있는 모든 라이브러리가 메모장에 저장된다.

 

 

웹 사이트 이용 시

requirements.txt 파일 내용

 

'='이 1개가 아니라 '=='이렇게 2개라는 걸 주의해야 한다.

웹 사이트에서 일일이 타이핑을 하다 보면 다음과 같은 궁금증이 들것이다.

어느 한 유튜브 영상의 댓글

 

저도 처음엔 그런 줄 알고 식겁했으나 이런 댓글이 있더라구요.

실제로 실험해 본 결과 명확한 차이는 모르겠지만

버전을 꼭 명시해줘야 하는 게 있고, 명시하지 않아도 되는 게 있으며

기본 내장 라이브러리(time, math 등..)는 아예 적지 않아도 됩니다.

헤로쿠에서 컴파일을 돌렸을 때 요구하는 라이브러리 명 혹은 버전이 있다면 그때 적어주면 될 듯합니다.

근데 저 누구랑 이야기하는 거죠 다시 반말로 하겠다.

 

 

4. 연동 및 배포하기

4-1. app 생성하기

커맨드 이용 시
heroku login

연동 및 배포도 마찬가지로 커맨드로도 할 수 있고 웹 사이트에서도 할 수 있다.

커맨드로 할 경우 우선 로그인을 하고...

 

heroku create 원하는 이름

app을 생성해주면 된다.

 

 

웹 사이트 이용 시

https://dashboard.heroku.com/apps

 

dashboard로 들어가면 자신이 만든 애플리케이션이 보이는데

우측 상단의 New - Create new app을 누르면 새로 만들 수 있다.

 

 

앱 이름 설정

 

이제 앱 이름을 정해야 하는데, 이미 존재하는 이름이면 저렇게 경고 표시가 뜬다.

대시(-)도 사용할 수 있으니 적절한 이름을 골라 Create app을 눌러주자.

 

 

4-2. 깃허브(GitHub) 연동

커맨드 이용 시
 

Deploying with Git | Heroku Dev Center

Last updated February 02, 2021 Heroku manages app deployments with Git, the popular version control system. You definitely don’t need to be a Git expert to deploy code to Heroku, but it’s helpful to learn the basics. Prerequisites: Install Git and the

devcenter.heroku.com

헤로쿠에서 매뉴얼을 자세히 적어두었다.

딱.. 딱히 적기 귀찮아서 그런 건 아니다 (사실 너무 귀찮다)

 

 

웹 사이트 이용 시

배포 방법 3가지

 

앱을 만들면 이런 페이지가 뜨게 될 텐데

아래에 Deployment method 부분을 보면 코드를 배포할 수 있는 방법 3가지가 나와있다.

나는 이 중 GitHub를 이용하는 방법을 선택했다.

 

 

 

깃허브 계정이 연동된 모습

 

GitHub를 눌렀다면 Connect to GitHub가 뜰 텐데

계정 연동하면 깃허브 로그인하라고 하고 권한 수락하라고 하는 거 다 해주면 된다.

그다음 repo-name에 repository(= 깃허브에 올린 프로젝트 명)을 적어서 Search 해주면 된다.

 

 

배포하기

 

repository까지 연결을 다 했다면 이런 화면이 보일 텐데

우선 Automatic deploys는 코드를 수정해서 깃허브에 올리면 자동으로 헤로쿠에서 배포까지 해주는 기능이다.

근데 이게 실시간으로 이루어지는 게 아니라서... 뭐 암튼 켜 둬서 나쁠 건 없을 것 같다.

 

밑에 Deploy Branch를 누르면 바로 배포를 시작하게 된다.

컴파일을 하는데 시간이 좀 오래 걸리는 편이다. 1분 정도 넘게 걸린 듯?

 

 

배포 완료

 

이 상태가 되면 배포가 완료된 것이다.

 

 

 

5. 실행하기

5-1. 프로그램 실행

배포를 완료했다면 Overview로 이동해서 Configure Dynos를 클릭하자.

참고로 우측의 Lastest activity를 보면 빌드 성공 여부와 배포 등

활동 내용과 시간이 저장되어있고 로그도 확인할 수 있다.

 

 

프로그램 실행하기

순서대로 눌러주면 완성!

헤로쿠에서 의도한 건지 모르겠으나 따로 설정을 만져주지 않아도

10여분 정도마다 한 번씩 프로그램이 반복해서 실행되었다.

근데 이 시간이 랜덤 해서... 만약 원하는 시간마다 실행되게 하려면 스케쥴러를 사용해야 한다.

 

 

 

5-2. 스케쥴러 이용

https://elements.heroku.com/addons

 

헤로쿠는 여러 가지 추가 기능을 설치할 수 있는데

그중 원하는 시간마다 프로그램을 실행시켜주는 스케쥴러라는 것이 있다.

여러 가지 종류가 있지만 그중 저 스케쥴러를 사용할 것이다. 왜냐면 무료니까!

(유료도 있다는 뜻이다)

 

 

Heroku Scheduler 설치

 

우측 상단의 Install 버튼을 누르면 설치할 수 있다.

단! 사용하려면 조건이 있는데 자신의 카드를 등록해야 한다.

따로 결제하지 않는 이상 과금은 되지 않고 등록만 하면 사용할 수 있다.

 

그리고 1-2에서 설명했듯이 카드를 등록하면 헤로쿠 무료 사용시간이 1000시간으로 늘어난다. 유후

 

 

 

스케쥴 추가

 

다 됐으면 이제 스케줄을 추가할 차례이다.

Add Job을 눌러주자.

 

 

 

스케쥴 설정

 

우선 반복 실행하고 싶은 시간을 정해준다.

10분/1시간/1일 이렇게 3가지 옵션이 있다.

그리고 프로그램을 실행하기 위해 명령어를 적어주고 Save Job을 해주면 된다.

 

parsingPost는 내가 지어진 프로그램 명이므로..

각자 만든 프로그램명을 대신 적어주면 된다.

 

그리고 마지막으로!

[목차 5-1]에서 설정했던 걸 다시 풀어줘야 한다.

스케쥴러가 직접 프로그램을 실행해줄 것이기 때문에 이걸 안 풀어주면 충돌이 난다.

 

 

 

6. 관리

6-1. 유용한 명령어

heroku builds:cancel -a anyang-yi
heroku restart -a anyang-yi

배포를 계속하다 보면 횟수 제한(?)이 걸릴 때가 있다.

그럴 때 필요한 현재 배포 중인 프로그램을 중지시키는 명령어이다.

주의할 점은 실행 파일의 이름이 아니라 [목차 4-1]에서 정해준 app 이름을 적어야 한다는 것이다.

나는 app 이름이 anyang-yi라서 이렇게 적어주었다. (이후 명령어도 동일)

 

heroku logs -a anyang-yi

로그를 볼 수 있는 명령어이다.

모든 로그를 평생 저장하고 있는 게 아니라 일정량이 넘으면

오래된 로그부터 삭제하기 때문에 이 점을 유의해야 한다.

 

heroku logs -n 400 -a anyang-yi

위에서 설명했던 로그 명령어는 200줄까지만 화면에 표시해준다.

더 예전 로그까지 보고 싶다면 -n 옵션과 숫자를 넣어주면 된다.

위 명령어는 400줄 까지 로그를 표시한다.

 

heroku ps -a anyang-yi

무료 사용시간이 얼마나 남았는지를 알려준다.

 

 

6-2. 환경변수

환경변수 추가

 

Settings에 들어가면 환경변수를 추가할 수 있다.

간단하게 설명하자면 key값이나 비밀번호 등 코드상에 노출이 되어서는 안 되는 값들을 관리하는 하는 것이다.

환경변수 사용법은 헤로쿠에서 벗어나는 내용이므로...

 

 

 

 

 

 

 

 


끗!

반응형

댓글