포트폴리오용 웹서버, HTTP서버 만들기 vol.2

사실 이 글을 적는 시점은 아직 시도해보지 않은게 2개가 있는 시점이다.

동기분이 cpu명령어가 달라서 오류가 났을거라고 했다.

하지만 오기가생겨서 Web은 Github pages, Server는 데탑으로, 1번.

동작하면, 사양문제일거라는 상상력으로 실패하더라도 다른 플래그쉽 폰으로 Dex북쓰듯이 쓸 수 있도록 2번

만약 두가지 다 실패면 Github pages가 문제일수도 있으니 기대된다.


1. 진행과정

1.1. Termux

  1. TermuxAndroid에서 nodejs돌리기Kasterra’s Archive: 안드로이드에서 nodeJS…
  2. ubuntu와 저장소가 달라 안될거같았지만, nodejs가 정상적으로 설치가 되었고, 간단한 서버를 돌릴 수 있었다.RoyalTurtle: 루팅없이 안드로이드폰을 node.js…
  3. 포트포워딩을 하는것도 2번의 RoyalTurtle님의 글에 잘나와 있으니, 공유기 주소(iptime기준 192.168.0.1)로 접속하여 내부ip(핸드폰ip), 외부포트(80: http, 443: https), 내부포트(서버을 연포트 ex: 3000, 4000, 5000...)를 통하여 외부에서 ip를 통하여 접속할 수 있게 포트포워딩을 구성했다.
  4. DDNS(Dynamic Domain Name System)을 통해서 우리는 동적IP를 고정된 host주소로 변경할 수 있다. 공유기 제조사에서 제공도 하고, 무료로 제공하는 사이트도 여럿있다. 마음에 드는 사이트를 찾아 http://hostname:80 으로 접속할 수 있게 구성했다.duckdns.org
  5. 클라이언트서버부분을 변경한다.
    1. 클라이언트: react이므로 Github pages는 정적인 파일만 컴파일이 가능하다(JSX가뭐야???), build하여 다른 저장소에 저장하고 Github pagesdeploy한다.에브리원: 깃허브로 나만의 웹사이트 만들기, Hohyeon Moon: ReactJS를 Github Pages에 호스팅하기
    2. 서버: build하는 법을 몰라 서버에 React프로젝트를 하드카피하여 npm install을 하다 CRASH.. -> android의 파일주소 접근 권한문제stack over flow: q, stack over flow: q2를 우회하는법. 관련 내용을 vpn을 사용하여 우회하는법도 있었는데 다시 찾으려니 못찾겠다(사용하고 싶지 않았다.)
  6. 루팅을하자. 해당폴더로 기본폴더를 변경하여 sudo 권한을 얻기위해 루팅이 필요하다. 루팅은 과거에도 몇번해봤었기에 시도하다 실수(펌웨어를 올릴 시 Knox에서 일주일간 부트로더 해제를 잠궈버린다.)한 덕에 다른 방법을 찾게된다.

1.2. Ubuntu Touch & UBport

Ubuntu를 스마트폰에 올릴 수 있는 방법을 찾다가, 포팅이란 개념을 알게 되었고, OSWindows10을 올릴 수 있으나 Driver문제로 인터넷을 못하게 될 경우 서버폰으로서의 의미가 없고, 포팅 역시 잠깐 시간을 들여서 시도하기에는 전문지식이 필요다. 그래서 찾게된 것이 Ubuntu Touch 프로젝트. 하지만 이것역시 개발 중단이 되었고, Ubuntu Touch를 이어서 UBport 커뮤니티가 개발을 하다 2017년에 중단되었다고 한다. 그래도 UBport instroller를 이용 시 지원되는 기기들의 경우에는 원터치(지원되는 기기가 아니면 설치자체가 안되서 못해봄)로 설치가 가능하다.

하지만 해당기기는 내가 가진기기가 이니었고, 지원기기가 아니면 아애 설치를 못하는것으로 보아, 각 cpu를 지원해주는 개발이 선행되어야 하는거 같아 다른 방법으로 시도해 보았다.

1.3. Andronix

Tor noroot라는 멜웨어(구글 프로텍트, 윈도우 디펜더 기준)로 뜨는 프로그램을 찾아 위험을 무릎쓰고 실행해 보았으나, 지원기기가 아니면 루팅이 불가한 이슈가 있다는걸 확인하였다.(안된다 내건 ㅜㅜ)

하여 더 찾아본 결과 Tor이외에도 관련하여 슈퍼루팅이 꼭 과거 TPRM, odin을 통한 루팅 시 권한을 줄 수 있게 바꾸는 방식이 아니라, 단순하게 클릭한번으로 루팅을 할 수 있는 앱들이 개발이된걸 알게되었고(갤럭시s2를 루팅하면서 커널질을 했었다.), 그것들 역시 완벽하진 못하고, 반루팅개념이라 풀린다는 것을 보고 안정성(이미 무선통신이라 불안정하지만)이 중요한 서버가 사용하기에는 적합하지 않다고 생각하고 다른 프로그램을 찾아보던 중, 꽤나 평이 좋았고 리뷰어의 말에는 windows10도 쉽게 올렸다는 것을 보고 Andronix과금을 하게된다. Ubuntu도 있고, moded(최적화)된 버전도 한번 구매하면 Andronix를 배포한 회사가 없어지기 전까지 무한으로 사용할 수 있는 어플을 설치하고 설치를 진행하던 중, 중간에 에러를 3번 내더니 하루 이용한도 초과라고하며 관리자에게 문의하거나, 내일(당시 새벽 1시) 다시 시도라하라는것을 보고 문서를 읽어가면서 다시 환경설정을 해야되고, 과금을 했음에도 불구하고 내시간을 배로 투자하는건 말이 안된다고 생각하여 또 다른 방법을 찾게된다.

