일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- web
- 개발
- 드릴
- 영화감상
- 영화
- Node
- 노드
- 프로그래밍
- 자바스크립트
- 엄티로드
- Redux
- 개발자
- 리액트
- 주짓떼로
- 주짓떼라
- 웹개발
- 클로즈가드
- 솔로드릴
- nodejs
- development
- 파이썬
- REACT
- JavaScript
- graphQL
- 주짓수
- 하프가드
- 영화리뷰
- 디자인패턴
- Express
- git
- Today
- Total
As i wish
React + Next + Express + Node js -> aws ec2 를 이용한 배포 - 3 본문
안녕하세요 이번 포스팅에서는 직접 콘솔을 이용하여 서버에 접속해보고 코드까지 받아서 배포해보도록 하겠습니다.
일단 기존 포스팅을 참고하시면 하나 둘 씩 따라오실 수 있을거라고 생각합니다.
React + Next + Express + Node js -> aws ec2 를 이용한 배포 - 1
React + Next + Express + Node js -> aws ec2 를 이용한 배포 - 2
1. aws 콘솔로 들어가서 기존에 만들었던 인스턴스를 선택하고 '연결' 이라는 버튼을 누릅니다.
2. 저는 맥이기 때문에 콘솔에서 ssh 를 이용해서 들어가보겠습니다.
3. 다음과 같이 콘솔에 입력
참고로 permission key에 권한이 denied 되서 안되는 경우가 있는데 이는 이렇게 풀어주면 됩니다.
$ chmod 400 permissionKeyName.pem
4. 접속!!!
그럼 이제 서버에서 node, git 을 설치하여 프로젝트를 받고 프로젝트를 실행시켜주면 끝입니다!
5. root 권한을 가지고 설치를 해야합니다. 따라서 root 권한으로 전환 해야합니다.
$ sudo su
6. 인스턴스에 node js 설치
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
$ . ~/.nvm/nvm.sh
$ nvm install node
잘 설치가 되었는 지 확인해보면 됩니다!
$ node -e "console.log('Running Node.js ' + process.version)"
7. 코드를 받아오기 위해 git 설치를 해야합니다.
$ sudo yum install git
8. git 을 활용하여 나의 코드를 clone 받아옵니다.
$ git clone [url]
전 저의 프로젝트를 받아왔습니다.
9. 프로젝트에 들어가서 npm i 를 통하여 프로젝트의 의존 모듈을 설치해줍니다.
$ cd projectName
10. 그리고 next 로 되어있기 때문에 npm run build 를 통하여 빌드를 해줍니다.
projectName$ npm iprojectName$ npm run build
11. 마지막으로 npm run start 를 통하여 실행시켜주면 끝납니다!
projectName$ npm run start
12. 결과
그리고 자신의 콘솔로 들어가 인스턴스 주소를 입력해보면 자신이 만든 홈페이지가 나오는것을 확인 하 실 수 있습니다.
저 같은 경우는 'http://ec2-15-164-213-208.ap-northeast-2.compute.amazonaws.com/' <-- 이게 되겠죠?
마지막으로 위와 같이 작업을 하게 되면 서버를 껐을 때에 'npm run start' 부분도 꺼지기 때문에 문제가 생깁니다. 하루종일 제 컴퓨터 내에서 콘솔 창을 켜놓을 수는 없기 때문이죠.
따라서 pm2 라는 모듈을 사용하여 node를 돌려줄 수 있습니다.
일단 pm2 를 global 로 설치해줍니다.
$ pm2 start server.js
위와 같이 명령어를 입력하여 server.js 를 실행시켜 줍니다.
그런데 이렇게 되면 문제가 생깁니다. 저희는 producrtion 일때의 포트가 80인데 이렇게 되면 할 수 없기 때문이죠.
그래서 위와 같이 pm2를 사용해서 들어가보면 접속이 되지 않는데 대신 뒤에 포트 3000을 붙이면 들어가지는 것을 확인 해 볼 수 있습니다. production 이 아니라 dev 환경에서 시작 됬다는 것을 인지 할 수 있죠.
그렇기 때문에 pm2 에서 'npm run start' 를 할 수 있도록 해줘야 합니다. 그러기 위해서는 ecosystem 을 이용합면 됩니다.
ecosystem.json
{
"apps": [
{
"name": "kjglass",
"script": "npm",
"args" : "start",
"watch" : true
}
]
}
저는 간단하게 이렇게 만들어 주었습니다.
그리고 서버에서...
$ pm2 start ecosystem.json
이제는 정상적으로 포트 없이도 들어가지는게 보여질 겁니다!!!!
그럼 이제 새로운 코드를 작성하게 되면 git push -> 서버접속 -> sudo su -> git pull -> pm2 start ecosystem.json 이런식의 플로우가 가능해지죠!
그럼 오늘은 끝내겠습니다!!!!
* start를 하려면 build 가 무조건 선행 되어야합니다!
* npm run start 를 하게 되면 이런경우에 에러가 나옵니다
- 이는 루트 권한으로 해주지 않아서 그렇습니다. 5번으로 가서 루트권한으로 위 작업을 다시 해주면 정상 동작합니다.
'React JS' 카테고리의 다른 글
React + Firebase Realtime Database (1) | 2020.01.16 |
---|---|
Styled-component 에 props 로 style 적용 (0) | 2020.01.01 |
React + Next + Express + Node js -> aws ec2 를 이용한 배포 - 2 (1) | 2019.12.20 |
React + Next + Express + Node js -> aws ec2 를 이용한 배포 - 1 (0) | 2019.12.20 |
[React] children 컴포넌트에 props 전달하기 (0) | 2019.12.10 |