아이패드에서 로컬 웹 서버 돌리기

고쳐짐 2023-09-27: 시간이 흐르고 흘러 World Wide Web이라는 쉽고 간편한 앱이 나왔습니다. 그냥 그거 씁니다.

아이패드와 맥북사이의 간극을 줄여봅시다. 이번에는 아이패드에서 localhost 웹서버를 돌려보겠습니다.

이제 아이패드에도 Files 앱의 open-in-place 기능을 활용한 코드편집기들이 제법 있습니다. 예를 들어, Kodex 를 이용하면 Files 에 들어있는 텍스트 파일을 복사본 없이 직접 수정할 수 있습니다.

파일과 폴더로 만들어진 웹 페이지를 웹 브라우저에서 미리보기 하고 싶을 때, 맥이라면 터미널을 실행하고 python3 -m http.server 를 돌린 다음 브라우저로 localhost:8000 을 열면 됩니다. 그런데 아이패드에서는?

이런 간편한 웹서버를 아이패드에서도 사용하고 싶은데, 어쩐지 쉬운 방법을 찾을 수가 없어서, 거의 에잇 내가 앱을 하나 만들자 단계의 직전까지 갔다가 다행스럽게도 iSH 를 이용한 해결책을 발견할 수 있었습니다.

우선 iSH 를 설치하고 (안타깝게도 앱스토어 배포가 힘들어서 TestFlight 를 이용해야 합니다),

apk add python3

python3 를 더해줍시다.

mount -t ios . ./www
  • mount -t ios : iSH 에서 UIDocumentPickerViewController 를 이용하여 Files 에 있는 폴더를 선택할 수 있습니다.
  • . : 이 인자는 무엇을 넣어도 무시됩니다.
  • ./www : 도큐먼트 픽커에서 선택한 폴더가 www 에 마운트 됩니다.

이제 www 폴더로 이동하여 python3 -m http.server 를 돌리면 일단 iSH 가 foreground 에 있을 때는 로컬 웹 서버가 작동합니다. 그러나 iSH 가 백그라운드로 들어가면 금방 멈춥니다.

iSH 는 백그라운드에서도 계속 실행되기 위한 방법으로 위치정보 요청하기를 사용합니다.

cat /dev/location > /dev/null &

이것을 python3 를 굴리기 전에 돌려줍니다.

그저 무기한으로 백그라운드에서 동작하기 위해서 무려 위치정보를 요청해야 한다는 사실이 마음 아프지만 (내 배터리…), 이 정도가 TestFlight 로 배포하는 iOS 앱이 할 수 있는 최선이겠죠.

python3 를 종료하고 용건이 끝나면 www 를 언마운트합니다.

umount ./www

이것으로 아이패드 사파리에서 localhost:8000 을 미리보기 할 수 있습니다.