프론트서버 배포 후 EADDRINUSE에러 발생
안녕하세요 제로초님
덕분에 front배포 잘 하게 되었습니다.
그후 접속해서 테스트했는데, 회원가입할 때 connect_refused가 발생해 로그를 찾아보았습니다.
EADDRINUSE를 발견하고 원인을 찾으려고 뒤져봤는데 해결되지 않아 여쭤봅니다. ㅠ
front = 13.125.119.94
back = 13.125.252.5
아래는 설정한 내용
/front/package.json
"scripts": {
"dev": "next dev",
"build": "cross-env ANALYZE=true NODE_ENV=production next build",
"start": "cross-env NODE_ENV=production next start -p 80",
},
/back/packge.json
"scripts": {
"dev": "nodemon app",
"start": "cross-env NODE_ENV=production pm2 start app.js"
},
/back/app.js
// node에서는 import / export 안쓰고 require / module.exports 사용
const express = require('express');
const cors = require('cors');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const passport = require('passport');
const dotenv = require('dotenv');
const morgan = require('morgan');
const path = require('path');
const hpp = require('hpp');
const helmet = require('helmet');
const postRouter = require('./routes/post');
const postsRouter = require('./routes/posts');
const userRouter = require('./routes/user');
const hashtahRouter = require('./routes/hashtag');
const db = require('./models'); // sequelize에서 model 모두 등록 // express에서 그 sequelize를 등록해야 한다.
const passportConfig = require('./passport');
dotenv.config();
const app = express();
db.sequelize
.sync()
.then(() => {
console.log('db연결 성공!');
})
.catch(console.error);
passportConfig();
// 운영용 빌드
if (process.env.NOD_ENV === 'production') {
app.use(morgan('combined')); // 로그볼 수 있게 해주는 것
// 보안에 도움되는 패키지들
app.use(hpp());
app.use(helmet());
} else {
app.use(morgan('dev')); // 로그볼 수 있게 해주는 것
}
app.use(
cors({
origin: ['http://localhost:3000', 'nodebird.com', 'http://13.125.119.94'],
credentials: true,
})
);
app.use('/', express.static(path.join(__dirname, 'uploads')));
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(
session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
})
);
app.use(passport.initialize());
app.use(passport.session());
app.use('/post', postRouter);
app.use('/posts', postsRouter);
app.use('/user', userRouter);
app.use('/hashtag', hashtahRouter);
app.listen(80, () => {
console.log('서버 실행 중');
});
프론트 실행화면

