본문 바로가기
👾 유용한 도구들/호스팅

🇭 헤로쿠(Heroku) 사용법(2-1) - 파이썬 배포하기, 실행, 환경변수 설정

by 뒬탕 2021. 8. 4.
반응형

헤로쿠에서 파이썬 프로젝트를 무료 호스팅 해봅시다

 

 저번 시간에는 헤로쿠 회원가입을 하고, 하는 법에 대해 알아봤습니다. 이번 시간에는 파이썬 프로젝트를 헤로쿠에 배포하고 무료 호스팅으로 실행해봅시다. git에 대해 익숙하지 않은 분들을 위해서 자세히 설명할게요. 추가로 환경변수 설정법에 대해서도 설명할 예정입니다.

 

 

저번 시간 글을 꼭 보고 와주세요!

 

🇭 헤로쿠(Heroku) 사용법(1) - 가입, 로그인, git과 Heroku CLI 이용하기

헤로쿠를 이용하기 위한 준비를 해봅시다  헤로쿠(Heroku)는 인터넷에서 프로그램을 돌릴 수 있게 해주는 클라우드 플랫폼입니다. 자바, 파이썬, Node.js, PHP 등의 여러 언어를 지원합니다. 무료에

programming4myself.tistory.com

 

목차

  1. Procfile, requirements.txt 파일 만들기 (중요)
  2. 헤로쿠 저장소로 파이썬 프로젝트 올리기
  3. 헤로쿠 무료 호스팅으로 실행하기
  4. 헤로쿠 환경변수 설정하고 파이썬에서 사용하기
  5. 요약

 

 헤로쿠에서 프로젝트를 돌리려면 Procfile, requirements.txt 파일이 필수적으로 있어야 합니다. 위 두 파일을 아래를 보고 만들어 프로젝트가 있는 폴더에 함께 넣어주세요. 추가로 runtime.txt은 있어도 되고 없어도 됩니다. 

 

To https://git.heroku.com/heroku-dilttan.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/heroku-dilttan.git'

 

만약 Procfile, requirements.txt 파일이 없으면 나중에 다음과 같은 오류가 나니 꼭 따라서 만들어주세요.

 

Procfile 파일 만들기

worker: python main.py

Procfile은 어떤 파일을 실행시킬지 정해두는 파일입니다. Procfile 파일은 확장자가 없어야 합니다. main으로 실행시킬 *.py 파일을 여기다가 적어두시면 됩니다. 만들 때는 메모장에다가 위 내용을 적으신 다음 확장자를 지워주세요.

 

requirements.txt 파일 만들기

discord.py
beautifulsoup4
fuzzywuzzy
openpyxl==2.5.12
requests

 requirements.txt은 어떤 파이썬 모듈들을 쓸 것인지 명시하는 파일입니다. 불러올 외부 모듈들을 모두 여기에다가 적어주세요. os, math와 같은 파이썬 기본 모듈들은 적지 않으셔도 됩니다. 몇몇 모듈들은 끝에 .py라고 붙여야지 작동하는데, 그런 모듈들과 아닌 모듈들의 차이는 잘 모르겠네요. 파일을 만드실 때는 메모장에다가 위와 같이 모듈명을 적고 저장하시면 됩니다.

 추가로 특정 버전의 모듈을 원하면 옆에 버전명을 적으셔도 됩니다. 버전명은 == 뒤에 적습니다. 버전명은 생략 가능합니다. 안 적으셔도 잘 작동해요.

 

runtime.txt 파일 만들기

python-3.9.1

runtime.txt는 어떤 파이썬 버전으로 돌릴지 명시하는 파일입니다. 생략 가능합니다. 헤로쿠는 특정 버전의 파이썬만 돌릴 수 있습니다. 돌릴 수 있는 헤로쿠에서 제공하는 파이썬 버전들의 목록은 여기서 볼 수 있습니다.

 

 

