무엇을 난 한
오늘은 특강을 듣지 않고 이번 주 진행하는 미니 프로젝트에 모든 시간을 사용했다. 오전엔 만든 사이트를 라즈베리파이 위에 올려 외부에서 볼 수 있게 하고, 오후부턴 프로젝트 발표 준비를 했는데 - 다음 날 발표 전 시간대에 다른 일정이 있어 미리 해야 했었다 - 발표 개요를 짜고 발표 슬라이드에 들어갈 내용 중 일부를 짜냈다.
아침 일찍 일어나게 된 지 얼마 안 된 - 원래는 밤 늦게 자서 낮 늦게 일어나곤 했었다 - 상황인 것도 있거니와, 내일 모레면 쉰다는 생각이 들어서 그런지 일이 손에 잘 잡히진 않았다. 집중해서 무언가를 한 게 오늘은 많이 덜하다.
사이트 배포(?)
미니 프로젝트로 만든 팀 소개 사이트를 테스트하기 위해 Visual Studio Code의 Live Server를 사용했다. 작업공간을 웹 사이트처럼 접근하여 사용할 수 있게 하는 확장인데, VSCode가 서버를 킨 상태로 켜져 있어야 접근이 가능하단 문제가 있었다. 잠깐 켜고 마는 거면 몰라도 한동안 사용하려면 이 방식이 아닌 다른 걸 찾아봐야 했다.
최근에 사 둔 라즈베리파이가 있는데, 외부에서가령 내 데스크탑이라던가 NAS/워크스테이션을 가동시킬 수 있게 별 일이 없는 한 상시 켜 두고 있다. 그러니
- 라즈베리파이에 우리 조가 작업한 사이트를 받는다.
- 이 사이트를 웹 브라우저를 통해 볼 수 있게 설정한다.
- 외부에서 이 사이트를 볼 수 있게 설정한다.
-의 과정을 거치면 번거롭게 라이브 서버를 가동하지 않아도 되지 않을까 하는 생각이 들었다. 이를 위해, 다음과 같은 과정을 거쳐 배포를 시도했다:
- Docker를 설치한다. 갖고 있는 라즈베리파이 5에
Docker를 설치하기 위해선 여기 나온 방식으로 설치를 진행해줘야 했다. - Docker hub에 있는 httpd(apache) 이미지를 가져온다.
- 우리 조가 만든 페이지들의
repository를 받는다. - 과정 1에서 받은
httpd이미지 기반 컨테이너를 만든다. 이 때, 호스트와 컨테이너 간에 포트 포워딩 설정을 해 주고, 컨테이너 속apache의htdocs경로에 과정 2에서 받은repository의 경로를 묶어준다(과정 1에 있는httpd링크 아래의 ‘Without aDockerfile’ 참고). - 과정 3에서 라즈베리파이 쪽에 지정한 포트를 공유기를 통해 외부에서 접근할 수 있게 포트포워딩 설정을 한다.
- 공유기에서
DDNS (Dynamic DNS)설정을 통해 도메인을 만들어 준다(IP를 통해 접근할 수도 있지만 노출 제한을 위해서 만들어줘야 했다).
이 과정을 통해 사이트를 올려 DDNS 주소를 통해 접근할 수 있었다.
나중에 하게 될 수 있는 일
사이트를 올린 건 좋은 일인데, 나중에 이 사이트가 업데이트 된다면? 현재는 서버에 직접 접근해서 수동으로 업데이트해주고 있지만 이걸 자동화할 수 있는 방법을 생각해야 했다. 그래서 생각 중인 건 이걸 cron을 통해 일정 시간마다 업데이트를 시켜주는 것인데, jenkins를 통해 배포를 자동화하는 걸 시도해보고 싶다. 근데 아직은 제대로 알아본 게 아니라 해보는 게 겁이 난다…