백엔드 실행 화면
아래는 에러 내용입니다.
/front 에러
AxiosError: connect ECONNREFUSED 13.125.252.5:443
0|npm | at AxiosError.from (file:///home/ubuntu/react-nodebird/prepare/front/node_modules/axios/lib/core/AxiosError.js:89:14)
0|npm | at RedirectableRequest.handleRequestError (file:///home/ubuntu/react-nodebird/prepare/front/node_modules/axios/lib/adapters/http.js:610:25)
0|npm | at RedirectableRequest.emit (node:events:517:28)
0|npm | at eventHandlers.<computed> (/home/ubuntu/react-nodebird/prepare/front/node_modules/follow-redirects/index.js:38:24)
0|npm | at ClientRequest.emit (node:events:517:28)
0|npm | at TLSSocket.socketErrorListener (node:_http_client:501:9)
0|npm | at TLSSocket.emit (node:events:517:28)
0|npm | at emitErrorNT (node:internal/streams/destroy:151:8)
0|npm | at emitErrorCloseNT (node:internal/streams/destroy:116:3)
0|npm | at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
0|npm | at Axios.request (file:///home/ubuntu/react-nodebird/prepare/front/node_modules/axios/lib/core/Axios.js:45:41)
0|npm | at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
0|npm | at async y (/home/ubuntu/react-nodebird/prepare/front/.next/server/chunks/414.js:1:1838) {
0|npm | port: 443,
0|npm | address: '13.125.252.5',
0|npm | syscall: 'connect',
0|npm | code: 'ECONNREFUSED',
0|npm | errno: -111,
0|npm | config: {
0|npm | transitional: {
0|npm | silentJSONParsing: true,
0|npm | forcedJSONParsing: true,
0|npm | clarifyTimeoutError: false
0|npm | },
cause: Error: connect ECONNREFUSED 13.125.252.5:443
0|npm | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16) {
0|npm | errno: -111,
0|npm | code: 'ECONNREFUSED',
0|npm | syscall: 'connect',
0|npm | address: '13.125.252.5',
0|npm | port: 443
0|npm | }
back 에러
| Warning: connect.session() MemoryStore is not
0|app | designed for a production environment, as it will leak
0|app | memory, and will not scale past a single process.
0|app | Error: listen EADDRINUSE: address already in use /
0|app | at Server.setupListenHandle [as _listen2] (node:net:1800:21)
0|app | at listenInCluster (node:net:1865:12)
0|app | at Server.listen (node:net:1964:5)
0|app | at Function.listen (/home/ubuntu/react-nodebird/prepare/back/node_modules/express/lib/application.js:635:24)
0|app | at Object.<anonymous> (/home/ubuntu/react-nodebird/prepare/back/app.js:75:5)
0|app | at Module._compile (node:internal/modules/cjs/loader:1364:14)
0|app | at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
0|app | at Module.load (node:internal/modules/cjs/loader:1203:32)
0|app | at Module._load (node:internal/modules/cjs/loader:1019:12)
0|app | at Object.<anonymous> (/home/ubuntu/react-nodebird/prepare/back/node_modules/pm2/lib/ProcessContainerFork.js:33:23) {
0|app | code: 'EADDRINUSE',
0|app | errno: -98,
0|app | syscall: 'listen',
0|app | address: '/',
0|app | port: -1
0|app | }
front monit

back monit

비슷한 질문들이 올라와 있어서 (sudo) npx pm2 kill 해보거나 다른 검색들을 해봤는데 원인을 모르겠더라구요
어떤 부분을 수정해야할지 어떤부분을 확인해봐야할지 봐주시면 정말 감사하겠습니다.
답변 1
1
지금 백엔드 80포트에 뭔가 다른게 돌아가는 것 같은데요. 이미 실행한 백엔드 서버이거나 nginx같은 다른 프로그램같습니다. sudo lsof -i tcp:80 해보세요
0

백엔드 서버를 끄고 확인했을 때,
서버 키고 확인했을 때 입니다.
따로 켜져있는게 없는것으로 보이는데 어떤 부분을 더 확인해야하는지 모르겠어서 난감한 상황입니다.
여유되실 때 조언부탁드립니다.
1
음 지금 백엔드는 정상적으로 다시 켜진걸로 보입니다. sudo pm2 list 해서 재시작 수 계속 올라가는 게 아니면 정상입니다. 다시 에러메시지 확인해보세요.
0

다시 켜본 결과 동일한 에러가 발생하고 있습니다.
다른 질문에서 connect.session은 무시하셔도 괜찮다고 하셔서
error부분만 해결하면 될거같았는데,
어느 부분 때문인지 막막합니다.
백단 쪽만 처음부터 해보는게 좋을까요?
Error: listen EADDRINUSE: address already in use 특정포트라고 하면
특정포트를 찾아서 끄고 하면 될거같은데
Error: listen EADDRINUSE: address already in use / 이렇게 되어있기도하고
다른 포트 사용하는것도 안보여서 선생님의 의견이 궁금했습니다.
0
답변 감사합니다 선생님
그래서 이번에 바뀐 ip로 새로 시도해보니까
말씀하신대로 전의 에러는 사라지고 다른 에러가 나왔습니다.
그걸해결하고 말씀해주신대로 sudo npx pm2 list 각각 잘나오는거 확인하고
회원가입 테스트를 다시 해봤는데

동일한 connection_refused에러가 나왔습니다.
추가로 이상한점은 front에서는 monit에서
로그가 잘 보이는데
리스트에도 잘 나오고
back에서는
하나도 안보입니다.
로그 확인해보면 정상적으로 연결된거같은데
뭐땜에 connection_refused가 발생하는지 감이 안잡히니
어디를 더 확인해봐야할지 조언해주시면 정말 감사하겠습니다.
0
와우 선생님 정말 감사합니다.
조언해주신대로 확인해보니 정상적으로 작동합니다!
이 파트만 몇일째 못넘어가서 슬슬 포기하고 넥스트 강의 들어야지 했는데,
이제 남은 파트 진행 가능하게 되었습니다.
감사합니다.
넥스트 버젼 질문
0
75
2
로그인시 401 Unauthorized 오류가 뜹니다
0
88
1
무한 스크롤 중 스크롤 튐 현상
0
172
1
특정 페이지 접근을 막고 싶을 때
0
103
2
createGlobalStyle의 위치와 영향범위
0
95
2
인라인 스타일 리렌더링 관련
0
90
2
vsc 에서 npm init 설치시 오류
0
146
2
nextjs 15버전 사용 가능할까요?
0
158
1
화면 새로고침 문의
0
120
1
RTK에서 draft, state 차이가 있나요?
0
152
2
Next 14 사용해도 될까요?
0
452
1
next, node 버전 / 폴더 구조 질문 드립니다.
0
348
1
url 오류 질문있습니다
0
211
1
ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out
0
372
1
sudo certbot --nginx 에러
0
1271
2
Minified React error 콘솔에러 (hydrate)
0
469
1
카카오 공유했을 때 이전에 작성했던 글이 나오는 버그
0
246
1
npm run build 에러
0
518
1
front 서버 npm run build 중에 발생한 에러들
0
381
1
서버 실행하고 브라우저로 들어갔을때 404에러
0
336
2
css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.
0
284
1
팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.
0
236
2
해시태그 검색에서 throttle에 관해 질문있습니다.
0
200
1
full reload 될때는 서버 데이터를 호출하는데 그 이후로 새로고침할대는 호출하지 않아서 답답합니다
0
291
2