처음 올릴 시

 

 위에서 Procfile, requirements.txt 파일을 만드셨다면 이제 git을 이용하여 파이썬 코드를 헤로쿠에 올려봅시다. git 하고 헤로쿠 cli을 깔지 않으셨다면 저번 글을 봐주세요.

 우선 헤로쿠에서 돌리고 싶은 프로젝트가 있는 폴더에 들어가서 우클릭 후에 Git Bash Here을 눌러 Git bash를 열어줍니다.

 

$ git init

 

 그 후 위와 같이 입력합니다. 위 명령어는 git 저장소를 생성, 초기화(Initialized) 하는 명령어로 항상 프로젝트에서 git을 처음 쓸 시 입력해줍니다.

 

$ heroku create 프로젝트명

 위처럼 입력해 헤로쿠에 올라갈 프로젝트 이름을 정해줍니다. 이름으로는 영문, 숫자, 하이픈(-)만 가능합니다.

 

$ git add .

 그다음 위 명령어를 쳐줍니다. git add 명령어는 어떤 파일을 저장할지 지정해주는 명령어입니다. 뒤의 점(.)은 모든 파일을 선택한다는 뜻입니다.

 

$ git commit -m "메모"

 다음에는 위 명령어를 입력해 커밋을 해줍니다. 커밋은 파일의 변경사항을 확정해서 저장한다는 뜻입니다. -m "메모"를 입력해 무엇을 변경했는지 메모해줍시다.

 

$ git push heroku master

  이제 마지막 단계입니다! 위 명령어를 쳐서 내 컴퓨터에 있는 내용을 heroku로 보내줍시다.(push)

 

수정된 내용을 올릴 때

 

$ git add .
$ git commit -m "메모"
$ git push heroku master

 수정된 내용을 올릴 때는 다른 명령어들은 필요 없이 추가하고(add), 커밋(commit)한 다음 보내기(push)만 해주시면 됩니다.

 

$ heroku ps
Free dyno hours quota remaining this month: 550h 0m (100%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

No dynos on dilttan2

 이제 헤로쿠에서 코드를 실행시켜봅시다. 헤로쿠 cli에서 호스팅과 관련된 명령어는 heroku ps로 입력 시 다음과 같이 정보가 뜨게 됩니다. 무료 시간이 몇 시간 남았는지, 이 앱에서 얼마나 시간을 썼는지, 앱이 실행 중인지 여러 정보가 뜨네요. 처음 실행 시에는 위와 같이 No dynos on (프로젝트 명)이라고 뜨게 됩니다.

 

사족) dyno는 헤로쿠에서 프로그램을 돌리는 리눅스 컨테이너입니다. 가상의 작은 컴퓨터라고 생각하시면 돼요. 무료 버전에서는 이 dyno를 1개 이용 가능하며 550시간 또는 1000시간 이용 가능합니다. (1000시간 이용하는 방법은 다음 글을 봐주세요!)

 

$ heroku ps:scale worker=1

이제 프로젝트를 켜봅시다. 프로젝트를 켜시려면 위 명령어를 입력하시면 됩니다. 

 

