AWS EC2에서 포트 80 번에 배포하고 싶었습니다.
소개
Node.js에서 생성한 애플리케이션을 AWS EC2에 배포했습니다.
포트 3000번에서는 배포할 수 있었지만, 80번으로 배포할 수 없고 여러가지 조사했으므로,
조사한 내용과 해결 방법에 대해 설명합니다.
실행 환경
하고 싶었던 일
URL의 포트 번호 표기를 생략하고, 짧은 URL로 하고 싶었다.
http://hogehoge:3000/
→ http://hogehoge
htps //w w. 오, ぇ. 코m:443/ 에 접속했을 때,
자동으로 htps //w w. 오, ぇ. 코m/ 으로 리디렉션된다는 것을 알고 있었으므로 *1
이 응용 프로그램에서 3000 대신 80 번 포트에서 배포하면,
http:[パブリックIPv4アドレス]:3000/
→ http:[パブリックIPv4アドレス]
와 같이 포트 번호의 표기가 생략되어 URL을 짧게 할 수 있다고 생각했습니다.
*1
호스트명의 뒤에는, 포트 번호가 계속되게 되어 있습니다만, 대부분 생략됩니다. 생략하면 스키마 프로토콜의 웰 노운 포트가됩니다. HTTP라면 TCP 포트 번호 80번에 액세스합니다. 포트 번호를 지정하려면 ":"뒤에 포트 번호를 지정합니다.
URL ~웹사이트(웹 페이지)의 주소~
인용에 대한 보충: 443번도 HTTPS로서 HTTP처럼 행동합니다.
어려움 & 오류 문
아래 이미지와 같은 인바운드 규칙에서 Node.js에서 만든 응용 프로그램
포트 번호 3000에서 node app.js
그러면 아래 URL로 웹에 게시할 수 있었습니다.
http:[パブリックIPv4アドレス]:3000/
한편, 소스 코드로 지정한 포트 번호를 3000에서 80번으로 바꾸면,node app.js
를 실행할 때 다음 오류 문이 반환되었습니다.
Error: listen EACCES: permission denied 0.0.0.0:80
해결 방법
아래를 참조하여 관리자 권한으로 실행해 보았지만 내 경우에는 다른 오류가 발생했습니다.
$ sudo node app.js
sudo: node: command not found
서버를 시작할 때 작은 포트 번호를 지정하면 이 오류가 발생합니다.
일반적으로는 관리자 권한이 없는 경우에는 1024번 이하의 포트 번호로 서버를 청취할 수 없다는 것입니다.sudo node app.js
그리고 관리자 권한으로 실행하도록합시다.
"listen EACCES 0.0.0.0:443" 오류가 발생하면
이 오류는 또 다른 기사를 참조하여 해결했습니다.
아래에서 인용한 기사내에서는, 대략으로 나누어 3개의 해결책이 제시되고 있었습니다만,
나는 그 안에서 which 명령을 사용하여 문제를 해결했다.
$ sudo `which node` app.js
which는 지정한 커멘드의 패스를 표시하는 커멘드로, Linux에서는 $()로 둘러싸면 그 커멘드의 출력 결과를 커멘드로서 사용할 수 있다고 하는 기능이 있는 것 같다.
sudo node에서 command not found가 표시되는 건
sudo를 붙이지 않고 node를 실행할 때 제대로 실행되는데 왜 이래··?
라고 생각해 조사해 보면, 아무래도 원인은 「sudo 첨부로 커멘드 실행하면 환경 변수인 PATH가 슈퍼 유저의 것으로 바뀌기 때문」이었다.
sudo node에서 command not found가 표시되는 건
참고
아래 이미지와 같은 인바운드 규칙에서 Node.js에서 만든 응용 프로그램
포트 번호 3000에서
node app.js
그러면 아래 URL로 웹에 게시할 수 있었습니다.http:[パブリックIPv4アドレス]:3000/
한편, 소스 코드로 지정한 포트 번호를 3000에서 80번으로 바꾸면,
node app.js
를 실행할 때 다음 오류 문이 반환되었습니다.Error: listen EACCES: permission denied 0.0.0.0:80
해결 방법
아래를 참조하여 관리자 권한으로 실행해 보았지만 내 경우에는 다른 오류가 발생했습니다.
$ sudo node app.js
sudo: node: command not found
서버를 시작할 때 작은 포트 번호를 지정하면 이 오류가 발생합니다.
일반적으로는 관리자 권한이 없는 경우에는 1024번 이하의 포트 번호로 서버를 청취할 수 없다는 것입니다.sudo node app.js
그리고 관리자 권한으로 실행하도록합시다.
"listen EACCES 0.0.0.0:443" 오류가 발생하면
이 오류는 또 다른 기사를 참조하여 해결했습니다.
아래에서 인용한 기사내에서는, 대략으로 나누어 3개의 해결책이 제시되고 있었습니다만,
나는 그 안에서 which 명령을 사용하여 문제를 해결했다.
$ sudo `which node` app.js
which는 지정한 커멘드의 패스를 표시하는 커멘드로, Linux에서는 $()로 둘러싸면 그 커멘드의 출력 결과를 커멘드로서 사용할 수 있다고 하는 기능이 있는 것 같다.
sudo node에서 command not found가 표시되는 건
sudo를 붙이지 않고 node를 실행할 때 제대로 실행되는데 왜 이래··?
라고 생각해 조사해 보면, 아무래도 원인은 「sudo 첨부로 커멘드 실행하면 환경 변수인 PATH가 슈퍼 유저의 것으로 바뀌기 때문」이었다.
sudo node에서 command not found가 표시되는 건
참고
$ sudo node app.js
sudo: node: command not found
$ sudo `which node` app.js
Reference
이 문제에 관하여(AWS EC2에서 포트 80 번에 배포하고 싶었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cordy/items/21b950d981c2aed3e246텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)