무엇을 난 한

오늘은 특강을 듣지 않고 이번 주 진행하는 미니 프로젝트에 모든 시간을 사용했다. 오전엔 만든 사이트를 라즈베리파이 위에 올려 외부에서 볼 수 있게 하고, 오후부턴 프로젝트 발표 준비를 했는데 - 다음 날 발표 전 시간대에 다른 일정이 있어 미리 해야 했었다 - 발표 개요를 짜고 발표 슬라이드에 들어갈 내용 중 일부를 짜냈다.

아침 일찍 일어나게 된 지 얼마 안 된 - 원래는 밤 늦게 자서 낮 늦게 일어나곤 했었다 - 상황인 것도 있거니와, 내일 모레면 쉰다는 생각이 들어서 그런지 일이 손에 잘 잡히진 않았다. 집중해서 무언가를 한 게 오늘은 많이 덜하다.

사이트 배포(?)

미니 프로젝트로 만든 팀 소개 사이트를 테스트하기 위해 Visual Studio CodeLive Server를 사용했다. 작업공간을 웹 사이트처럼 접근하여 사용할 수 있게 하는 확장인데, VSCode가 서버를 킨 상태로 켜져 있어야 접근이 가능하단 문제가 있었다. 잠깐 켜고 마는 거면 몰라도 한동안 사용하려면 이 방식이 아닌 다른 걸 찾아봐야 했다.

최근에 사 둔 라즈베리파이가 있는데, 외부에서가령 내 데스크탑이라던가 NAS/워크스테이션을 가동시킬 수 있게 별 일이 없는 한 상시 켜 두고 있다. 그러니

  1. 라즈베리파이에 우리 조가 작업한 사이트를 받는다.
  2. 이 사이트를 웹 브라우저를 통해 볼 수 있게 설정한다.
  3. 외부에서 이 사이트를 볼 수 있게 설정한다.

-의 과정을 거치면 번거롭게 라이브 서버를 가동하지 않아도 되지 않을까 하는 생각이 들었다. 이를 위해, 다음과 같은 과정을 거쳐 배포를 시도했다:

  1. Docker를 설치한다. 갖고 있는 라즈베리파이 5에 Docker를 설치하기 위해선 여기 나온 방식으로 설치를 진행해줘야 했다.
  2. Docker hub에 있는 httpd(apache) 이미지를 가져온다.
  3. 우리 조가 만든 페이지들의 repository를 받는다.
  4. 과정 1에서 받은 httpd 이미지 기반 컨테이너를 만든다. 이 때, 호스트와 컨테이너 간에 포트 포워딩 설정을 해 주고, 컨테이너 속 apachehtdocs 경로에 과정 2에서 받은 repository의 경로를 묶어준다(과정 1에 있는 httpd 링크 아래의 ‘Without a Dockerfile’ 참고).
  5. 과정 3에서 라즈베리파이 쪽에 지정한 포트를 공유기를 통해 외부에서 접근할 수 있게 포트포워딩 설정을 한다.
  6. 공유기에서 DDNS (Dynamic DNS) 설정을 통해 도메인을 만들어 준다(IP를 통해 접근할 수도 있지만 노출 제한을 위해서 만들어줘야 했다).

이 과정을 통해 사이트를 올려 DDNS 주소를 통해 접근할 수 있었다.

나중에 하게 될 수 있는 일

사이트를 올린 건 좋은 일인데, 나중에 이 사이트가 업데이트 된다면? 현재는 서버에 직접 접근해서 수동으로 업데이트해주고 있지만 이걸 자동화할 수 있는 방법을 생각해야 했다. 그래서 생각 중인 건 이걸 cron을 통해 일정 시간마다 업데이트를 시켜주는 것인데, jenkins를 통해 배포를 자동화하는 걸 시도해보고 싶다. 근데 아직은 제대로 알아본 게 아니라 해보는 게 겁이 난다…