[AWS] EC2 nvm 설치 후 'sudo: node: command not found' 해결 방법

xgro·2022년 5월 19일
3

AWS

목록 보기
2/19
post-thumbnail
post-custom-banner
  • 나는 언제든지 동일한 실수를 반복할 수 있다.
  • 나는 기록을 바탕으로 두번째 실수를 보다 빠르고 효율적으로 극복할 것이다.
  • 나의 기록이 다른이에게도 도움을 줄 수 있도록 작성한다.

👉 문제 인식

  • EC2 우분투에서 express 웹서버를 구동 목적
  • 1024번 하위 포트 사용시 permission denied 발생
  • sudo node app.js 커맨드를 사용할 수 없는 문제 해결

❎ 개발 환경

  • 운영 체제: Ubuntu v22.04 LTS
  • 노드 버전(node -v): v16.15.0 LTS

👉 해결 과정

  • brew install node 으로 해결할 수 있으나 이경우에는 nvm과 별개의 nodejs가 설치되어 버전 관리자를 통한 node 사용 목적에 부합하지 않음.

  • 이를 해결하기 위해서 sudo의 동작 원리에 대해서 검색 하고, sudo에 nvm에서 설치한 npm을 등록 시켜 줄 수 있는 방법에 대해서 검색하였습니다.

  • visudo에서 경로를 추가하는 방법도 있었습니다. 하지만 최대한 visudo 파일을 건드리지 않는 선에서 sudo 기본 기능만을 이용하여 해결하고자 했습니다.

📌 참조 레퍼런스

https://stackoverflow.com/questions/4976658/on-ec2-sudo-node-command-not-found-but-node-without-sudo-is-ok


👉 문제 해결

  1. 설치한 node의 위치를 찾는다. (버전과 함께)

    $ which node 

  1. 아래 명령어를 입력하여, usr/bin/ 경로에 node을 링크 시켜준다.
    • sudo ln -s $(which node) /usr/bin/node
      sudo ln -s $(which node) /usr/bin/node
  1. sudo node app.js를 이용하여 명령어를 사용할 수 있는지 확인한다.

📌 추가

npm 역시 sudo 커맨드와 사용할 수 없는 상태이지만, npm은 sudo로 사용하지 않는것을 적극 권장한다.
설치시 문제에 대한 로그를 확인 할 수 있을 뿐만 아니라 sudo 커맨드를 사용한다 해도 스크립트는 sudo 권한으로 실행되지 않기 때문이다.

profile
안녕하세요! DevOps 엔지니어 이재찬입니다. 블로그에 대한 피드백은 언제나 환영합니다! 기술, 개발, 운영에 관한 다양한 주제로 함께 나누며, 더 나은 협업과 효율적인 개발 환경을 만드는 과정에 대해 인사이트를 나누고 싶습니다. 함께 여행하는 기분으로, 즐겁게 읽어주시면 감사하겠습니다! 🚀
post-custom-banner

0개의 댓글