인프런 커뮤니티 질문&답변

김수민님의 프로필 이미지

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

배포 npm run start

21.09.26 16:34 작성

·

433

0

ubuntu@ip-111-11-11-104:~/minsu-code/back$ npm start > back@0.0.1 start /home/ubuntu/minsu-code/back > nest start [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [NestFactory] Starting Nest application... [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] TypeOrmModule dependencies initialized +340ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] PassportModule dependencies initialized +0ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] EventsModule dependencies initialized +1ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] AppModule dependencies initialized +1ms [Nest] 22759 - 09/26/2021, 7:30:56 AM LOG [InstanceLoader] ConfigModule dependencies initialized +1ms [Nest] 22759 - 09/26/2021, 7:30:57 AM ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... Error: Unknown database 'minsucode'
 
말 그대로 database 가 없다는 뜻인데.
우분투 말고 로컬 윈도우에서 npm run start 하면 잘 되는데.
배포모드 우분트 환경에서만 npm run start 하면 저런 에러가 나옵니다.
 
mysql안에 db도 만들어 주었고 우분투 환경에서 mysql 설치 해주고.
.env 파일도 만들어서 필요한 것들 다 입력 해줬는데 계속 저런 에러가 나옵니다 ㅠㅠ
 
 
 

답변 3

1

김수민님의 프로필 이미지
김수민
질문자

2021. 09. 26. 17:37

제로초님 nodebird 에 있는 aws 연결 하는 방법 따라하면서 배포 할려고 하는데.

aws 인스턴스 HTTP 80port -> 우분투 환경 .env 파일에 PORT 을 80으로 바꿔준 뒤 

back nest.js 부분에서 npm run start 을 하면 

 

[Nest] 23055  - 09/26/2021, 8:33:16 AM   ERROR [NestApplication] Error: listen EACCES: permission denied 0.0.0.0:80 +5ms

(node:23055) UnhandledPromiseRejectionWarning: Error: listen EACCES: permission denied 0.0.0.0:80

 

80번 port 은 사용 할 수 없다고 나옵니다.

 

어떻게 해결해야 할까요... 

아니면 인스턴스를 새로 만들어서 HTTP port을 3000 으로 다시 만드는 게 좋을까요? 

구글에서 여러 해결방법 찾아서 해봤는데 도저히 안되네요 ㅠㅠ

 

우분투 환경 말고 윈도우 터미널에서 npm run start 하면 정상적으로 잘 작동하는데, 

우분투 환경에서만 그러네요 

김수민님의 프로필 이미지
김수민
질문자

2021. 09. 26. 19:02

아 해결 됐습니다 감사합니다 제로초님

김수민님의 프로필 이미지
김수민
질문자

2021. 09. 26. 19:12

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

80 사용 x 8080 port로 사용하고 8080 -> 80 포트로 리다이렉션해서 해결 했습니다

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 09. 26. 17:00

db 만드실 때 back 폴더에서 npx sequelize db:create( 시퀄라이즈 사용 시) 또는 mysql 프롬프트에서 mysql로 CREATE SCHEMA `minsucode` DEFAULT CHARACTER SET utf8mb4;

하셨나요?

김수민님의 프로필 이미지
김수민
질문자

2021. 09. 26. 17:04

CREATE SCHEMA `minsucode` DEFAULT CHARACTER SET utf8mb4;

typeorm 사용 중이였는 데 성공적으로 됐습니다. 감사합니다.

0

김수민님의 프로필 이미지
김수민
질문자

2021. 09. 26. 20:26

제로초님 배포 준비를 할려고 하는데  front 서버 ec2 -> 우분투에서 build 를 끝마치고 start 하고 싶습니다.

하지만 제가 webpack 을 이제 클론코딩 하면서 사용 해 봐서.

dev 말고 start 할 떄는 어떻게 해야 할까요...

아니면 build 안 dist, index.html 를 aws 정적 웹 페이지에서 만들어 줘야 할 지

NODE_ENV=production webpack-dev-server --progress
 dev-server 설정 후 start 부분에 이런식으로 넣어주면 될까요?
development 에 production을 붙여 주면 될까요?
다른 분들 보면 dist, index.html 부분들을 도메인에 넣어주는 거 같던데 잘 모르겠네요 ㅠㅠ
 
 
start: cross-env TS_NODE_PROJECT=\"tsconfig-for-webpack-config.json\" webpack-dev-server --env production
이런식으로 start 실행하면 윈도우에서는 정상 작동하는데 우분투에서는 안되네요.,.
 
 
제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 09. 26. 23:36

제 깃헙 nest-typeorm 보시면 public 폴더 있습니다. 그것처럼 백엔드 경로에 public 폴더 만들어서 방금 빌드한 프론트 파일들 넣어주시면 됩니다.