Today Sangmin Learned
article thumbnail
728x90

어제와 그저께는 안만졌고, 3일 전에 마지막으로 만졌던 부분이 AWS EC2 서버에서 파이썬 가상환경을 켜는 것 까지였다.

3일 전 기준으로 남아있던 것은

1) Git에 토큰 없이 push를 했는데, 이걸 EC2 서버에서 토큰을 반영하는 방법

2) EC2 서버에 토큰 반영 후 python3 slackbot.py 제대로 작동하는 지 확인

3) EC2 서버에서 crontab을 이용해서 '노트북이 켜져 있지 않더라도 EC2 서버에서 slackbot.py를 매일 특정 시간대에 반복적으로 실행'

이 세가지였는데, 오늘 한 30분 걸려서 전부 다 해결했다.

 

1) Git에 토큰 없이 push를 했는데, 이걸 EC2 서버에서 토큰을 반영하는 방법

이 부분을 어떻게 해야 될 지 고민을 많이 했는데, 팀원의 조언에 따라 '토큰 없이 repository에 push를 하고, EC2 서버에서 해당 repository를 clone해온 뒤 직접 EC2 서버에 있는 .py 파일을 수정해서 토큰을 집어넣는 방법' 을 선택했다.

머리로는 이해가 됐으나, 어떻게 가능하게 하지? 하고서 고민을 좀 했다. 신기하게도 VSode의 Extension 중에, AWS의 EC2 내부 파일 소스코드를 변경하는 Extension이 있었다!

1-1) VSCode의 Extensions 에서 ftp-simple 을 설치한다.

1-2) F1을 눌러 Command Pallette에 들어간 후, ftp-simple: Config - FTP connection setting을 클릭한다.

1-3) 해당 값으로 수정해준다.

 

[
	{
		"name": "localhost", // 본인이 쓰고싶은 이름 아무거나 넣기
		"host": "3.35.218.130", // EC2에서 발급받은 "퍼블릭" IP 넣기
		"port": 22, // 고정값
		"type": "sftp", // 고정값
		"username": "ec2-user", // 그냥 임의의 유저 이름 적기
		"path": "/", // 걍 두면 됨
		"autosave": true,
		"confirm": true,
		"privateKey": "/Users/sangminpark/.ssh/steadily.pem" // 미리 받아 둔 .pem 키 위치
	}
]

 

1-4) 이후에 ftp-simple: Remote directory open to workspace를 클릭한 후, 임의로 만들었던 ftp 서버 이름 (본인의 경우 localhost)을 선택한다.

1-5) 그 후 slackbot.py가 있는 위치를 찾는다. (home/ec2-user/app/git/covid19-today-slackbot/slackbot.py)

 

EC2 서버에 들어가 있는 slackbot.py

1-6) 8행에서 token값을 기존에 갖고 있던 것으로 채워준다. -> 1번 끝

 

2) EC2 서버에 토큰 반영 후 python3 slackbot.py 제대로 작동하는 지 확인

- 1번 한 후 EC2 터미널 covid19-today-slackbot 위치에서 python3 slackbot.py를 실행하니까 나왔음 -> 2번 끝

 

3) EC2 서버에서 crontab을 이용해서 '노트북이 켜져 있지 않더라도 EC2 서버에서 slackbot.py를 매일 특정 시간대에 반복적으로 실행'하기

- 내 맥북에서 crontab을 실행하는 방법과 똑같이 "(가상환경 켜는 루트) && (파이썬 루트) (실행할 파이썬 파일 루트)" 였다. 내 맥북에서는 가상환경 켜는 루트와 파이썬 루트, 실행할 파이썬 파일 루트가 전부 좀 길어서 읽기가 복잡했는데, 오히려 EC2에는 깔려있는 것도 별로 없고 해서 편했다. ㅋㅋ

 

* * * * * source /tmp/eb_python_app/bin/activate && /bin/python3 /home/ec2-user/app/git/covid19-today-slackbot/slackbot.py

 

가상환경 켜는 루트는 tmp, 파이썬 루트는 bin을 통해, 실행할 파이썬 파일 루트는 home/ec2-user/app/git을 통해 각각 할 수 있었고, EC2 터미널에서 ls와 pwd를 이용해서 찾았다. * * * * *은 매 1분마다를 뜻한다. 이걸 6시 30분에 켰고, 6시 31분과 32분에 알림이 뜨면 이제 crontab 적용까지 완료인 것이었다.

 

6시 31분과 32분 각각 알림이 뜬 것을 볼 수 있다.

이제, 맥북을 켜두지 않아도 EC2 서버에서 알아서 정오에 1) 가상환경을 켜고, 2) slackbot.py를 실행할 것이다. 이제 끝났다. ㅋㅋ

 

실질적으로 한 3~4일 걸린 것 같은데, 너무 재밌었다. 크롤링과 AWS EC2에 대해 단 하나도 몰랐는데, 이 작은 토이프로젝트를 통해 많은 걸 배웠다. 이제 시간 나면 기존에서 더 확장해서, 매 일요일 정오에는 '금주 최고 확진자 수는: ~명입니다.' 등등의 코로나 확진자수에 관한 더 많은 정보를 담아볼 생각이다. 프로젝트 끝 😀

profile

Today Sangmin Learned

@steadily-worked

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!