보통 ssh를 사용하는 EC2에 접속 방법은 2가지가 있다
(ssh config방법 매우 강추)
1) sudo ssh –i ‘{myPemKeyName}.pem’ ubuntu@{EIP}
1. pem키가 있는 곳으로 이동
cd ~/Desktop
(바탕화면에 있다면!)
2. ssh -i 로 지정하여 접속
ssh -i "only-posting.pem" ubuntu@ec2-54-180-204-86.ap-northeast-2.compute.amazonaws.com
2) ssh config설정으로 간편하게 접속 (추천!)
1. pem키를
~/.ssh
로 이동
2. pem키를 사용하기 위해 권한 변경
chmod 400 only-posting.pem
3.
~/.ssh/config
생성 (vi
혹은gedit
)Host posting Hostname 54.180.204.86 User ubuntu IdentityFile ~/.ssh/only-posting.pem
- Host 는 자신이
ssh {원하는 이름}
으로 입력할 이름을 의미- Hostname주소는 본인의 EC2 클릭 후 퍼블릭 IPv4주소 확인
4.
ssh posting
으로 접속
: 해당 프로젝트가 github의 repository에 올라가 있다는 가정에서 시작
1) EC2 접속
2) node / npm / pm2 설치
3) origin repositorygit clone
4)/config
옮기기 (scp명령어)
5)npm install
로 모듈 설치
6) pm2로 시작
7)pm2 list
로 확인 /pm2 log
로 오류 찾기
[ pm2 ]
: Process Manager의 약자로 프로세스를 실행하고 관리하기 위한 것
- 문제 발생하여 Server가 다운되었을 때 --> 자동 재시작
- Node.js는 싱글 스레드 기반이지만, 멀티 코어를 사용하고 싶다 --> 클러스터 모드로 실행
- 그 외 전반적인 관리에 매우 용이!
[ pm2 사용법 ]
pm2 start ./bin/www --name [원하는 이름]
: 프로젝트 시작
(-i 0
옵션 주면 클러스터 모드로 실행하며 / cpu개수에 맞춰 실행하게 함)
pm2 list
: 현재 실행중인 list 확인
pm2 restart [name || id]
: 프로세스 재시작
pm2 stop [name || id]
: 프로세스 중지
pm2 delete [name || id]
: 프로세스 삭제
pm2 log [name || service number]
: 로그 확인
pm2 startup
: 문제 발생시 재시작
[ scp ]
: ssh원격 접속 프로토콜을 기반으로 한 SecureCopy의 약어로
원격지에 있는 파일과 디렉터리를 전송하기 위한 파일 전송 프로토콜
[ 로컬 -> 원격지 ]
구문 :
scp [옵션] [보낼 파일명] [원격지id]@[원격지ip]:[받는위치]
- 파일 전송
sudo scp -i "only-posting" /User/jungwook/Desktop/Master/temp.txt ubuntu@ec2-54-180-204-86.ap-northeast-2.compute.amazonaws.com:/home/ubuntu
: Master/temp.txt 파일을 원격지 /home/ubuntu로 이동
( EC2 원격지에 보내기 위해 pem키를 -i 옵셥으로 지정 )
- 디렉터리 전송
sudo scp -i "only-posting" -r /User/jungwook/Desktop/Master ubuntu@ec2-54-180-204-86.ap-northeast-2.compute.amazonaws.com:/home/ubuntu
: Master라는 디렉토리를 /home/ubuntu로 이동
( 디렉토리 하위 내용까지 포함하기 위해 -r옵션 사용 )
[ 원격지 -> 로컬 ]
구문 :
scp [옵션] [원격지id]@[원격지ip]:[보낼 파일명] [받는 로컬 위치]
- 파일 전송
sudo scp -i "only-posting" ubuntu@ec2-54-180-204-86.ap-northeast-2.compute.amazonaws.com:/home/ubuntu/rds.png ~/Desktop
- 복수의 파일 전송
sudo scp -i "only-posting" ubuntu@ec2-54-180-204-86.ap-northeast-2.compute.amazonaws.com:"/home/ubuntu/rds.png /home/ubuntu/ec2.png" ~/Desktop
: 원격지 ubuntu밑에 있는 rds.png와 ec2.png를 로컬의 Desktop으로 이동
( 복수의 파일의 경로를 "" 큰따옴표로 묶어야 한다 )
1) EC2 접속
- ssh config 설정 했다면
ssh [HostName]
- 안했다면,
sudo ssh –i ‘{myPemKeyName}.pem’ ubuntu@{EIP}
2) node / npm / pm2 설치
sudo apt-get update
: apt-get을 최신화!sudo apt-get install nodejs
: node 설치sudo apt-get install npm
: npm 설치 !sudo npm install pm2 -g
: 글로벌 옵션으로 pm2 설치
3) origin repository
git clone
git clone [git repository 주소]
4)
/config
옮기기 (scp명령어)sudo scp -i "only-posting" -r ~/Desktop/config ubuntu@ec2-54-180-204-86.ap-northeast-2.compute.amazonaws.com:/home/ubuntu/project
: 이런 방식으로 config 디렉토리를 원격지에 clone받은 내 프로젝트에 넣어준다
(주의할 것은 ! 가끔 scp로 옮길 때 대/소문자가 바뀌는 경우가 있어서 프로젝트 시작 시
오류가 뜬 경우가 있었다 (경험) 삽질하지 말고 대/소문자 확인해보세요 제발!)
5)
npm install
로 모듈 설치
npm install
: package.json 안에 dependencies에 있는 모든 모듈을 자동 설치!
(만약 프로젝트 시작 시 Module Not Found이면 수동으로 하나씩 설치 해줘야 함!)
6) pm2로 시작
pm2 start ./bin/www --name [원하는 이름] -i 0
: 위 명령을 클러스터 모드로 실행한 것
7) pm2 list로 확인 / pm2 log로 오류 찾기
pm2 list
: 정상적으로 실행되었는지 확인
pm2 log
: error이라면 로그로 오류 확인하여 수정!