1.4. Debian noroot

stack over flow를 뒤지던 중 알게된 debian noroot의 경우는 쉽게 설치가능하고, 원하는것을 동작하게 된다는 것을 알게되어 debian noroot를 설치했다.

아.. 정말로 설치하니까 GUI환경(필요없다 GUI)의 Debian이 설치가 되었다. 해당 Debian을 통해 다시 시도한다고 git, nodejs를 설치 후 환경설정하고, 시도했으나 debian noroot의 경우 이동용기기 화면에 데스크톱화면이 들어가버려, 해당 세팅을 하는데도 시간을 많이 날렸고, 할당되는 램의 크기가 1G밖에 되지않아, 메모리로 나가버리는 경우가 있다는 이슈를 확인하여 Debian이 설치된다는 것은 다른 OS역시 설치된다는 것으로 이해하고, 방법을 더 찾기로 한다.

1.5. Termux addon Anlinux

처음 Termux로 사용할때는 유사애뮬이라는 것을 모르고, addon들도 사용안하고(뭐많이 설치되는걸 안좋아함) 진행했고, Anlinux도 설치는 하고 ubuntu가 있는걸 보고 들어는 가봤으나, 어플에서 제시하는 message를 읽지않고, 사용법도 몰라 그냥 넘어가버렸던 것이 화근이었다. Anlinux를 이용해서 단순하게 Termux에 복사된 명령어만 입력하게되면 쉽게 Ubuntu가상머신(가상머신 아닐지도모름 그렇다고 명시된것은 아직 못봤음.)을 설치한다. 그 메세지만 똑바로 읽고 실행했으면 위 시행착오를 겪지 않아도 될것을 결국 겪어 버렸다.

2. 반의 성공

안드로이드Termux를 이용한 간단한 Ubuntu 설치와, 정상적인 npm install, 정상적인 서버실행에 성공하였다. 사실 이과정을 진행하면서 굉장히 시간을 날렸기에, 그 시간이 아까워 서버를 돌리기 전 자동으로 서버를 재실행해주는 library를 설치하여 나중에 혹시모를 서버 이슈를 해결하고 싶었지만, 거의 몇일동안 잠도 2~4시간 자가면서 시행착오를 겪은 덕에 먼저 실행을 해 보고 이슈가 발생했을 때 대응하기로했다. 서버가 정상적으로 실행되었고 오류가 발생했다. Gitub Pageshttps였던것이다. 관련이슈는 검색하여, httpshttp통신에 필요한 규약을 headmeta로 추가하고, 다시 시도.. 이번엔 Promise.fetch에서 문제가 발생하였다. 처음에는 관련사항을 검색해 보았지만 검색에는 나오지 않는 것을 미루어보아, 클라이언트서버간의 주소값을 수정하며 생긴 오류인가 로그디버깅을 했다. 애초에 서버측에서는 받아서 200 성공이라고 떳지만, 클라이언트측에서는 똑같이 Promise.fetch에서 오류가 생기는 것을 확인할 수 있었다. 이방법 저방법 여러가지 시도해보던 중에 서버를 다시 닫기 위해서 끄려고하니, 터미널이 뻗었다.

재차 재실행 후 테스트해보았으나, 역시 터미널(Ubuntu 가상머신)이 뻗었다.

새벽4시. 물러나자

이후 동기선생님들께 질문 후 cpu명령어가 달라 발생한 문제라는 의견과, 전공자 동생에게 애초에 정상적이지 않은 방법을 통해 서버를 구동하려는데 뭐가 문제일지는 예측하기 힘들다, 개발을 10년전 접고 지금은 커피를 말아주는 c언어 고수친구가 그러지말고 그냥 정상적으로 워크스테이션을 만들(돈없어 임마)어라고 핀잔을 듣기도 했다.

3. 남은 경우의 동작확인

  • Clinet -> C
  • Server -> S
num C S 성공 실패
1 Github pages 데스크탑 성능 혹은 명령어 문제 C 혹은 외부적 요인
2 Github pages S10 5G 성능 문제 C 혹은 외부적 요인
3 데스크탑 S10 5G Github pages 문제 알수없는 요인

상위 케이스는 해봐야 미련이 없을거같아, 무식하면 용감하고, 무지하면 손발이 고생한다고 했다. 해보자 물론 그건 다다아으으응으ㅡㅁ에 ㅜㅜ

이전으로 //아직 진행중

//Termux를 이용한 Ubuntu 설치


참조

상단 링크로 궁금한거 찾아보세요