$ heroku ps
Free dyno hours quota remaining this month: 550h 0m (100%)
Free dyno usage for this app: 0h 0m (0%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

=== worker (Free): python discord_bot_test.py (1)
worker.1: up 2021/08/04 20:06:43 +0900 (~ 7s ago)

헤로쿠 worker를 켜신 다음 다시 heroku ps 명령어를 입력하시면 다음과 같이 내용이 바뀌게 됩니다.

 

$ heroku ps:scale worker=0

프로젝트를 끄시려면 위 명령어를 입력하시면 됩니다. worker= 뒷부분만 1에서 0으로 바뀝니다.

 

$ heroku logs --tail

확실히 정상적으로 작동하는지 확인하고 싶으시면 로그를 보시면 됩니다. 로그는 위 명령어로 확인이 가능합니다. 끝에 --tail을 붙여 최근 로그부터 볼 수 있습니다.

 

$ heroku open

추가로 장고(Django)나 플라스크(Flask)와 같은 파이썬 웹 프레임 워크를 이용하여 사이트를 만들었다면 위 명령어로 그 사이트를 바로 열 수 있습니다.

 

 

 

추가로 파이썬에서 환경변수를 불러올 수 있도록 헤로쿠에서 환경변수를 설정하는 법에 대해 알아봅시다. 환경변수는 주로 숨기고픈 정보가 있을 때 사용합니다. SQL 인스턴스나 디스코드 봇 토큰을 숨기는 경우처럼요.

 

import os

변수 = os.environ.get('환경변수_키')

파이썬에서 환경변수는 위처럼 불러올 수 있습니다. 환경변수는 키와 값이 한 쌍을 이룹니다. 키는 환경변수를 대표하는 이름입니다. 값은 환경변수 내용입니다. 위 예시와 같이 환경변수 키를 이용해 불러오면 환경변수 값이 변수에 저장됩니다.

 

$ heroku config

헤로쿠 cli에서 환경변수와 관련된 명령어는 heroku config입니다. 이 명령어를 치면 모든 환경변수에 대한 정보를 볼 수 있습니다.

 

$ heroku config:set 환경변수_키=환경변수_값

헤로쿠에 환경변수를 저장하는 방법은 다음과 같습니다. 

 

$ heroku config:unset 환경변수_키

이렇게 저장한 환경변수는 unset을 입력하여 지울 수 있습니다.

 

$ heroku config:get 환경변수_키

get 이후에 환경변수 키를 입력해 해당 키에 대한 환경변수 값만 볼 수 있습니다.

 

 

  • 꼭 Procfile, requirements.txt 만들기
  • 처음 헤로쿠로 보낼 시 git 명령어 
    $ git init
    $ heroku create 프로젝트명(영어로)
    $ git add .
    $ git commit -m "메모"
    $ git push heroku master
  • 수정된 내용을 헤로쿠로 보낼 시 git 명령어
    $ git add .
    $ git commit -m "메모"
    $ git push heroku master
  • 호스팅 관련 명령어
    $ heroku ps
    $ heroku ps:sacle worker=1
    $ heroku ps:sacle worker=0
    $ heroku logs --tail
  • 환경 변수 관련 명령어
    $ heroku config
    $ heroku config:set 환경변수_키=환경변수_값
    $ heroku config:unset 환경변수_키
    $ heroku config:get 환경변수_키

 

마치며

 

 지금까지 헤로쿠에서 파이썬 코드를 무료 호스팅 하는 법에 대해 알아봤습니다. Node.js와 같은 다른 프로그래밍 언어에 대해서는 나중에 배우고 나서 적도록 할게요. 무료 호스팅 시간을 550시간에서 1000시간으로 늘리는 방법에 대해서는 다음 글을 봐주세요!

 

 

🇭 헤로쿠(Heroku) 사용법(3) - 헤로쿠 무료시간 1000시간으로 늘리기

헤로쿠 무료 호스팅 시간을 1000시간으로 늘려봅시다  기본적으로 헤로쿠 무료시간은 한달에 550시간입니다. 덤으로 20시간정도는 더 쓸 수 있는 것 같고요. 충분히 많은 시간이지만 한 달동안 계

programming4myself.tistory.com

 

궁금한 내용이 있으면
화면 왼쪽 아래의 디스코드 아이콘을 누르면 실시간으로 답해드립니다.
(아이콘이 보이지 않는다면 에드 블록을 꺼주세요)

https://discord.link/pseudodeveloper

또 위 링크를 눌러 가짜 개발자 서버에 들어오시면
블로그의 새 글 알림을 받고
SSAFY, 부스트캠프, 포유드림, 우아한테크코스, 프로그래머스와 같은
국비 지원 교육 일정을 자동 알림 받을 수 있습니다.
반응형

댓글